{ "host": "demo.accelbyte.io", "info": { "contact": { "email": "engineering@accelbyte.io", "name": "Engineering Team at AccelByte", "url": "https://accelbyte.io" }, "description": "Justice Platform Service", "title": "justice-platform-service", "version": "6.10.0" }, "schemes": [ "https" ], "tags": [ { "name": "Achievement(Platform)" }, { "name": "Anonymization" }, { "name": "Campaign" }, { "name": "CatalogChanges" }, { "name": "Category" }, { "name": "Clawback" }, { "name": "Currency" }, { "name": "DLC" }, { "name": "Entitlement" }, { "name": "Fulfillment" }, { "name": "FulfillmentScript" }, { "name": "IAP" }, { "name": "IAP(Notification)" }, { "name": "IAP(Subscription)" }, { "name": "Invoice" }, { "name": "Item" }, { "name": "KeyGroup" }, { "name": "Order" }, { "name": "Order(Dedicated)" }, { "name": "Payment" }, { "name": "Payment(Dedicated)" }, { "name": "PaymentAccount" }, { "name": "PaymentConfig" }, { "name": "PaymentStation" }, { "name": "Platform" }, { "name": "Platform Account Closure" }, { "name": "Revocation" }, { "name": "Reward" }, { "name": "Section" }, { "name": "ServicePluginConfig" }, { "name": "Session(Platform)" }, { "name": "Store" }, { "name": "Subscription" }, { "name": "Ticket" }, { "name": "TradeAction" }, { "name": "View" }, { "name": "Wallet" } ], "externalDocs": { "description": "API Docs", "url": "https://stage.accelbyte.io/platform" }, "securityDefinitions": { "authorization": { "in": "header", "name": "Authorization", "type": "apiKey" } }, "swagger": "2.0", "paths": { "/platform/admin/fulfillment/scripts": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;List all fulfillment scripts.", "operationId": "listFulfillmentScripts", "parameters": [], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/FulfillmentScriptInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List all fulfillment scripts", "tags": [ "FulfillmentScript" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:FULFILLMENT [READ]" } } }, "/platform/admin/fulfillment/scripts/{id}": { "delete": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Delete fulfillment script.", "operationId": "deleteFulfillmentScript", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" } ], "responses": { "204": { "description": "delete fulfillment script successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete fulfillment script", "tags": [ "FulfillmentScript" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:FULFILLMENT [DELETE]" } }, "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get fulfillment script by id.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get fulfillment script\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getFulfillmentScript", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentScriptInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38141\u003c/td\u003e\u003ctd\u003eFulfillment script does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get fulfillment script by id", "tags": [ "FulfillmentScript" ], "x-errorCodes": { "38141": "Fulfillment script does not exist" }, "x-security": { "userPermissions": "ADMIN:FULFILLMENT [READ]" } }, "patch": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update fulfillment script.", "operationId": "updateFulfillmentScript", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/FulfillmentScriptUpdate" } } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentScriptInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38141\u003c/td\u003e\u003ctd\u003eFulfillment script does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update fulfillment script", "tags": [ "FulfillmentScript" ], "x-errorCodes": { "38141": "Fulfillment script does not exist" }, "x-security": { "userPermissions": "ADMIN:FULFILLMENT [UPDATE]" } }, "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Create fulfillment script.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;/ul\u0026gt;Fulfillment scripts are used for adding custom fulfillment logic based on \u0026lt;b\u0026gt;ITEM_TYPE\u0026lt;/b\u0026gt;: [MEDIA,INGAMEITEM] for now, and the custom scripts only cover grantDays.\u0026lt;br\u0026gt;Example for grantDays: \u0026lt;br\u0026gt;\u0026lt;code\u0026gt;order \u0026amp;\u0026amp; ((order.currency \u0026amp;\u0026amp; order.currency.currencyCode) == \u0026#39;LP\u0026#39; || order.isFree) ? 30 : -1\u0026lt;/code\u0026gt;\u0026lt;br\u0026gt;", "operationId": "createFulfillmentScript", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/FulfillmentScriptCreate" } } ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentScriptInfo" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38171\u003c/td\u003e\u003ctd\u003eFulfillment script already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create fulfillment script", "tags": [ "FulfillmentScript" ], "x-errorCodes": { "38171": "Fulfillment script already exists" }, "x-security": { "userPermissions": "ADMIN:FULFILLMENT [CREATE]" } } }, "/platform/admin/items/configs": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;This API is used to get all item type configs.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listItemTypeConfigs", "parameters": [], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ItemTypeConfigInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get all item type configs", "tags": [ "Item" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:ITEM:CONFIG [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;This API is used to create an item type config.\u0026lt;p\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item type config data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createItemTypeConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemTypeConfigCreate" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "item type config created" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30336\u003c/td\u003e\u003ctd\u003eItem type [{itemType}] does not support\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30371\u003c/td\u003e\u003ctd\u003eItem type config for type [{itemType}] and clazz [{clazz}] already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create an Item Type Config", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30336": "Item type [{itemType}] does not support", "30371": "Item type config for type [{itemType}] and clazz [{clazz}] already exists" }, "x-security": { "userPermissions": "ADMIN:ITEM:CONFIG [CREATE]" } } }, "/platform/admin/items/configs/search": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;This API is used to get an item type config.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item type config data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "searchItemTypeConfig", "parameters": [ { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": true, "type": "string" }, { "in": "query", "name": "clazz", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemTypeConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30541\u003c/td\u003e\u003ctd\u003eItem type config [{id}] doesn't exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get an item type config", "tags": [ "Item" ], "x-errorCodes": { "30541": "Item type config [{id}] doesn't exist" }, "x-security": { "userPermissions": "ADMIN:ITEM:CONFIG [READ]" } } }, "/platform/admin/items/configs/{id}": { "delete": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;This API is used to delete an item type config permanently.", "operationId": "deleteItemTypeConfig", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete item successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30541\u003c/td\u003e\u003ctd\u003eItem type config [{id}] doesn't exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete an item type config", "tags": [ "Item" ], "x-errorCodes": { "30541": "Item type config [{id}] doesn't exist" }, "x-security": { "userPermissions": "ADMIN:ITEM:CONFIG [DELETE]" } }, "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;This API is used to get an item type config.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item type config data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getItemTypeConfig", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemTypeConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30541\u003c/td\u003e\u003ctd\u003eItem type config [{id}] doesn't exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get an item type config", "tags": [ "Item" ], "x-errorCodes": { "30541": "Item type config [{id}] doesn't exist" }, "x-security": { "userPermissions": "ADMIN:ITEM:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;This API is used to update an item type config.\u0026lt;p\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item type config data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateItemTypeConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemTypeConfigUpdate" } }, { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemTypeConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30541\u003c/td\u003e\u003ctd\u003eItem type config [{id}] doesn't exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30371\u003c/td\u003e\u003ctd\u003eItem type config for type [{itemType}] and clazz [{clazz}] already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update an Item Type Config", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30371": "Item type config for type [{itemType}] and clazz [{clazz}] already exists", "30541": "Item type config [{id}] doesn't exist" }, "x-security": { "userPermissions": "ADMIN:ITEM:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/campaigns": { "get": { "description": "Query campaigns, if name is presented, it\u0026#39;s fuzzy match.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: slice of campaigns\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryCampaigns", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "in": "query", "name": "name", "required": false, "type": "string" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "tag", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CampaignPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query campaigns", "tags": [ "Campaign" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Create campaign.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created campaign\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createCampaign", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CampaignCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/CampaignInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37121\u003c/td\u003e\u003ctd\u003eInvalid currency namespace [{namespace}] in discount config: {tips}\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37171\u003c/td\u003e\u003ctd\u003eCampaign [{name}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create campaign", "tags": [ "Campaign" ], "x-errorCodes": { "20002": "validation error", "37121": "Invalid currency namespace [{namespace}] in discount config: {tips}", "37171": "Campaign [{name}] already exists in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/campaigns/{campaignId}": { "get": { "description": "Get campaign info.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: campaign info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getCampaign", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CampaignInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37141\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get campaign", "tags": [ "Campaign" ], "x-errorCodes": { "37141": "Campaign [{campaignId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update campaign.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated campaign\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateCampaign", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CampaignUpdate" } }, { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CampaignInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37141\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37171\u003c/td\u003e\u003ctd\u003eCampaign [{name}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update campaign", "tags": [ "Campaign" ], "x-errorCodes": { "20002": "validation error", "37141": "Campaign [{campaignId}] does not exist in namespace [{namespace}]", "37171": "Campaign [{name}] already exists in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/campaigns/{campaignId}/batchName": { "put": { "consumes": [ "application/json" ], "description": "Change campaign batch name.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "renameBatch", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CampaignBatchNameChange" } }, { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "204": { "description": "Batch was renamed successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37141\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37143\u003c/td\u003e\u003ctd\u003eBatch name [{batchName}] does not exist for campaign [{campaignId}] in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Rename batch", "tags": [ "Campaign" ], "x-errorCodes": { "37141": "Campaign [{campaignId}] does not exist in namespace [{namespace}]", "37143": "Batch name [{batchName}] does not exist for campaign [{campaignId}] in namespace [{namespace}]." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/campaigns/{campaignId}/batchNames": { "get": { "description": "Query campaign batch name by fuzzy match.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of campaign batch names\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryCampaignBatchNames", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "batchName", "required": false, "type": "string" }, { "default": 10, "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CampaignBatchNameInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Query campaign batch names", "tags": [ "Campaign" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } } }, "/platform/admin/namespaces/{namespace}/campaigns/{campaignId}/dynamic": { "get": { "description": "Get campaign dynamic.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: campaign dynamic\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getCampaignDynamic", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CampaignDynamicInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37141\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get campaign dynamic", "tags": [ "Campaign" ], "x-errorCodes": { "37141": "Campaign [{campaignId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } } }, "/platform/admin/namespaces/{namespace}/catalog/configs": { "get": { "description": "Get catalog config.", "operationId": "getCatalogConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CatalogConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get catalog config", "tags": [ "Store" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update catalog config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated catalog config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateCatalogConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CatalogConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CatalogConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update catalog config", "tags": [ "Store" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/catalog/plugins/lootbox": { "delete": { "description": "Delete service plugin config.", "operationId": "deleteLootBoxPluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete lootbox plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[DELETE]" } }, "get": { "description": "Get lootbox plugin config.", "operationId": "getLootBoxPluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/LootBoxPluginConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get lootbox plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update lootbox plugin config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated service plugin config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateLootBoxPluginConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/LootBoxPluginConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/LootBoxPluginConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update lootbox plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/catalog/plugins/lootbox/customConfig/cert": { "put": { "consumes": [ "multipart/form-data" ], "description": "Upload lootbox plugin custom config tls cert.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated service plugin config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "uplodLootBoxPluginConfigCert", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/LootBoxPluginConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Upload lootbox plugin custom config tls cert", "tags": [ "ServicePluginConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/catalog/plugins/lootbox/grpcInfo": { "get": { "description": "Get lootbox plugin gRPC info.", "operationId": "getLootBoxGrpcInfo", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "force", "required": false, "type": "boolean", "x-omitempty": false } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/GrpcServerInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get lootbox plugin gRPC info", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[READ]" } } }, "/platform/admin/namespaces/{namespace}/catalog/plugins/section": { "delete": { "description": "Delete section plugin config.", "operationId": "deleteSectionPluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete section plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[DELETE]" } }, "get": { "description": "Get section plugin config.", "operationId": "getSectionPluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SectionPluginConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get section plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update section config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated service plugin config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateSectionPluginConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SectionPluginConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SectionPluginConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update section plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/catalog/plugins/section/customConfig/cert": { "put": { "consumes": [ "multipart/form-data" ], "description": "Upload section plugin custom config tls cert.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated service plugin config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "uploadSectionPluginConfigCert", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SectionPluginConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Upload section plugin custom config tls cert", "tags": [ "ServicePluginConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:CATALOG[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/categories": { "get": { "description": "This API is used to get root categories.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: root category data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getRootCategories", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/FullCategoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get root categories", "tags": [ "Category" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "This API is used to create category.\u0026lt;p\u0026gt;A category is a path separated by \u0026#34;/\u0026#34;. A category also has localized display names. Example:\u0026lt;p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code\u0026gt;{\r\n\t\u0026#34;categoryPath\u0026#34;: \u0026#34;/games\u0026#34;,\r\n\t\u0026#34;localizationDisplayNames\u0026#34;: \\{\u0026#34;en\u0026#34; : \u0026#34;Games\u0026#34;}\r\n}\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created category data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createCategory", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CategoryCreate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullCategoryInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30271\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create category", "tags": [ "Category" ], "x-errorCodes": { "20002": "validation error", "30021": "Default language [{language}] required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]", "30271": "Category [{categoryPath}] already exists in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/categories/basic": { "get": { "description": "This API is used to list all categories\u0026#39; basic info of a store ordered by category path.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of categories\u0026#39; paths\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listCategoriesBasic", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/BasicCategoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List categories' basic info", "tags": [ "Category" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [READ]" } } }, "/platform/admin/namespaces/{namespace}/categories/{categoryPath}": { "delete": { "description": "This API is used to delete category by category path. \u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the deleted category data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "deleteCategory", "parameters": [ { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullCategoryInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30272\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] is not empty in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete category", "tags": [ "Category" ], "x-errorCodes": { "30173": "Published store can't modify content", "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]", "30272": "Category [{categoryPath}] is not empty in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [DELETE]" } }, "get": { "description": "This API is used to get category by category path.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: category data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getCategory", "parameters": [ { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullCategoryInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get category", "tags": [ "Category" ], "x-errorCodes": { "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to update category. \u0026lt;p\u0026gt; The category update data is a category object, example as:\u0026lt;pre\u0026gt;\u0026lt;code\u0026gt;{\r\n\t\u0026#34;storeId\u0026#34;: \u0026#34;store-id\u0026#34;,\r\n\t\u0026#34;localizationDisplayNames\u0026#34;: {\u0026#34;en\u0026#34; : \u0026#34;Games\u0026#34;}\r\n}\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the updated category data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateCategory", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CategoryUpdate" } }, { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullCategoryInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update category", "tags": [ "Category" ], "x-errorCodes": { "20002": "validation error", "30021": "Default language [{language}] required", "30173": "Published store can't modify content", "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/categories/{categoryPath}/children": { "get": { "description": "This API is used to get child categories by category path.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of child categories data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getChildCategories", "parameters": [ { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/FullCategoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get child categories", "tags": [ "Category" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [READ]" } } }, "/platform/admin/namespaces/{namespace}/categories/{categoryPath}/descendants": { "get": { "description": "This API is used to get descendant categories by category path.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of descendant categories data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getDescendantCategories", "parameters": [ { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/FullCategoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get descendant categories", "tags": [ "Category" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CATEGORY [READ]" } } }, "/platform/admin/namespaces/{namespace}/codes/campaigns/{campaignId}": { "get": { "description": "Query campaign codes.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of codes\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;The \u0026lt;i\u0026gt;batchName\u0026lt;/i\u0026gt; field in the codes response will be present only when the \u0026lt;i\u0026gt;withBatchName\u0026lt;/i\u0026gt; parameter is \u0026lt;i\u0026gt;true\u0026lt;/i\u0026gt;, or when the \u0026lt;i\u0026gt;batchName\u0026lt;/i\u0026gt; filter is not blank.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryCodes", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "batchName", "required": false, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "format": "int32", "type": "integer" }, "name": "batchNo", "required": false, "type": "array" }, { "in": "query", "name": "code", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "default": false, "in": "query", "name": "withBatchName", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CodeInfoPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query codes", "tags": [ "Campaign" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "This API is used to create campaign codes, it will increase the batch No. based on last creation.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: number of codes created\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createCodes", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CodeCreate" } }, { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/CodeCreateResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37141\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37180\u003c/td\u003e\u003ctd\u003eCode [{code}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create campaign codes", "tags": [ "Campaign" ], "x-errorCodes": { "20002": "validation error", "37141": "Campaign [{campaignId}] does not exist in namespace [{namespace}]", "37180": "Code [{code}] already exists in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/codes/campaigns/{campaignId}/codes.csv": { "get": { "description": "Download all or a batch of campaign\u0026#39;s codes as a csv file.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: codes csv file\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;The csv file will always have \u0026lt;i\u0026gt;Batch Name\u0026lt;/i\u0026gt; column, but this column will be filled only when the \u0026lt;i\u0026gt;withBatchName\u0026lt;/i\u0026gt; parameter is \u0026lt;i\u0026gt;true\u0026lt;/i\u0026gt;, or when the \u0026lt;i\u0026gt;batchName\u0026lt;/i\u0026gt; filter is not blank.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "download", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "batchName", "required": false, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "format": "int32", "type": "integer" }, "name": "batchNo", "required": false, "type": "array" }, { "default": false, "in": "query", "name": "withBatchName", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "text/csv" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } } }, "security": [ { "authorization": [] } ], "summary": "Download codes", "tags": [ "Campaign" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } } }, "/platform/admin/namespaces/{namespace}/codes/campaigns/{campaignId}/disable/bulk": { "put": { "consumes": [ "application/json" ], "description": "Bulk disable codes.\u0026lt;p\u0026gt;Bulk disable campaign codes, all matched codes will be disabled except those have already been redeemed.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the number of code actually disabled\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "bulkDisableCodes", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "batchName", "required": false, "type": "string" }, { "collectionFormat": "multi", "description": "if not present will match all except 0", "in": "query", "items": { "format": "int32", "type": "integer" }, "name": "batchNo", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkOperationResult" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk disable codes", "tags": [ "Campaign" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/codes/campaigns/{campaignId}/enable/bulk": { "put": { "consumes": [ "application/json" ], "description": "Bulk enable campaign codes.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the number of code actually enabled\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "bulkEnableCodes", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "batchName", "required": false, "type": "string" }, { "collectionFormat": "multi", "description": "if not present will match all except 0", "in": "query", "items": { "format": "int32", "type": "integer" }, "name": "batchNo", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkOperationResult" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk enable codes", "tags": [ "Campaign" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/codes/campaigns/{campaignId}/history": { "get": { "description": "Query redeem history.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: slice of redeem history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryRedeemHistory", "parameters": [ { "in": "path", "name": "campaignId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "code", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RedeemHistoryPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query redeem history", "tags": [ "Campaign" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } } }, "/platform/admin/namespaces/{namespace}/codes/{code}": { "get": { "description": "Get campaign code, it will check code whether available to redeem if redeemable true.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: code info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getCode", "parameters": [ { "in": "path", "name": "code", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "redeemable", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "in": "query", "name": "withBatchName", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CodeInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37144\u003c/td\u003e\u003ctd\u003eCampaign batch name does not exist for batch number [{batchNo}] campaign [{campaignId}] in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37172\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37173\u003c/td\u003e\u003ctd\u003eCode [{code}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37174\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37177\u003c/td\u003e\u003ctd\u003eCode redemption not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37178\u003c/td\u003e\u003ctd\u003eCode redemption already ended\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get code info", "tags": [ "Campaign" ], "x-errorCodes": { "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37144": "Campaign batch name does not exist for batch number [{batchNo}] campaign [{campaignId}] in namespace [{namespace}].", "37172": "Campaign [{campaignId}] is inactive in namespace [{namespace}]", "37173": "Code [{code}] is inactive in namespace [{namespace}]", "37174": "Exceeded max redeem count per code [{maxCount}]", "37177": "Code redemption not started", "37178": "Code redemption already ended" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [READ]" } } }, "/platform/admin/namespaces/{namespace}/codes/{code}/disable": { "put": { "consumes": [ "application/json" ], "description": "Disable code.\u0026lt;p\u0026gt;Disable an active code, the code can\u0026#39;t be disabled if it has already been redeemed.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: disabled code\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "disableCode", "parameters": [ { "in": "path", "name": "code", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CodeInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37176\u003c/td\u003e\u003ctd\u003eCode [{code}] has been redeemed in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Disable code", "tags": [ "Campaign" ], "x-errorCodes": { "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37176": "Code [{code}] has been redeemed in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/codes/{code}/enable": { "put": { "consumes": [ "application/json" ], "description": "Enable code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: enabled code\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "enableCode", "parameters": [ { "in": "path", "name": "code", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CodeInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Enable code", "tags": [ "Campaign" ], "x-errorCodes": { "37142": "Code [{code}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CAMPAIGN [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/configs/servicePlugin": { "delete": { "deprecated": true, "description": "Delete service plugin config", "operationId": "deleteServicePluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete service plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CONFIG:SERVICEPLUGIN[DELETE]" } }, "get": { "deprecated": true, "description": "Get service plugin config", "operationId": "getServicePluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ServicePluginConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get service plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CONFIG:SERVICEPLUGIN[READ]" } }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "Update catalog config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated service plugin config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateServicePluginConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ServicePluginConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ServicePluginConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update service plugin config service", "tags": [ "ServicePluginConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CONFIG:SERVICEPLUGIN[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/currencies": { "get": { "consumes": [ "application/json" ], "description": "List currencies of a namespace.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Currency List\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listCurrencies", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "currencyType", "enum": [ "REAL", "VIRTUAL" ], "in": "query", "name": "currencyType", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CurrencyInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List currencies", "tags": [ "Currency" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CURRENCY [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Create a currency.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created currency\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createCurrency", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CurrencyCreate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CurrencyInfo" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36171\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36172\u003c/td\u003e\u003ctd\u003eReal Currency [{currencyCode}] not allowed in game namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create a currency", "tags": [ "Currency" ], "x-errorCodes": { "20002": "validation error", "36171": "Currency [{currencyCode}] already exists in namespace [{namespace}]", "36172": "Real Currency [{currencyCode}] not allowed in game namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CURRENCY [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/currencies/{currencyCode}": { "delete": { "description": "Delete a currency by currency code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "deleteCurrency", "parameters": [ { "description": "currencyCode", "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CurrencyInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a currency", "tags": [ "Currency" ], "x-errorCodes": { "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CURRENCY [DELETE]" } }, "put": { "consumes": [ "application/json" ], "description": "Update a currency by currency code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated currency\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateCurrency", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CurrencyUpdate" } }, { "description": "currencyCode", "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CurrencyInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36172\u003c/td\u003e\u003ctd\u003eReal Currency [{currencyCode}] not allowed in game namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update a currency", "tags": [ "Currency" ], "x-errorCodes": { "20002": "validation error", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]", "36172": "Real Currency [{currencyCode}] not allowed in game namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CURRENCY [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/currencies/{currencyCode}/config": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Get currency config by code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: simplified Currency\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getCurrencyConfig", "parameters": [ { "description": "currencyCode", "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CurrencyConfig" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get currency config", "tags": [ "Currency" ], "x-errorCodes": { "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CURRENCY [READ]" } } }, "/platform/admin/namespaces/{namespace}/currencies/{currencyCode}/summary": { "get": { "consumes": [ "application/json" ], "description": "Get currency summary by code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: simplified Currency\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getCurrencySummary", "parameters": [ { "description": "currencyCode", "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CurrencySummary" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get currency summary", "tags": [ "Currency" ], "x-errorCodes": { "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:CURRENCY [READ]" } } }, "/platform/admin/namespaces/{namespace}/dlc/config/history": { "get": { "description": "Get DLC item config history.", "operationId": "getDLCItemConfigHistory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "dlcId", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/DLCItemConfigHistoryResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39442\u003c/td\u003e\u003ctd\u003eDLC item config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get DLC item config history", "tags": [ "DLC" ], "x-errorCodes": { "39442": "DLC item config cannot be found in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [READ]" } } }, "/platform/admin/namespaces/{namespace}/dlc/config/history/{id}/restore": { "post": { "description": "Restore DLC item config history.", "operationId": "restoreDLCItemConfigHistory", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "204": { "description": "Succesfully restore the revision" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39442\u003c/td\u003e\u003ctd\u003eDLC item config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Restore DLC item config history", "tags": [ "DLC" ], "x-errorCodes": { "39442": "DLC item config cannot be found in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/dlc/config/item": { "delete": { "consumes": [ "application/json" ], "description": "delete a DLC item config.", "operationId": "deleteDLCItemConfig", "parameters": [ { "description": "namespace, only accept alphabet and numeric", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "delete a DLC item config", "tags": [ "DLC" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [DELETE]" } }, "get": { "description": "Get DLC item config.", "operationId": "getDLCItemConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/DLCItemConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39442\u003c/td\u003e\u003ctd\u003eDLC item config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get DLC item config", "tags": [ "DLC" ], "x-errorCodes": { "39442": "DLC item config cannot be found in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update DLC item config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated DLC item config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateDLCItemConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/DLCItemConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/DLCItemConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e394721\u003c/td\u003e\u003ctd\u003eInvalid platform DLC config namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{itemSku}] does not exist \u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39471\u003c/td\u003e\u003ctd\u003eDuplicated dlc reward id [{dlcRewardId}] in namespace [{namespace}] \u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update DLC item config", "tags": [ "DLC" ], "x-errorCodes": { "20002": "validation error", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30343": "Item of sku [{itemSku}] does not exist ", "39471": "Duplicated dlc reward id [{dlcRewardId}] in namespace [{namespace}] ", "394721": "Invalid platform DLC config namespace [{namespace}]: [{message}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/dlc/config/platformMap": { "delete": { "consumes": [ "application/json" ], "description": "delete a Platform DLC config.", "operationId": "deletePlatformDLCConfig", "parameters": [ { "description": "namespace, only accept alphabet and numeric", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "delete a Platform DLC config", "tags": [ "DLC" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [DELETE]" } }, "get": { "description": "Get Platform DLC config.", "operationId": "getPlatformDLCConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformDLCConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39341\u003c/td\u003e\u003ctd\u003ePlatform DLC config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get Platform DLC config", "tags": [ "DLC" ], "x-errorCodes": { "39341": "Platform DLC config cannot be found in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update Platform DLC config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated Platform DLC config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for platform dlc map\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "updatePlatformDLCConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PlatformDLCConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformDLCConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update Platform DLC config", "tags": [ "DLC" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:DLC:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/entitlements": { "get": { "description": "Query entitlements.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryEntitlements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": false, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "in": "query", "name": "entitlementName", "required": false, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemId", "required": false, "type": "array" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "in": "query", "name": "origin", "required": false, "type": "string" }, { "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query entitlements", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/entitlements/byItemIds": { "get": { "description": "Query entitlements by Item Ids.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryEntitlementsByItemIds", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemIds", "required": false, "type": "array" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query entitlements by Item Ids", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/entitlements/config/entitlementOrigin/enable": { "put": { "consumes": [ "application/json" ], "description": "Enable Entitlement origin feature.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "enableEntitlementOriginFeature", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Enable entitlement origin feature", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT:CONFIG[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/entitlements/config/info": { "get": { "consumes": [ "application/json" ], "description": "Get entitlement config info.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getEntitlementConfigInfo", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "withoutCache", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get entitlement config info", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT:CONFIG[READ]" } } }, "/platform/admin/namespaces/{namespace}/entitlements/grant": { "post": { "consumes": [ "application/json" ], "description": "Grant entitlements to multiple users, skipped granting will be treated as fail.\u0026lt;br\u0026gt;\u0026lt;br\u0026gt;Notes: \u0026lt;br\u0026gt;\u0026lt;br\u0026gt;Support Item Types:\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;APP\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;INGAMEITEM\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;CODE\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;SUBSCRIPTION\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;MEDIA\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;OPTIONBOX\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;LOOTBOX\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: bulk grant entitlements result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "grantEntitlements", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/BulkEntitlementGrantRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkEntitlementGrantResult" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Grant entitlements to different users", "tags": [ "Entitlement" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/entitlements/revoke": { "post": { "consumes": [ "application/json" ], "description": "Revoke entitlements, skipped revocation will be treated as fail.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: bulk revoke entitlements result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "revokeEntitlements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "items": { "type": "string" }, "type": "array" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkEntitlementRevokeResult" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke entitlements by Ids", "tags": [ "Entitlement" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/entitlements/{entitlementId}": { "get": { "description": "Get entitlement.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getEntitlement", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/fulfillment/history": { "get": { "description": "Query fulfillment histories in a namespace.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: query fulfillment history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryFulfillmentHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "FAIL", "SUCCESS" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentHistoryPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query fulfillment histories", "tags": [ "Fulfillment" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:FULFILLMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/clawback/histories": { "get": { "description": "Query clawback history.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated clawback history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryIAPClawbackHistory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "endTime", "required": false, "type": "string" }, { "description": "event type", "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "OTHER", "REFUND", "REVOKED" ], "in": "query", "name": "eventType", "required": false, "type": "string" }, { "description": "third party order id", "in": "query", "name": "externalOrderId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "startTime", "required": false, "type": "string" }, { "description": "status", "enum": [ "FAIL", "IGNORED", "INIT", "SUCCESS" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "description": "AGS user id", "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPClawbackPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query clawback history", "tags": [ "Clawback" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CLAWBACK[READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/clawback/playstation/mock": { "post": { "consumes": [ "application/json" ], "description": "Mock Sync PlayStation Clawback event..", "operationId": "mockPlayStationStreamEvent", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/StreamEvent" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ClawbackInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Mock Sync PlayStation Clawback event.", "tags": [ "Clawback" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CLAWBACK[CREATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/clawback/xbl/mock": { "post": { "consumes": [ "application/json" ], "description": "Mock Sync XBox Clawback event.", "operationId": "mockXblClawbackEvent", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/XblClawbackEvent" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ClawbackInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Mock Sync XBox Clawback event.", "tags": [ "Clawback" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CLAWBACK[CREATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/apple": { "delete": { "description": "Delete apple iap config.", "operationId": "deleteAppleIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete apple iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get apple iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: apple iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getAppleIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppleIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get apple iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update apple iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated apple iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateAppleIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AppleIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppleIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update apple iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/apple/cert": { "put": { "consumes": [ "multipart/form-data" ], "description": "Upload Apple Store p8 file.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated apple iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateAppleP8File", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppleIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Upload Apple Store p8 file", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/epicgames": { "delete": { "description": "Delete epic games iap config.", "operationId": "deleteEpicGamesIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete epic games iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get epic games iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: epic games iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getEpicGamesIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EpicGamesIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get epicgames iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update epic games iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated epic games iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateEpicGamesIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/EpicGamesIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EpicGamesIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update epic games iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/google": { "delete": { "description": "Delete google iap config.", "operationId": "deleteGoogleIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete google iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get google iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: google iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getGoogleIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/GoogleIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get google iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update google iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated google iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateGoogleIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/GoogleIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/GoogleIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update google iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/google/cert": { "put": { "consumes": [ "multipart/form-data" ], "description": "Upload google play p12 file.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated google iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateGoogleP12File", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/GoogleIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Upload google play p12 file", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/item": { "delete": { "consumes": [ "application/json" ], "description": "delete a iap item config.", "operationId": "deleteIAPItemConfig", "parameters": [ { "description": "namespace, only accept alphabet and numeric", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "delete a iap item config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get iap item config.", "operationId": "getIAPItemConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPItemConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39341\u003c/td\u003e\u003ctd\u003eIAP item config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get iap item config", "tags": [ "IAP" ], "x-errorCodes": { "39341": "IAP item config cannot be found in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update iap item config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated iap item config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateIAPItemConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/IAPItemConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPItemConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39321\u003c/td\u003e\u003ctd\u003eInvalid IAP item config namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39175\u003c/td\u003e\u003ctd\u003eDuplicate IAP item mapping, IAPType: [{iapType}] and id: [{iapId}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update iap item config", "tags": [ "IAP" ], "x-errorCodes": { "20002": "validation error", "39175": "Duplicate IAP item mapping, IAPType: [{iapType}] and id: [{iapId}]", "39321": "Invalid IAP item config namespace [{namespace}]: [{message}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/oculus": { "delete": { "description": "Delete oculus iap config.", "operationId": "deleteOculusIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete oculus iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get oculus iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: steam iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getOculusIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OculusIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get oculus iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update oculus iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated steam iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateOculusIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/OculusIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OculusIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update oculus iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/oculus/subscription/group": { "get": { "description": "List Meta Quest(Oculus) subscriptions group", "operationId": "listOculusSubscriptionGroups", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ThirdPartySubscriptionGroupInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List All of AGS Meta Quest(Oculus) subscriptions group", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Create subscriptions group", "operationId": "createOculusSubscriptionGroup", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/ThirdPartySubscriptionGroupCreate" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionGroupInfo" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39187\u003c/td\u003e\u003ctd\u003eDuplicated group sku [{sku}] platform [{platform}] in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create AGS Meta Quest(Oculus) subscriptions group", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39187": "Duplicated group sku [{sku}] platform [{platform}] in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/oculus/subscription/group/{sku}": { "delete": { "description": "can\u0026#39;t delete it if this subscription group is used.", "operationId": "deleteOculusSubscriptionGroup", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "sku", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39152\u003c/td\u003e\u003ctd\u003ePlatform [{platform}] - Third-party subscription group [{sku}] not found in namespace [{namespace}]. It may have been deleted.\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39188\u003c/td\u003e\u003ctd\u003eThird-party subscription group [{sku}] on platform [{platform}] in namespace [{namespace}] is already linked to the user's third-party subscription.\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a AGS Meta Quest(Oculus) subscriptions group", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39152": "Platform [{platform}] - Third-party subscription group [{sku}] not found in namespace [{namespace}]. It may have been deleted.", "39188": "Third-party subscription group [{sku}] on platform [{platform}] in namespace [{namespace}] is already linked to the user's third-party subscription." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/oculus/subscription/group/{sku}/tiers": { "get": { "description": "List All Tier of AGS Meta Quest(Oculus) subscriptions group", "operationId": "listOculusSubscriptionGroupTier", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "sku", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ThirdPartySubscriptionTierInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List All Tier of AGS Meta Quest(Oculus) subscriptions group", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/oculus/subscription/tier": { "post": { "consumes": [ "application/json" ], "description": "Create Meta Quest(Oculus) subscriptions tier", "operationId": "addTierIntoMetaQuestSubscriptionGroup", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/ThirdPartySubscriptionTierCreate" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionTierInfo" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39187\u003c/td\u003e\u003ctd\u003eDuplicated group sku [{sku}] platform [{platform}] in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create Meta quest(Oculus) subscriptions tier", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39187": "Duplicated group sku [{sku}] platform [{platform}] in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/oculus/subscription/tier/{sku}": { "delete": { "description": "", "operationId": "deleteOculusSubscriptionTier", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "sku", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39152\u003c/td\u003e\u003ctd\u003ePlatform [{platform}] - Third-party subscription group [{sku}] not found in namespace [{namespace}]. It may have been deleted.\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39188\u003c/td\u003e\u003ctd\u003eThird-party subscription group [{sku}] on platform [{platform}] in namespace [{namespace}] is already linked to the user's third-party subscription.\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a AGS Meta Quest(Oculus) subscriptions tier", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39152": "Platform [{platform}] - Third-party subscription group [{sku}] not found in namespace [{namespace}]. It may have been deleted.", "39188": "Third-party subscription group [{sku}] on platform [{platform}] in namespace [{namespace}] is already linked to the user's third-party subscription." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/playstation": { "delete": { "description": "Delete playstation iap config.", "operationId": "deletePlaystationIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete playstation iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get playstation iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: playstation iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPlayStationIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlayStationIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get playstation iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update playstation iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated playstation iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePlaystationIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PlaystationIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlayStationIAPConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39130\u003c/td\u003e\u003ctd\u003eInvalid playstation config: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update playstation iap config", "tags": [ "IAP" ], "x-errorCodes": { "39130": "Invalid playstation config: [{message}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/playstation/validate": { "get": { "consumes": [ "application/json" ], "description": "Validate playstation iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Test Results\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "validateExistedPlaystationIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Validate existed playstation iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Validate playstation iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Test Results\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "validatePlaystationIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PlaystationIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Validate playstation iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/steam": { "delete": { "description": "Delete steam iap config.", "operationId": "deleteSteamIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete steam iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get steam iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: steam iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getSteamIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SteamIAPConfig" } } }, "security": [ { "authorization": [] } ], "summary": "Get steam iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update steam iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated steam iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateSteamIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SteamIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SteamIAPConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39128\u003c/td\u003e\u003ctd\u003eSteam publisher key is invalid\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39129\u003c/td\u003e\u003ctd\u003eSteam app id is invalid\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update steam iap config", "tags": [ "IAP" ], "x-errorCodes": { "39128": "Steam publisher key is invalid", "39129": "Steam app id is invalid" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/twitch": { "delete": { "description": "Delete twitch iap config.", "operationId": "deleteTwitchIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete twitch iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get twitch iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: twitch iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getTwitchIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TwitchIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get twitch iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update twitch iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated twitch iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateTwitchIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TwitchIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TwitchIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update twitch iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/xbl": { "delete": { "description": "Delete xbl iap config.", "operationId": "deleteXblAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete xbl iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [DELETE]" } }, "get": { "description": "Get xbox iap config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: xbox iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getXblIAPConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/XblIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get xbox iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update xbl iap config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated xbl iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateXblIAPConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/XblIAPConfigRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/XblIAPConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update xbl iap config", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/config/xbl/cert": { "put": { "consumes": [ "multipart/form-data" ], "description": "Upload xbl business partner cert file.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated xbl iap config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateXblBPCertFile", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" }, { "in": "formData", "name": "password", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/XblIAPConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39221\u003c/td\u003e\u003ctd\u003eInvalid Xbox Business Partner Certificate or password: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Upload xbl business partner cert file", "tags": [ "IAP" ], "x-errorCodes": { "39221": "Invalid Xbox Business Partner Certificate or password: [{message}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:IAP:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/notifications": { "get": { "description": "Query third party notifications.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Third Party Platform notifications\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryThirdPartyNotifications", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z", "in": "query", "name": "endDate", "required": false, "type": "string" }, { "in": "query", "name": "externalId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "query", "name": "source", "required": false, "type": "string" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z", "in": "query", "name": "startDate", "required": false, "type": "string" }, { "enum": [ "ERROR", "IGNORED", "PROCESSED", "WARN" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "in": "query", "name": "type", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/NotificationPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query third party notifications", "tags": [ "IAP(Notification)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/steam/abnormal_transactions": { "get": { "description": "", "operationId": "queryAbnormalTransactions", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "orderId", "required": false, "type": "string" }, { "in": "query", "name": "steamId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SteamAbnormalTransactionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query steam abnormal transactions", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/steam/job": { "get": { "description": "Query steam report info", "operationId": "adminGetSteamJobInfo", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/SteamReportJobInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Query steam report job info", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/steam/job/reset": { "put": { "consumes": [ "application/json" ], "description": "", "operationId": "adminResetSteamJobTime", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ResetJobRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SteamReportJobInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Reset steam report job with a special time", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/iap/steam/orders/{iapOrderNo}/refund": { "put": { "description": "Only support steam transaction mode", "operationId": "adminRefundIAPOrder", "parameters": [ { "in": "path", "name": "iapOrderNo", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPOrderInfo" } }, "204": { "description": "Refund IAP Order successfully" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39124\u003c/td\u003e\u003ctd\u003eIAP request platform [{platformId}] user id is not linked with current user\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39144\u003c/td\u003e\u003ctd\u003eSteam IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39151\u003c/td\u003e\u003ctd\u003eIAP order no [{iapOrderNo}] not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39184\u003c/td\u003e\u003ctd\u003eSteam api exception with status code [{statusCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39185\u003c/td\u003e\u003ctd\u003eThis endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Refund IAP Order", "tags": [ "IAP" ], "x-errorCodes": { "39124": "IAP request platform [{platformId}] user id is not linked with current user", "39144": "Steam IAP config not found in namespace [{namespace}].", "39151": "IAP order no [{iapOrderNo}] not found in namespace [{namespace}].", "39184": "Steam api exception with status code [{statusCode}] and error message [{message}]", "39185": "This endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP" } } }, "/platform/admin/namespaces/{namespace}/iap/steam/report/histories": { "get": { "description": "", "operationId": "querySteamReportHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "orderId", "required": false, "type": "string" }, { "enum": [ "ERROR", "IGNORED", "PROCESSED" ], "in": "query", "name": "processStatus", "required": false, "type": "string" }, { "in": "query", "name": "steamId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SteamReportInfoPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Get IAP steam report process histories, default sort by created at", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/subscriptions": { "get": { "description": "Query subscriptions, default sort by updatedAt Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryThirdPartySubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "if platform is Google, please pass google subscription product id. if platform is Apple, please pass apple subscription group id", "in": "query", "name": "groupId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "query", "name": "platform", "required": false, "type": "string" }, { "description": "if platform is Google, please pass google subscription plan id. if platform is Apple, please pass apple subscription product id", "in": "query", "name": "productId", "required": false, "type": "string" }, { "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartyUserSubscriptionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query subscriptions.", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/iap/{iapOrderNo}/consumedetails": { "get": { "description": "Get IAP Order Consume Details by IAP Order Number.", "operationId": "getIAPOrderConsumeDetails", "parameters": [ { "in": "path", "name": "iapOrderNo", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/IAPOrderConsumeDetailInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get IAP Order Consume Details by IAP Order Number.", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/invoice/details.csv": { "get": { "description": "Download invoice details as a csv file.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: invoice details csv file\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "downloadInvoiceDetails", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "endTime", "required": true, "type": "string" }, { "in": "query", "name": "feature", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": true, "type": "string" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "startTime", "required": true, "type": "string" } ], "produces": [ "text/csv" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } } }, "security": [ { "authorization": [] } ], "summary": "Download invoice details", "tags": [ "Invoice" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/invoice/summary": { "get": { "description": "Generate invoice summary.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: query orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "generateInvoiceSummary", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "endTime", "required": true, "type": "string" }, { "in": "query", "name": "feature", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": true, "type": "string" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "startTime", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/InvoiceSummary" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Generate invoice summary", "tags": [ "Invoice" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/items": { "post": { "consumes": [ "application/json" ], "description": "This API is used to create an item. APP item only can created in publisher namespace.\u0026lt;p\u0026gt;An item create example:\u0026lt;p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code\u0026gt;{\r\n \u0026#34;itemId\u0026#34;: \u0026#34;b478be9ad42f4d0f8ba49ef3ef605a83\u0026#34; (optional, UUID V4 without hyphen format)\r\n \u0026#34;categoryPath\u0026#34;: \u0026#34;/games\u0026#34;,\r\n \u0026#34;localizations\u0026#34;: \\{\r\n \u0026#34;en\u0026#34;: \\{\r\n \u0026#34;title\u0026#34;:\u0026#34;required\u0026#34;,\r\n \u0026#34;description\u0026#34;:\u0026#34;optional\u0026#34;,\r\n \u0026#34;longDescription\u0026#34;:\u0026#34;optional\u0026#34;,\r\n \u0026#34;localExt\u0026#34;: \\{\r\n \u0026#34;properties\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\],\r\n \u0026#34;functions\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\]\r\n \\}\r\n \\}\r\n \\},\r\n \u0026#34;images\u0026#34;: \\[\r\n \\{\r\n \u0026#34;as\u0026#34;:\u0026#34;optional, image for\u0026#34;,\r\n \u0026#34;caption\u0026#34;:\u0026#34;optional\u0026#34;,\r\n \u0026#34;height\u0026#34;:10,\r\n \u0026#34;width\u0026#34;:10,\r\n \u0026#34;imageUrl\u0026#34;:\u0026#34;http://img-url-required\u0026#34;,\r\n \u0026#34;smallImageUrl\u0026#34;:\u0026#34;http://small-img-url-required\u0026#34;\r\n \\}\r\n \\],\r\n \u0026#34;thumbnailUrl\u0026#34;: \u0026#34;optional, thumbnail url\u0026#34;,\r\n \u0026#34;status\u0026#34;: \u0026#34;ACTIVE\u0026#34;,\r\n \u0026#34;listable\u0026#34;: true,\r\n \u0026#34;purchasable\u0026#34;: true,\r\n \u0026#34;itemType\u0026#34;: \u0026#34;APP(allowed: [APP,COINS,INGAMEITEM,CODE,BUNDLE])\u0026#34;,\r\n \u0026#34;name\u0026#34;: \u0026#34;required, also will be used as entitlement name\u0026#34;,\r\n \u0026#34;entitlementType\u0026#34;: \u0026#34;DURABLE(allowed:[DURABLE,CONSUMABLE], should be CONSUMABLE when item type is COINS)\u0026#34;, \r\n \u0026#34;useCount\u0026#34;: 1(optional, required if the entitlement type is consumable),\r\n \u0026#34;stackable\u0026#34;: false,\r\n \u0026#34;appId\u0026#34;: \u0026#34;optional, required if itemType is APP\u0026#34;,\r\n \u0026#34;appType\u0026#34;: \u0026#34;GAME(optional, required if itemType is APP)\u0026#34;,\r\n \u0026#34;seasonType\u0026#34;: \u0026#34;PASS(optional, required if itemType is SEASON)\u0026#34;,\r\n \u0026#34;baseAppId\u0026#34;: \u0026#34;optional, set value of game app id if you want to link to a game\u0026#34;,\r\n \u0026#34;targetCurrencyCode\u0026#34;: \u0026#34;optional, required if itemType is COINS\u0026#34;,\r\n \u0026#34;targetNamespace\u0026#34;: \u0026#34;optional, required when itemType is INGAMEITEM, the targetNamespace will only take effect when the item\r\n created belongs to the publisher namespace\u0026#34;,\r\n \u0026#34;sku\u0026#34;: \u0026#34;optional, commonly unique item code\u0026#34;,\r\n \u0026#34;regionData\u0026#34;: \\{\r\n \u0026#34;US(store\u0026#39;s default region is required)\u0026#34;: \\[\r\n \\{\r\n \u0026#34;price\u0026#34;:10,\r\n \u0026#34;discountPercentage\u0026#34;: 0(integer, optional, range[0,100], discountedPrice = price \\* ((100 - discountPercentage) \\* 0.01),\r\n will use it to calculate discounted price if it is not 0),\r\n \u0026#34;discountAmount\u0026#34;:0(integer, optional, range[0,itemPrice], will use it to calculate discounted price if discountPercentage is 0),\r\n \u0026#34;currencyCode\u0026#34;:\u0026#34;code(required, example: USD)\u0026#34;,\r\n \u0026#34;currencyNamespace\u0026#34;:\u0026#34;test-ns-required(allow publisher namespace if namespace is publisher namespace, allow publisher and game namespace if namespace is not publisher namespace)\u0026#34;,\r\n \u0026#34;trialPrice\u0026#34;:5(required while fixedTrialCycles set, should \u0026gt;=0 and \u0026lt;= price, will same as price if not present),\r\n \u0026#34;purchaseAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;,\r\n \u0026#34;expireAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;,\r\n \u0026#34;discountPurchaseAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;,\r\n \u0026#34;discountExpireAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;\r\n \\}\r\n \\]\r\n \\},\r\n \u0026#34;itemIds\u0026#34;: \\[\r\n \u0026#34;itemId\u0026#34;\r\n \\],\r\n \u0026#34;itemQty\u0026#34;: \\{\r\n \u0026#34;itemId\u0026#34;:1\r\n \\},\r\n \u0026#34;recurring\u0026#34;: \\{\r\n \u0026#34;cycle\u0026#34;:\u0026#34;MONTHLY(allowed: [WEEKLY,MONTHLY,QUARTERLY,YEARLY])\u0026#34;,\r\n \u0026#34;fixedFreeDays\u0026#34;:0(integer, fixed free days, 0 means not set),\r\n \u0026#34;fixedTrialCycles\u0026#34;:0(integer, fixed trial cycles, 0 means not set, will not take effect if fixedFreeDays set),\r\n \u0026#34;graceDays\u0026#34;:7(integer, recurring grace days, retry recurring charge within configured days if charge fail, default 7)\r\n \\},\r\n \u0026#34;tags\u0026#34;: \\[\r\n \u0026#34;exampleTag24\u0026#34;\r\n \\],\r\n \u0026#34;features\u0026#34;: \\[\r\n \u0026#34;feature\u0026#34;\r\n \\],\r\n \u0026#34;clazz\u0026#34;: \u0026#34;weapon\u0026#34;,\r\n \u0026#34;boothName\u0026#34;: \u0026#34;C_campaign1\u0026#34;,\r\n \u0026#34;displayOrder\u0026#34;: 1000,\r\n \u0026#34;ext\u0026#34;: \\{\r\n \u0026#34;properties\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\],\r\n \u0026#34;functions\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\]\r\n \\},\r\n \u0026#34;maxCountPerUser\u0026#34;: 1(integer, optional, -1 means UNLIMITED),\r\n \u0026#34;maxCount\u0026#34;: 1(integer, optional, -1 means UNLIMITED, unset when itemType is CODE)\r\n}\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for item extension and localization extension and inventory config custom attributes\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "createItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemCreate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003eunsupported operation\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30301\u003c/td\u003e\u003ctd\u003eUnsupported Item Type [{itemType}] for box item [{itemId}] with expiration\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30322\u003c/td\u003e\u003ctd\u003eBundle item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30325\u003c/td\u003e\u003ctd\u003eCode item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30326\u003c/td\u003e\u003ctd\u003eSubscription item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30329\u003c/td\u003e\u003ctd\u003eInvalid bundled item [{itemId}] quantity\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30321\u003c/td\u003e\u003ctd\u003eInvalid item discount amount\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30022\u003c/td\u003e\u003ctd\u003eDefault region [{region}] is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30323\u003c/td\u003e\u003ctd\u003eTarget namespace is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30327\u003c/td\u003e\u003ctd\u003eInvalid item trial price\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30330\u003c/td\u003e\u003ctd\u003eInvalid item region price currency namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30332\u003c/td\u003e\u003ctd\u003eInvalid option box item [{itemId}] quantity\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30333\u003c/td\u003e\u003ctd\u003eItem [{itemId}] item type [{itemType}] can't be bundled into option box\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30334\u003c/td\u003e\u003ctd\u003eOption box item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30337\u003c/td\u003e\u003ctd\u003eInvalid loot box item [{itemId}] quantity\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30338\u003c/td\u003e\u003ctd\u003eItem [{itemId}] item type [{itemType}] can't be bundled into loot box\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30339\u003c/td\u003e\u003ctd\u003eLoot box item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30175\u003c/td\u003e\u003ctd\u003eDuplicated currencyCode [{currencyCode}] in Region [{region}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30373\u003c/td\u003e\u003ctd\u003eItemType [{itemType}] is not allowed in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30376\u003c/td\u003e\u003ctd\u003ePublisher namespace don’t allow sellback item\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30377\u003c/td\u003e\u003ctd\u003eThis item type [{itemType}] don’t allow sellback\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30378\u003c/td\u003e\u003ctd\u003eSale price don’t allow real currency [{currencyCode}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30380\u003c/td\u003e\u003ctd\u003eBox item [{itemId}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30381\u003c/td\u003e\u003ctd\u003eCurrency [{currency}] is not set for bundle Item [{itemId}] in region [{region}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30383\u003c/td\u003e\u003ctd\u003eItem app id [{appId}] already exists in namespace [{namespace}] item [{itemId}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create an Item", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "20024": "unsupported operation", "30021": "Default language [{language}] required", "30022": "Default region [{region}] is required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30175": "Duplicated currencyCode [{currencyCode}] in Region [{region}]", "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]", "30301": "Unsupported Item Type [{itemType}] for box item [{itemId}] with expiration", "30321": "Invalid item discount amount", "30322": "Bundle item [{itemId}] can't be bundled", "30323": "Target namespace is required", "30325": "Code item [{itemId}] can't be bundled", "30326": "Subscription item [{itemId}] can't be bundled", "30327": "Invalid item trial price", "30329": "Invalid bundled item [{itemId}] quantity", "30330": "Invalid item region price currency namespace [{namespace}]", "30332": "Invalid option box item [{itemId}] quantity", "30333": "Item [{itemId}] item type [{itemType}] can't be bundled into option box", "30334": "Option box item [{itemId}] can't be bundled", "30337": "Invalid loot box item [{itemId}] quantity", "30338": "Item [{itemId}] item type [{itemType}] can't be bundled into loot box", "30339": "Loot box item [{itemId}] can't be bundled", "30373": "ItemType [{itemType}] is not allowed in namespace [{namespace}]", "30376": "Publisher namespace don’t allow sellback item", "30377": "This item type [{itemType}] don’t allow sellback", "30378": "Sale price don’t allow real currency [{currencyCode}]", "30380": "Box item [{itemId}] duration and end date can’t be set at the same time", "30381": "Currency [{currency}] is not set for bundle Item [{itemId}] in region [{region}]", "30383": "Item app id [{appId}] already exists in namespace [{namespace}] item [{itemId}]", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [CREATE]" } }, "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;This API is used to sync an in game item in game namespace to publisher namespace, only INGAMEITEM, CODE, COINS and SEASON are supported\u0026lt;p\u0026gt;The synced item has an additional field targetItemId besides targetNamespace, mostly this item should not modified manually again. \u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncInGameItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/InGameItemSync" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30022\u003c/td\u003e\u003ctd\u003eDefault region [{region}] is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30324\u003c/td\u003e\u003ctd\u003eInvalid namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30373\u003c/td\u003e\u003ctd\u003eItemType [{itemType}] is not allowed in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync an in game item", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30021": "Default language [{language}] required", "30022": "Default region [{region}] is required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]", "30324": "Invalid namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30373": "ItemType [{itemType}] is not allowed in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/byAppId": { "get": { "description": "This API is used to get the item by appId.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the item with that appId\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getItemByAppId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "appId", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30342\u003c/td\u003e\u003ctd\u003eItem of appId [{appId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get item by appId", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30342": "Item of appId [{appId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/byCriteria": { "get": { "description": "This API is used to query items by criteria within a store.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryItems", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": false, "type": "string" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z , filter date include(purchaseAt, expireAt)", "in": "query", "name": "availableDate", "required": false, "type": "string" }, { "in": "query", "name": "baseAppId", "required": false, "type": "string" }, { "description": "category path", "in": "query", "name": "categoryPath", "required": false, "type": "string" }, { "description": "features, separate multiple value by commas parameter", "in": "query", "name": "features", "required": false, "type": "string" }, { "default": false, "description": "default is false, only available when search by category path, it will return all of the items(includes sub category path) under this category path", "in": "query", "name": "includeSubCategoryItem", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "exist in region", "in": "query", "name": "region", "required": false, "type": "string" }, { "default": [ "name:asc", "displayOrder:asc" ], "description": "default is name:asc,displayOrder:asc, allow values: [name, name:asc, name:desc, createdAt, createdAt:asc, createdAt:desc, updatedAt, updatedAt:asc, updatedAt:desc, displayOrder, displayOrder:asc, displayOrder:desc],and support sort group, eg: sortBy=name:asc,createdAt:desc. Make sure to always use more than one sort if the first sort is not an unique valuefor example, if you wish to sort by displayOrder, make sure to include other sort such as name or createdAt after the first sort, eg: displayOrder:asc,name:asc", "in": "query", "items": { "enum": [ "name", "name:asc", "name:desc", "createdAt", "createdAt:asc", "createdAt:desc", "updatedAt", "updatedAt:asc", "updatedAt:desc", "displayOrder", "displayOrder:asc", "displayOrder:desc" ], "type": "string" }, "name": "sortBy", "required": false, "type": "array", "uniqueItems": true }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" }, { "description": "tags, separate multiple value by commas parameter", "in": "query", "name": "tags", "required": false, "type": "string" }, { "description": "targetNamespace", "in": "query", "name": "targetNamespace", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query items by criteria", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/byFeatures/basic": { "get": { "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This API is used to list basic items by features.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of basic items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listBasicItemsByFeatures", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "collectionFormat": "multi", "description": "features", "in": "query", "items": { "type": "string" }, "name": "features", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/BasicItem" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List basic items by features", "tags": [ "Item" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/byIds": { "get": { "description": "This API is used to get items.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getItems", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "commas separated item ids", "in": "query", "name": "itemIds", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/FullItemInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get items", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/bySku": { "get": { "description": "This API is used to get the item by sku.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the item with sku\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getItemBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{sku}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get item by sku", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30343": "Item of sku [{sku}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/bySku/locale": { "get": { "description": "This API is used to get an item by sku in specific locale. If item not exist in specific region, default region item will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getLocaleItemBySku", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "default": false, "description": "whether populate bundled items if it's a bundle", "in": "query", "name": "populateBundle", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PopulatedItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{sku}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get an item by sku in locale", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30343": "Item of sku [{sku}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/estimatedPrice": { "get": { "consumes": [ "application/json" ], "description": "This API is used to get estimated prices of a flexible pricing bundle", "operationId": "getEstimatedPrice", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "commas separated item ids", "in": "query", "name": "itemIds", "required": true, "type": "string" }, { "in": "query", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "platform", "required": false, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "use published store id by default", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EstimatedPriceInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get estimated price", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" } } }, "/platform/admin/namespaces/{namespace}/items/itemId/bySku": { "get": { "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This API is used to get the itemId by sku.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the itemId with sku\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getItemIdBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemId" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{sku}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get itemId by sku", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30343": "Item of sku [{sku}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/itemId/bySkus": { "get": { "description": "This API is used to get an list of itemId by list of sku.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getBulkItemIdBySkus", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "collectionFormat": "multi", "description": "list of sku", "in": "query", "items": { "type": "string" }, "name": "sku", "required": false, "type": "array" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ItemId" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get multiple itemId by sku", "tags": [ "Item" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/locale/byIds": { "get": { "description": "This API is used to bulk get locale items. If item not exist in specific region, default region item will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "bulkGetLocaleItems", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "commas separated item ids", "in": "query", "name": "itemIds", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ItemInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk get locale items", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/predicate/types": { "get": { "description": "Get available predicate types.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: available predicate types\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getAvailablePredicateTypes", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/AvailablePredicate" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get available predicate types", "tags": [ "Item" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM[READ]" } } }, "/platform/admin/namespaces/{namespace}/items/purchase/conditions/validate": { "post": { "consumes": [ "application/json" ], "description": "This API is used to validate user purchase condition", "operationId": "validateItemPurchaseCondition", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemPurchaseConditionValidateRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ItemPurchaseConditionValidateResult" }, "type": "array" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Validate user purchase condition", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM[READ]" } } }, "/platform/admin/namespaces/{namespace}/items/regiondata": { "put": { "consumes": [ "application/json" ], "description": "This API is used to update region data of items in bulk \u0026lt;br /\u0026gt;", "operationId": "bulkUpdateRegionData", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/BulkRegionDataChangeRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30022\u003c/td\u003e\u003ctd\u003eDefault region [{region}] is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30321\u003c/td\u003e\u003ctd\u003eInvalid item discount amount\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30327\u003c/td\u003e\u003ctd\u003eInvalid item trial price\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30330\u003c/td\u003e\u003ctd\u003eInvalid item region price currency namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{sku}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update item's region data in bulk", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30022": "Default region [{region}] is required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30321": "Invalid item discount amount", "30327": "Invalid item trial price", "30330": "Invalid item region price currency namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30343": "Item of sku [{sku}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/search": { "get": { "description": "This API is used to search items by keyword in title, description and long description within a store.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "searchItems", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "keyword", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "default": "name:asc,createdAt:asc", "description": "default is name:asc,createdAt:asc, allow values: [name, name:asc, name:desc, createdAt, createdAt:asc, createdAt:desc, updatedAt, updatedAt:asc, updatedAt:desc, displayOrder, displayOrder:asc, displayOrder:desc],and support sort group, eg: sortBy=name:asc,createdAt:desc. Make sure to always use more than one sort if the first sort is not an unique valuefor example, if you wish to sort by displayOrder, make sure to include other sort such as name or createdAt after the first sort, eg: displayOrder:asc,name:asc", "in": "query", "name": "sortBy", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Search items by keyword", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/uncategorized": { "get": { "description": "This API is used to query uncategorized items within a store.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of uncategorized items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUncategorizedItems", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "default": [ "name:asc" ], "description": "default is name:asc, allow values: [name, name:asc, name:desc, createdAt, createdAt:asc, createdAt:desc, updatedAt, updatedAt:asc, updatedAt:desc, displayOrder, displayOrder:asc, displayOrder:desc],and support sort group, eg: sortBy=name:asc,createdAt:desc Make sure to always use more than one sort if the first sort is not an unique valuefor example, if you wish to sort by displayOrder, make sure to include other sort such as name or createdAt after the first sort, eg: displayOrder:asc,name:asc", "in": "query", "items": { "enum": [ "name", "name:asc", "name:desc", "createdAt", "createdAt:asc", "createdAt:desc", "updatedAt", "updatedAt:asc", "updatedAt:desc", "displayOrder", "displayOrder:asc", "displayOrder:desc" ], "type": "string" }, "name": "sortBy", "required": false, "type": "array", "uniqueItems": true }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query uncategorized items", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}": { "delete": { "description": "This API is used to delete an item permanently.\u0026lt;p\u0026gt;force: the default value should be: false. When the value is: \u0026lt;li\u0026gt;\u0026lt;i\u0026gt;false:\u0026lt;i\u0026gt;only the items in the draft store that have never been published yet can be removed.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;true:\u0026lt;i\u0026gt;the item in the draft store(even been published before) can be removed.\u0026lt;/li\u0026gt;", "operationId": "deleteItem", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "collectionFormat": "multi", "description": "default is empty list", "in": "query", "items": { "enum": [ "CAMPAIGN", "CATALOG", "DLC", "ENTITLEMENT", "IAP", "REWARD" ], "type": "string" }, "name": "featuresToCheck", "required": false, "type": "array" }, { "default": false, "description": "default is false", "in": "query", "name": "force", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete item successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30335\u003c/td\u003e\u003ctd\u003eItem [{itemId}] can't be deleted in non-forced mode if item has been published\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30386\u003c/td\u003e\u003ctd\u003eThe item [{itemId}] is currently associated and cannot be deleted in namespace [{namespace}], Feature {featureName}, Module {moduleName}, and Reference ID {referenceId} are using this item ID\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete an item", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30335": "Item [{itemId}] can't be deleted in non-forced mode if item has been published", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30386": "The item [{itemId}] is currently associated and cannot be deleted in namespace [{namespace}], Feature {featureName}, Module {moduleName}, and Reference ID {referenceId} are using this item ID" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [DELETE]" } }, "get": { "description": "This API is used to get an item.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getItem", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get an item", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to update an item.\u0026lt;p\u0026gt;An item update example:\u0026lt;p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code\u0026gt;{\r\n\t\u0026#34;categoryPath\u0026#34;: \u0026#34;/games\u0026#34;,\r\n\t\u0026#34;localizations\u0026#34;: \\{\r\n \u0026#34;en\u0026#34;: \\{\r\n \u0026#34;title\u0026#34;:\u0026#34;required\u0026#34;,\r\n \u0026#34;description\u0026#34;:\u0026#34;optional\u0026#34;,\r\n \u0026#34;longDescription\u0026#34;:\u0026#34;optional\u0026#34;,\r\n \u0026#34;localExt\u0026#34;: \\{\r\n \u0026#34;properties\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\],\r\n \u0026#34;functions\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\]\r\n \\}\r\n \\}\r\n \\},\r\n \u0026#34;images\u0026#34;: \\[\r\n \\{\r\n \u0026#34;as\u0026#34;:\u0026#34;optional, image for\u0026#34;,\r\n \u0026#34;caption\u0026#34;:\u0026#34;optional\u0026#34;,\r\n \u0026#34;height\u0026#34;:10,\r\n \u0026#34;width\u0026#34;:10,\r\n \u0026#34;imageUrl\u0026#34;:\u0026#34;http://img-url-required\u0026#34;,\r\n \u0026#34;smallImageUrl\u0026#34;:\u0026#34;http://small-img-url-required\u0026#34;\r\n \\}\r\n \\],\r\n \u0026#34;thumbnailUrl\u0026#34;: \u0026#34;optional, thumbnail url\u0026#34;,\r\n \u0026#34;status\u0026#34;: \u0026#34;ACTIVE\u0026#34;,\r\n \u0026#34;listable\u0026#34;: true,\r\n \u0026#34;purchasable\u0026#34;: true,\r\n \u0026#34;itemType\u0026#34;: \u0026#34;APP(allowed: [APP,COINS,INGAMEITEM,CODE,BUNDLE])\u0026#34;,\r\n \u0026#34;name\u0026#34;: \u0026#34;optional\u0026#34;,\r\n \u0026#34;entitlementType\u0026#34;: \u0026#34;DURABLE(allowed:[DURABLE,CONSUMABLE], should be CONSUMABLE when item type is COINS)\u0026#34;, \r\n \u0026#34;useCount\u0026#34;: 1(optional, required if the entitlement type is consumable),\r\n \u0026#34;stackable\u0026#34;: false,\r\n \u0026#34;appId\u0026#34;: \u0026#34;optional, required if itemType is APP\u0026#34;,\r\n \u0026#34;baseAppId\u0026#34;: \u0026#34;optional, set value of game app id if you want to link to a game\u0026#34;,\r\n \u0026#34;appType\u0026#34;: \u0026#34;GAME(optional, required if itemType is APP)\u0026#34;,\r\n \u0026#34;seasonType\u0026#34;: \u0026#34;PASS(optional, required if itemType is SEASON)\u0026#34;,\r\n \u0026#34;sku\u0026#34;: \u0026#34;optional, commonly unique item code\u0026#34;,\r\n \u0026#34;targetCurrencyCode\u0026#34;: \u0026#34;optional, required if itemType is COINS\u0026#34;,\r\n \u0026#34;targetNamespace\u0026#34;: \u0026#34;optional, required when itemType is INGAMEITEM, the targetNamespace will only take effect when the item\r\n created belongs to the publisher namespace\u0026#34;,\r\n \u0026#34;regionData\u0026#34;: \\{\r\n \u0026#34;US(store\u0026#39;s default region is required)\u0026#34;: \\[\r\n \\{\r\n \u0026#34;price\u0026#34;:10,\r\n \u0026#34;discountPercentage\u0026#34;:0(integer, optional, range[0,100], discountedPrice = price\\*((100 - discountPercentage) \\* 0.01),\r\n if it is not 0, will use it to calculate discounted price),\r\n \u0026#34;discountAmount\u0026#34;:0(integer, optional, range[0,itemPrice], will use it to calculate discounted price if discountPercentage is 0),\r\n \u0026#34;currencyCode\u0026#34;:\u0026#34;code(required, example: USD)\u0026#34;,\r\n \u0026#34;currencyNamespace\u0026#34;:\u0026#34;test-ns-required(allow publisher namespace if namespace is publisher namespace, allow publisher and game namespace if namespace is not publisher namespace)\u0026#34;,\r\n \u0026#34;trialPrice\u0026#34;:5(required while fixedTrialCycles set, should \u0026gt;=0 and \u0026lt;= price, will same as price if not present),\r\n \u0026#34;purchaseAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;,\r\n \u0026#34;expireAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;,\r\n \u0026#34;discountPurchaseAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;,\r\n \u0026#34;discountExpireAt\u0026#34;:\u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;\r\n \\}\r\n \\]\r\n \\},\r\n \u0026#34;itemIds\u0026#34;: \\[\r\n \u0026#34;itemId\u0026#34;\r\n \\],\r\n \u0026#34;itemQty\u0026#34;: \\{\r\n \u0026#34;itemId\u0026#34;:1\r\n \\},\r\n \u0026#34;recurring\u0026#34;: \\{\r\n \u0026#34;cycle\u0026#34;:\u0026#34;MONTHLY(allowed: [WEEKLY,MONTHLY,QUARTERLY,YEARLY])\u0026#34;,\r\n \u0026#34;fixedFreeDays\u0026#34;:0(integer, fixed free days, 0 means not set),\r\n \u0026#34;fixedTrialCycles\u0026#34;:0(integer, fixed trial cycles, 0 means not set, will not take effect if fixedFreeDays set),\r\n \u0026#34;graceDays\u0026#34;:7(integer, recurring grace days, retry recurring charge within configured days if charge fail, default 7)\r\n \\},\r\n \u0026#34;tags\u0026#34;: \\[\r\n \u0026#34;exampleTag24\u0026#34;\r\n \\],\r\n \u0026#34;features\u0026#34;: \\[\r\n \u0026#34;feature\u0026#34;\r\n \\],\r\n \u0026#34;clazz\u0026#34;: \u0026#34;weapon\u0026#34;,\r\n \u0026#34;boothName\u0026#34;: \u0026#34;C_campaign1\u0026#34;,\r\n \u0026#34;displayOrder\u0026#34;: 1000,\r\n \u0026#34;ext\u0026#34;: \\{\r\n \u0026#34;properties\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\],\r\n \u0026#34;functions\u0026#34;:\\[\r\n \\{\r\n \u0026#34;key1\u0026#34;:\u0026#34;value1\u0026#34;,\r\n \u0026#34;key2\u0026#34;:\u0026#34;value2\u0026#34;\r\n \\}\r\n \\]\r\n \\},\r\n \u0026#34;maxCountPerUser\u0026#34;: 1(integer, optional, -1 means UNLIMITED),\r\n \u0026#34;maxCount\u0026#34;: 1(integer, optional, -1 means UNLIMITED, new value should \u0026gt;= old value if both old value and new value is\r\n limited, unset when item type is CODE)\r\n}\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for item extension and localization extension\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "updateItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemUpdate" } }, { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003eunsupported operation\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30301\u003c/td\u003e\u003ctd\u003eUnsupported Item Type [{itemType}] for box item [{itemId}] with expiration\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30322\u003c/td\u003e\u003ctd\u003eBundle item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30325\u003c/td\u003e\u003ctd\u003eCode item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30326\u003c/td\u003e\u003ctd\u003eSubscription item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30329\u003c/td\u003e\u003ctd\u003eInvalid bundled item [{itemId}] quantity\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30321\u003c/td\u003e\u003ctd\u003eInvalid item discount amount\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30022\u003c/td\u003e\u003ctd\u003eDefault region [{region}] is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30323\u003c/td\u003e\u003ctd\u003eTarget namespace is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30327\u003c/td\u003e\u003ctd\u003eInvalid item trial price\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30330\u003c/td\u003e\u003ctd\u003eInvalid item region price currency namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30332\u003c/td\u003e\u003ctd\u003eInvalid option box item [{itemId}] quantity\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30333\u003c/td\u003e\u003ctd\u003eItem [{itemId}] item type [{itemType}] can't be bundled into option box\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30334\u003c/td\u003e\u003ctd\u003eOption box item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30337\u003c/td\u003e\u003ctd\u003eInvalid loot box item [{itemId}] quantity\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30338\u003c/td\u003e\u003ctd\u003eItem [{itemId}] item type [{itemType}] can't be bundled into loot box\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30339\u003c/td\u003e\u003ctd\u003eLoot box item [{itemId}] can't be bundled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30371\u003c/td\u003e\u003ctd\u003eItem maxCount not allow reduce\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30372\u003c/td\u003e\u003ctd\u003eItemType is not updatable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30175\u003c/td\u003e\u003ctd\u003eDuplicated currencyCode [{currencyCode}] in Region [{region}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30374\u003c/td\u003e\u003ctd\u003eItem sku [{sku}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30376\u003c/td\u003e\u003ctd\u003ePublisher namespace don’t allow sellback item\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30377\u003c/td\u003e\u003ctd\u003eThis item type [{itemType}] don’t allow sellback\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30378\u003c/td\u003e\u003ctd\u003eSale price don’t allow real currency [{currencyCode}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30379\u003c/td\u003e\u003ctd\u003eItem sku is not updatable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30380\u003c/td\u003e\u003ctd\u003eBox item [{itemId}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30381\u003c/td\u003e\u003ctd\u003eCurrency [{currency}] is not set for bundle Item [{itemId}] in region [{region}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30383\u003c/td\u003e\u003ctd\u003eItem app id [{appId}] already exists in namespace [{namespace}] item [{itemId}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update an item", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "20024": "unsupported operation", "30021": "Default language [{language}] required", "30022": "Default region [{region}] is required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30175": "Duplicated currencyCode [{currencyCode}] in Region [{region}]", "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]", "30301": "Unsupported Item Type [{itemType}] for box item [{itemId}] with expiration", "30321": "Invalid item discount amount", "30322": "Bundle item [{itemId}] can't be bundled", "30323": "Target namespace is required", "30325": "Code item [{itemId}] can't be bundled", "30326": "Subscription item [{itemId}] can't be bundled", "30327": "Invalid item trial price", "30329": "Invalid bundled item [{itemId}] quantity", "30330": "Invalid item region price currency namespace [{namespace}]", "30332": "Invalid option box item [{itemId}] quantity", "30333": "Item [{itemId}] item type [{itemType}] can't be bundled into option box", "30334": "Option box item [{itemId}] can't be bundled", "30337": "Invalid loot box item [{itemId}] quantity", "30338": "Item [{itemId}] item type [{itemType}] can't be bundled into loot box", "30339": "Loot box item [{itemId}] can't be bundled", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30371": "Item maxCount not allow reduce", "30372": "ItemType is not updatable", "30374": "Item sku [{sku}] already exists in namespace [{namespace}]", "30376": "Publisher namespace don’t allow sellback item", "30377": "This item type [{itemType}] don’t allow sellback", "30378": "Sale price don’t allow real currency [{currencyCode}]", "30379": "Item sku is not updatable", "30380": "Box item [{itemId}] duration and end date can’t be set at the same time", "30381": "Currency [{currency}] is not set for bundle Item [{itemId}] in region [{region}]", "30383": "Item app id [{appId}] already exists in namespace [{namespace}] item [{itemId}]", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/acquire": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This api is used for acquiring a published item while the item is maxCount limited, it will decrease the sale available count.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: acquire result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "acquireItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemAcquireRequest" } }, { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemAcquireResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Acquire item", "tags": [ "Item" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/app": { "get": { "description": "This API is used to get an app info.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: app data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getApp", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullAppInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get an app info", "tags": [ "Item" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to update an app.\u0026lt;p\u0026gt;An app update example:\u0026lt;p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code\u0026gt;{\r\n \u0026#34;developer\u0026#34;: \u0026#34;accelbyte\u0026#34;,\r\n \u0026#34;publisher\u0026#34;: \u0026#34;accelbyte\u0026#34;,\r\n \u0026#34;websiteUrl\u0026#34;: \u0026#34;http://accelbyte.io\u0026#34;,\r\n \u0026#34;forumUrl\u0026#34;: \u0026#34;http://accelbyte.io\u0026#34;,\r\n \u0026#34;platforms\u0026#34;: \\[\u0026#34;Windows(allowed values: Windows, MacOS, Linux, IOS, Android)\u0026#34;\\],\r\n \u0026#34;platformRequirements\u0026#34;: \\{\r\n \u0026#34;Windows\u0026#34;: \\[\r\n \\{\r\n \u0026#34;label\u0026#34;:\u0026#34;minimum(can be minimum or recommended)\u0026#34;,\r\n \u0026#34;osVersion\u0026#34;:\u0026#34;os version\u0026#34;,\r\n \u0026#34;processor\u0026#34;:\u0026#34;processor\u0026#34;,\r\n \u0026#34;ram\u0026#34;:\u0026#34;RAM\u0026#34;,\r\n \u0026#34;graphics\u0026#34;:\u0026#34;graphics\u0026#34;,\r\n \u0026#34;directXVersion\u0026#34;:\u0026#34;directXVersion\u0026#34;,\r\n \u0026#34;diskSpace\u0026#34;:\u0026#34;diskSpace\u0026#34;,\r\n \u0026#34;soundCard\u0026#34;:\u0026#34;soundCard\u0026#34;,\r\n \u0026#34;additionals\u0026#34;:\u0026#34;additionals\u0026#34;\r\n \\}\r\n \\]\r\n \\},\r\n \u0026#34;carousel\u0026#34;: \\[\r\n \\{\r\n \u0026#34;type\u0026#34;:\u0026#34;image(allowed values: image, video)\u0026#34;,\r\n \u0026#34;videoSource\u0026#34;:\u0026#34;generic(allowed values:generic, youtube, viemo)\u0026#34;,\r\n \u0026#34;url\u0026#34;:\u0026#34;url\u0026#34;,\r\n \u0026#34;alt\u0026#34;:\u0026#34;alternative url or text\u0026#34;,\r\n \u0026#34;thumbnailUrl\u0026#34;:\u0026#34;thumbnail url\u0026#34;,\r\n \u0026#34;previewUrl\u0026#34;:\u0026#34;preview url\u0026#34;,\r\n \\}\r\n \\],\r\n \u0026#34;localizations\u0026#34;: \\{\r\n \u0026#34;en\u0026#34;: \\{\r\n \u0026#34;slogan\u0026#34;:\u0026#34;slogan\u0026#34;,\r\n \u0026#34;announcement\u0026#34;:\u0026#34;announcement\u0026#34;,\r\n \\}\r\n \\},\r\n \u0026#34;primaryGenre\u0026#34;: \u0026#34;Action\u0026#34;,\r\n \u0026#34;genres\u0026#34;: \\[\u0026#34;Action\u0026#34;, \u0026#34;Adventure\u0026#34;\\],\r\n \u0026#34;players\u0026#34;: \\[\u0026#34;Single\u0026#34;\\],\r\n \u0026#34;releaseDate\u0026#34;: \u0026#34;optional yyyy-MM-dd\u0026#39;T\u0026#39;HH:mm:ss.SSS\u0026#39;Z\u0026#39;\u0026#34;\r\n}\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated app data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateApp", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AppUpdate" } }, { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullAppInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctdErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update an app", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30173": "Published store can't modify content", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/disable": { "put": { "consumes": [ "application/json" ], "description": "Disable an item.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated item\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "disableItem", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/ChangeStatusItemRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30387\u003c/td\u003e\u003ctd\u003eThe item [{itemId}] is currently associated and cannot be disabled in namespace [{namespace}], Feature {featureName}, Module {moduleName}, and Reference ID {referenceId} are using this item ID\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Disable an item", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30387": "The item [{itemId}] is currently associated and cannot be disabled in namespace [{namespace}], Feature {featureName}, Module {moduleName}, and Reference ID {referenceId} are using this item ID" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/dynamic": { "get": { "description": "Get item dynamic data for published item.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item dynamic data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getItemDynamicData", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemDynamicDataInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get item dynamic data", "tags": [ "Item" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/enable": { "put": { "consumes": [ "application/json" ], "description": "Enable an item.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated item\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "enableItem", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Enable an item", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/features/{feature}": { "delete": { "consumes": [ "application/json" ], "description": "Remove a feature from an item.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated item\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "defeatureItem", "parameters": [ { "in": "path", "name": "feature", "required": true, "type": "string" }, { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Defeature an item", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } }, "put": { "consumes": [ "application/json" ], "description": "Add a feature to an item.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated item\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "featureItem", "parameters": [ { "in": "path", "name": "feature", "required": true, "type": "string" }, { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Feature an item", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/locale": { "get": { "description": "This API is used to get an item in specific locale. If item not exist in specific region, default region item will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getLocaleItem", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "default": false, "description": "whether populate bundled items if it's a bundle", "in": "query", "name": "populateBundle", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PopulatedItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get an item in locale", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/purchase/condition": { "put": { "consumes": [ "application/json" ], "description": "This API is used to update item purchase condition", "operationId": "updateItemPurchaseCondition", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PurchaseConditionUpdate" } }, { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30331\u003c/td\u003e\u003ctd\u003eInvalid purchase condition\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update item purchase condition", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30331": "Invalid purchase condition", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/references": { "get": { "description": "This API is used to get references for an item", "operationId": "queryItemReferences", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "collectionFormat": "multi", "description": "default is empty list", "in": "query", "items": { "enum": [ "CAMPAIGN", "CATALOG", "DLC", "ENTITLEMENT", "IAP", "REWARD" ], "type": "string" }, "name": "featuresToCheck", "required": false, "type": "array" }, { "description": "use published store id by default", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemDependency" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get item references", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/admin/namespaces/{namespace}/items/{itemId}/return": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This api is used for returning a published item while the item is maxCount limited, it will increase the sale available count if orderNo already acquired.", "operationId": "returnItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemReturnRequest" } }, { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Return item successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Return item", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/keygroups": { "get": { "description": "Query key groups, if name is presented, it\u0026#39;s fuzzy match.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: slice of key group\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryKeyGroups", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "in": "query", "name": "name", "required": false, "type": "string" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "tag", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/KeyGroupPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query key groups", "tags": [ "KeyGroup" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Create key group.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created key group\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createKeyGroup", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/KeyGroupCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/KeyGroupInfo" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37271\u003c/td\u003e\u003ctd\u003eKey group [{name}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create key group", "tags": [ "KeyGroup" ], "x-errorCodes": { "20002": "validation error", "37271": "Key group [{name}] already exists in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/keygroups/byBoothName": { "get": { "deprecated": true, "description": "Get key group.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: key group info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getKeyGroupByBoothName", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "boothName", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/KeyGroupInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37041\u003c/td\u003e\u003ctd\u003eTicket booth [{boothName}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get key group by booth name", "tags": [ "KeyGroup" ], "x-errorCodes": { "37041": "Ticket booth [{boothName}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [READ]" } } }, "/platform/admin/namespaces/{namespace}/keygroups/{keyGroupId}": { "get": { "description": "Get key group.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: key group info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getKeyGroup", "parameters": [ { "in": "path", "name": "keyGroupId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/KeyGroupInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37241\u003c/td\u003e\u003ctd\u003eKey group [{keyGroupId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get key group", "tags": [ "KeyGroup" ], "x-errorCodes": { "37241": "Key group [{keyGroupId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update key group.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated key group\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateKeyGroup", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/KeyGroupUpdate" } }, { "in": "path", "name": "keyGroupId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/KeyGroupInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37241\u003c/td\u003e\u003ctd\u003eKey group [{keyGroupId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37271\u003c/td\u003e\u003ctd\u003eKey group [{name}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update key group", "tags": [ "KeyGroup" ], "x-errorCodes": { "20002": "validation error", "37241": "Key group [{keyGroupId}] does not exist in namespace [{namespace}]", "37271": "Key group [{name}] already exists in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/keygroups/{keyGroupId}/dynamic": { "get": { "description": "Get key group dynamic.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: key group info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getKeyGroupDynamic", "parameters": [ { "in": "path", "name": "keyGroupId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/KeyGroupDynamicInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37241\u003c/td\u003e\u003ctd\u003eKey group [{keyGroupId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get key group dynamic", "tags": [ "KeyGroup" ], "x-errorCodes": { "37241": "Key group [{keyGroupId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [READ]" } } }, "/platform/admin/namespaces/{namespace}/keygroups/{keyGroupId}/keys": { "get": { "description": "This API is used to list keys of a key group.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: keys\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listKeys", "parameters": [ { "in": "path", "name": "keyGroupId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "ACQUIRED", "ACTIVE" ], "in": "query", "name": "status", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/KeyPagingSliceResult" } } }, "security": [ { "authorization": [] } ], "summary": "List keys of a key group", "tags": [ "KeyGroup" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [READ]" } }, "post": { "consumes": [ "multipart/form-data" ], "description": "This API is used to upload keys with csv format to a key group.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "uploadKeys", "parameters": [ { "in": "path", "name": "keyGroupId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkOperationResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37221\u003c/td\u003e\u003ctd\u003eInvalid key file\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37241\u003c/td\u003e\u003ctd\u003eKey group [{keyGroupId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Upload keys to key group", "tags": [ "KeyGroup" ], "x-errorCodes": { "37221": "Invalid key file", "37241": "Key group [{keyGroupId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:KEYGROUP [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/orders": { "get": { "description": "Query orders.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: query orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryOrders", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "endTime", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "orderNos", "required": false, "type": "array" }, { "default": "createdTime:desc", "description": "default is createdTime:desc, support sort group, e.g. sortBy=status:asc,createdTime:desc", "in": "query", "name": "sortBy", "required": false, "type": "string" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "startTime", "required": false, "type": "string" }, { "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CLOSED", "DELETED", "FULFILLED", "FULFILL_FAILED", "INIT", "REFUNDED", "REFUNDING", "REFUND_FAILED" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "default": false, "description": "return total in slice result when true", "in": "query", "name": "withTotal", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderPagingResult" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query orders", "tags": [ "Order" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/orders/stats": { "get": { "description": "Get Order Statistics.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: order statistics\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getOrderStatistics", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderStatistics" } } }, "security": [ { "authorization": [] } ], "summary": "Get Order Statistics", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/orders/{orderNo}": { "get": { "description": "Get order by orderNo.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: order instance\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get order", "tags": [ "Order" ], "x-errorCodes": { "32141": "Order [{orderNo}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/orders/{orderNo}/refund": { "put": { "consumes": [ "application/json" ], "description": "Refund order by orderNo.", "operationId": "refundOrder", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/OrderRefundCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32171\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] is not refundable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Refund order", "tags": [ "Order" ], "x-errorCodes": { "20002": "validation error", "32141": "Order [{orderNo}] does not exist", "32171": "Order [{orderNo}] is not refundable" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ORDER [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/payment/config/callback": { "get": { "deprecated": true, "description": "\u0026lt;h3\u0026gt;The endpoint is going to be deprecated \u0026lt;/h3\u0026gt;\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment callback configuration.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment callback config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentCallbackConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentCallbackConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33243\u003c/td\u003e\u003ctd\u003ePayment callback config for [{namespace}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get payment callback configuration", "tags": [ "PaymentCallbackConfig" ], "x-errorCodes": { "33243": "Payment callback config for [{namespace}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "\u0026lt;h3\u0026gt;The endpoint is going to be deprecated \u0026lt;/h3\u0026gt;\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update payment callback configuration.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment callback config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePaymentCallbackConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentCallbackConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentCallbackConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update payment callback configuration", "tags": [ "PaymentCallbackConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/payment/config/domains": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment domain whitelist config by namespace.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment domain whitelist config info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentMerchantConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentDomainWhitelistConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get payment domain whitelist config", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update payment provider config by namespace.\u0026lt;br\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Parameters:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;domains\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;list of domains to whitelist for the return URL.\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Validation\u0026lt;/i\u0026gt;: the domain should include the protocol (http/https), but the whitelist check will only compare the host part (www.example.com)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment domain whitelist config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePaymentDomainWhitelistConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentDomainWhitelistConfigEdit" } }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentDomainWhitelistConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update payment domain whitelist config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/payment/notifications": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Query payment notifications.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment notifications\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryPaymentNotifications", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z", "in": "query", "name": "endDate", "required": false, "type": "string" }, { "in": "query", "name": "externalId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "in": "query", "name": "notificationSource", "required": false, "type": "string" }, { "in": "query", "name": "notificationType", "required": false, "type": "string" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "paymentOrderNo", "required": false, "type": "string" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z", "in": "query", "name": "startDate", "required": false, "type": "string" }, { "enum": [ "ERROR", "IGNORED", "PROCESSED", "WARN" ], "in": "query", "name": "status", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentNotificationPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query payment notifications", "tags": [ "Payment" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT:NOTIFICATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/payment/orders": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Query payment orders.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: query payment orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryPaymentOrders", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "EXTERNAL", "INTERNAL" ], "in": "query", "name": "channel", "required": false, "type": "string" }, { "in": "query", "name": "extTxId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "AUTHORISED", "AUTHORISE_FAILED", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CHARGE_FAILED", "DELETED", "INIT", "NOTIFICATION_OF_CHARGEBACK", "REFUNDED", "REFUNDING", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "in": "query", "name": "status", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query payment orders", "tags": [ "Payment" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;\u0026lt;p\u0026gt;This API is used to create payment order from non justice service. e.g. from dedicated server, the result contains the payment station url.\u0026lt;/p\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Path Parameter:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Namespace that payment order resides in, should be publisher namespace if it\u0026#39;s a Steam like platform that share \u0026lt;br\u0026gt;payment config cross namespaces, otherwise it\u0026#39;s the game namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Parameters:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;extOrderNo\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;External order number, it should be unique in invoker order system\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;sku\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Item identity\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;targetNamespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The game namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;targetUserId\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;User id for the order owner in game namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;extUserId\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;External user id, can be user character id \u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;price\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;price which should be greater than 0\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;title\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Item title\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;description\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Item description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencyCode\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency code, default is USD\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencyNamespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency namespace, default is publisher namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;region\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Country of the user, will get from user info if not present\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;language\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Language of the user\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;sandbox\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Boolean\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;set to true will create sandbox order that not real paid for xsolla/alipay and will not validate \u0026lt;br\u0026gt;price for wxpay.\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;returnUrl\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;customized return url for redirect once payment finished, leave unset to use configuration in \u0026lt;br\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;notifyUrl\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;customized notify url for payment web hook, leave unset to use configuration in namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;customParameters\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Custom parameters\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Example:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code style=\u0026#39;overflow: auto\u0026#39;\u0026gt;{\r\n \u0026#34;extOrderNo\u0026#34;: \u0026#34;123456789\u0026#34;,\n \u0026#34;sku\u0026#34;: \u0026#34;sku\u0026#34;,\n \u0026#34;targetNamespace\u0026#34;: \u0026#34;game1\u0026#34;,\n \u0026#34;targetUserId\u0026#34;: \u0026#34;94451623768940d58416ca33ca767ec3\u0026#34;,\n \u0026#34;extUserId\u0026#34;: \u0026#34;678\u0026#34;,\n \u0026#34;title\u0026#34;: \u0026#34;Frostmourne\u0026#34;,\n \u0026#34;description\\\u0026#34;: \u0026#34;Here was power. Here was despair\u0026#34;,\n \u0026#34;price\u0026#34;: 100,\n \u0026#34;region\u0026#34;: \u0026#34;CN\u0026#34;, \n \u0026#34;language\u0026#34;: \u0026#34;zh-CN\u0026#34;, \n \u0026#34;currencyCode\u0026#34;: \u0026#34;USD\u0026#34;,\n \u0026#34;currencyNamespace\u0026#34;: \u0026#34;accelbyte\u0026#34;\r\n}\u0026lt;/pre\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;h4\u0026gt;Payment Notification:\u0026lt;/h4\u0026gt;\u0026lt;p\u0026gt;After user complete the payment, it will send notification to configured web hook, http status code should return 200 or 204 once you resolve notification successfully, otherwise payment system will retry notification in interval\u0026lt;/p\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Payment notification parameter:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;payload\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment notification payload in json string \u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;sign\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;sha1 hex signature for payload and private key\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Payment notification parameter Example:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code style=\u0026#39;overflow: auto\u0026#39;\u0026gt;{\r\n \u0026#34;payload\u0026#34;: \u0026#34;{\n \\\u0026#34;type\\\u0026#34;: \\\u0026#34;payment\\\u0026#34;,\n \\\u0026#34;nonceStr\\\u0026#34;: \\\u0026#34;34c1dcf3eb58455eb161465bbfc0b590\\\u0026#34;,\n \\\u0026#34;paymentOrderNo\\\u0026#34;: \\\u0026#34;18081239088\\\u0026#34;,\n \\\u0026#34;namespace\\\u0026#34;: \\\u0026#34;accelbyte\\\u0026#34;,\n \\\u0026#34;targetNamespace\\\u0026#34;: \\\u0026#34;game1\\\u0026#34;,\n \\\u0026#34;targetUserId\\\u0026#34;: \\\u0026#34;94451623768940d58416ca33ca767ec3\\\u0026#34;,\n \\\u0026#34;extOrderNo\\\u0026#34;: \\\u0026#34;123456789\\\u0026#34;,\n \\\u0026#34;sku\\\u0026#34;: \\\u0026#34;sku\\\u0026#34;,\n \\\u0026#34;extUserId\\\u0026#34;: \\\u0026#34;678\\\u0026#34;,\n \\\u0026#34;price\\\u0026#34;: 100,\n \\\u0026#34;paymentProvider\\\u0026#34;: \\\u0026#34;XSOLLA\\\u0026#34;,\n \\\u0026#34;vat\\\u0026#34;: 0,\n \\\u0026#34;salesTax\\\u0026#34;: 0,\n \\\u0026#34;paymentProviderFee\\\u0026#34;: 0,\n \\\u0026#34;paymentMethodFee\\\u0026#34;: 0,\n \\\u0026#34;currency\\\u0026#34;: {\n \\\u0026#34;currencyCode\\\u0026#34;: \\\u0026#34;USD\\\u0026#34;,\n \\\u0026#34;currencySymbol\\\u0026#34;: \\\u0026#34;$\\\u0026#34;,\n \\\u0026#34;currencyType\\\u0026#34;: \\\u0026#34;REAL\\\u0026#34;,\n \\\u0026#34;namespace\\\u0026#34;: \\\u0026#34;accelbyte\\\u0026#34;,\n \\\u0026#34;decimals\\\u0026#34;: 2\n },\n \\\u0026#34;status\\\u0026#34;: \\\u0026#34;CHARGED\\\u0026#34;,\n \\\u0026#34;createdTime\\\u0026#34;: \\\u0026#34;2018-07-28T00:39:16.274Z\\\u0026#34;,\n \\\u0026#34;chargedTime\\\u0026#34;: \\\u0026#34;2018-07-28T00:39:16.274Z\\\u0026#34;\n }\u0026#34;,\r\n \u0026#34;sign\u0026#34;:\u0026#34;e31fb92516cc9faaf50ad70343e1293acec6f3d5\u0026#34;\r\n}\u0026lt;/pre\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Payment notification payload parameter list:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Notification type: \u0026#39;payment\u0026#39;\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentOrderNo\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment system generated order number\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;extOrderNo\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;External order number that passed by invoker\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Namespace that related payment order resides in\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;targetNamespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The game namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;targetUserId\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The user id in game namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;sku\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Item identify, it will return if pass it when create payment\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;extUserId\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;External user id, can be character id, it will return if pass it when create payment\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;price\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Price of item\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentProvider\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment provider, allowed values: xsolla/alipay/wxpay/wallet\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;vat\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order VAT\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;salesTax\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order sales tax\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentProviderFee\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment provider fee\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentMethodFee\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment method fee\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currency\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Map\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order currency info\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;status\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order status\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;statusReason\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order status reason\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;createdTime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Datetime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The time of the order created\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;chargedTime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Datetime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The time of the order charged\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;customParameters\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Map\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;custom parameters, will return if pass it when create payment\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;nonceStr\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Random string, max length is 32, can be timestamp or uuid\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Currency info parameter list:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencyCode\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency Code\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencySymbol\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency Symbol\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencyType\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency type(REAL/VIRTUAL)\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;decimals\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency decimals\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;h4\u0026gt;Encryption Rule:\u0026lt;/h4\u0026gt;\u0026lt;p\u0026gt;Concat payload json string and private key and then do sha1Hex.\u0026lt;/p\u0026gt;\u0026lt;h4\u0026gt;Other detail info:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Token type\u0026lt;/i\u0026gt;: client token\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission(user with this permission will create sandbox order)\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1 (CREATE)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;It will be forbidden while the target user is banned: PAYMENT_INITIATE or ORDER_AND_PAYMENT\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;b\u0026gt;cross namespace allowed\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created payment order info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createPaymentOrderByDedicated", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ExternalPaymentOrderCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderCreateResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33121\u003c/td\u003e\u003ctd\u003eRecurring payment failed with code: [{errorCode}] and message: [{errorMessage}] by provider: [{provider}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33122\u003c/td\u003e\u003ctd\u003eSubscription not match when create payment order\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20016\u003c/td\u003e\u003ctd\u003eaction is banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33145\u003c/td\u003e\u003ctd\u003eRecurring token not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser [{userId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33173\u003c/td\u003e\u003ctd\u003eExtOrderNo [{extOrderNo}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create payment order by dedicated server", "tags": [ "Payment(Dedicated)" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "20008": "user [{userId}] does not exist in namespace [{namespace}]", "20016": "action is banned", "33121": "Recurring payment failed with code: [{errorCode}] and message: [{errorMessage}] by provider: [{provider}]", "33122": "Subscription not match when create payment order", "33141": "Payment Order [{paymentOrderNo}] does not exist", "33145": "Recurring token not found", "33173": "ExtOrderNo [{extOrderNo}] already exists in namespace [{namespace}]", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/payment/orders/byExtTxId": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;List external order No by external transaction id.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listExtOrderNoByExtTxId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "extTxId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "type": "string" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List external order No by external transaction id", "tags": [ "Payment" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/payment/orders/{paymentOrderNo}": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment order by paymentOrderNo.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment order instance\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get payment order", "tags": [ "Payment" ], "x-errorCodes": { "33141": "Payment Order [{paymentOrderNo}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;\u0026lt;b\u0026gt;[TEST FACILITY ONLY] Forbidden in live environment. \u0026lt;/b\u0026gt; Charge payment order without payment flow for unpaid payment order, usually for test usage to simulate real currency payment process.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment order instance\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "chargePaymentOrder", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentOrderChargeRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33322\u003c/td\u003e\u003ctd\u003ePayment provider [{paymentProvider}] not supported\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33171\u003c/td\u003e\u003ctd\u003eInvalid payment order status [{status}] for payment order [{paymentOrderNo}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Charge payment order without payment flow", "tags": [ "Payment" ], "x-errorCodes": { "33141": "Payment Order [{paymentOrderNo}] does not exist", "33171": "Invalid payment order status [{status}] for payment order [{paymentOrderNo}]", "33322": "Payment provider [{paymentProvider}] not supported" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/payment/orders/{paymentOrderNo}/refund": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;\u0026lt;p\u0026gt;This API is used to refund payment order by paymentOrderNo from non justice service. e.g. dedicated server. \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;if the status field of response json is \u0026#34;REFUNDED\u0026#34;, usually wallet paid, it indicates payment order already refunded\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;if the status field of response json is \u0026#34;REFUNDING\u0026#34;, usually real money paid, platform will send notification to registered notify url once refund successfully\u0026lt;/li\u0026gt; \u0026lt;/ul\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Path Parameter:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Namespace that payment order resides in\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentOrderNo\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order number\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Parameters:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;description\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Refund description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Example:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code style=\u0026#39;overflow: auto\u0026#39;\u0026gt;{\r\n \u0026#34;description\u0026#34;: \u0026#34;Repeated item.\u0026#34;\r\n}\u0026lt;/pre\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;h4\u0026gt;Refund Notification:\u0026lt;/h4\u0026gt;\u0026lt;p\u0026gt;It will send notification to configured web hook after refund successfully, http status code should return 200 or 204 once you resolve notification successfully, otherwise payment system will retry notification in interval\u0026lt;/p\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Refund notification parameter:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;payload\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Refund notification payload in json string \u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;sign\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;sha1 hex signature for payload and private key\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Refund notification Example:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code style=\u0026#39;overflow: auto\u0026#39;\u0026gt;{\r\n \u0026#34;payload\u0026#34;: \u0026#34;{\n \\\u0026#34;type\\\u0026#34;: \\\u0026#34;payment\\\u0026#34;,\n \\\u0026#34;nonceStr\\\u0026#34;: \\\u0026#34;34c1dcf3eb58455eb161465bbfc0b590\\\u0026#34;,\n \\\u0026#34;paymentOrderNo\\\u0026#34;: \\\u0026#34;18081239088\\\u0026#34;,\n \\\u0026#34;namespace\\\u0026#34;: \\\u0026#34;accelbyte\\\u0026#34;,\n \\\u0026#34;targetNamespace\\\u0026#34;: \\\u0026#34;game1\\\u0026#34;,\n \\\u0026#34;targetUserId\\\u0026#34;: \\\u0026#34;94451623768940d58416ca33ca767ec3\\\u0026#34;,\n \\\u0026#34;extOrderNo\\\u0026#34;: \\\u0026#34;123456789\\\u0026#34;,\n \\\u0026#34;sku\\\u0026#34;: \\\u0026#34;sku\\\u0026#34;,\n \\\u0026#34;extUserId\\\u0026#34;: \\\u0026#34;678\\\u0026#34;,\n \\\u0026#34;price\\\u0026#34;: 100,\n \\\u0026#34;paymentProvider\\\u0026#34;: \\\u0026#34;XSOLLA\\\u0026#34;,\n \\\u0026#34;vat\\\u0026#34;: 0,\n \\\u0026#34;salesTax\\\u0026#34;: 0,\n \\\u0026#34;paymentProviderFee\\\u0026#34;: 0,\n \\\u0026#34;paymentMethodFee\\\u0026#34;: 0,\n \\\u0026#34;currency\\\u0026#34;: {\n \\\u0026#34;currencyCode\\\u0026#34;: \\\u0026#34;USD\\\u0026#34;,\n \\\u0026#34;currencySymbol\\\u0026#34;: \\\u0026#34;$\\\u0026#34;,\n \\\u0026#34;currencyType\\\u0026#34;: \\\u0026#34;REAL\\\u0026#34;,\n \\\u0026#34;namespace\\\u0026#34;: \\\u0026#34;accelbyte\\\u0026#34;,\n \\\u0026#34;decimals\\\u0026#34;: 2\n },\n \\\u0026#34;status\\\u0026#34;: \\\u0026#34;REFUNDED\\\u0026#34;,\n \\\u0026#34;createdTime\\\u0026#34;: \\\u0026#34;2018-07-28T00:39:16.274Z\\\u0026#34;,\n \\\u0026#34;chargedTime\\\u0026#34;: \\\u0026#34;2018-07-28T00:39:16.274Z\\\u0026#34;,\n \\\u0026#34;refundedTime\\\u0026#34;: \\\u0026#34;2018-07-28T00:39:16.274Z\\\u0026#34;\n }\u0026#34;,\r\n \u0026#34;sign\u0026#34;:\u0026#34;e31fb92516cc9faaf50ad70343e1293acec6f3d5\u0026#34;\r\n}\u0026lt;/pre\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Refund notification payload parameter list:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Notification type: \u0026#39;payment\u0026#39;\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentOrderNo\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment system generated order number\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;extOrderNo\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;External order number that passed by invoker\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Namespace that related payment order resides in\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;targetNamespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The game namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;targetUserId\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The user id in game namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;sku\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Item identify, it will return if pass it when create payment\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;extUserId\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;External user id, can be character id, it will return if pass it when create payment\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;price\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Price of item\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentProvider\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment provider: xsolla/alipay/wxpay/wallet\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;vat\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order VAT\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;salesTax\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order sales tax\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentProviderFee\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment provider fee\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentMethodFee\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment method fee\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currency\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Map\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order currency info\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;status\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order status\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;statusReason\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Payment order refund status reason\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;createdTime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Datetime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The time of the order created\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;chargedTime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Datetime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The time of the order charged\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;refundedTime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Datetime\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;The time of the order refunded\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;customParameters\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Map\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;custom parameters, will return if pass it when create payment\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;nonceStr\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Random string, max length is 32, \u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Currency info parameter list:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencyCode\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency Code\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencySymbol\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency Symbol\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;currencyType\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency type(REAL/VIRTUAL)\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;decimals\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;int\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Currency decimals\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;h4\u0026gt;Encryption Rule:\u0026lt;/h4\u0026gt;\u0026lt;p\u0026gt;Concat payload json string and private key and then do sha1Hex.\u0026lt;/p\u0026gt;\u0026lt;h4\u0026gt;Other detail info:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Token type\u0026lt;/i\u0026gt;: client token\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;b\u0026gt;cross namespace allowed\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "refundPaymentOrderByDedicated", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentOrderRefund" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderRefundResult" } }, "204": { "description": "Refund successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33172\u003c/td\u003e\u003ctd\u003ePayment order [{paymentOrderNo}] is not refundable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Refund payment order by dedicated server", "tags": [ "Payment(Dedicated)" ], "x-errorCodes": { "20002": "validation error", "33141": "Payment Order [{paymentOrderNo}] does not exist", "33172": "Payment order [{paymentOrderNo}] is not refundable" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/payment/orders/{paymentOrderNo}/simulate-notification": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;\u0026lt;b\u0026gt;[TEST FACILITY ONLY] Forbidden in live environment. \u0026lt;/b\u0026gt; Simulate payment notification on sandbox payment order, usually for test usage to simulate real currency payment notification.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: notification process result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "simulatePaymentOrderNotification", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentOrderNotifySimulation" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/NotificationProcessResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33322\u003c/td\u003e\u003ctd\u003ePayment provider [{paymentProvider}] not supported\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Simulate payment notification", "tags": [ "Payment" ], "x-errorCodes": { "33141": "Payment Order [{paymentOrderNo}] does not exist", "33322": "Payment provider [{paymentProvider}] not supported" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/payment/orders/{paymentOrderNo}/status": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment order charge status.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment order charge status\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentOrderChargeStatus", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderChargeStatus" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get payment order charge status", "tags": [ "Payment" ], "x-errorCodes": { "33141": "Payment Order [{paymentOrderNo}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PAYMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/platforms/psn/entitlements/{entitlementLabel}/ownership": { "post": { "consumes": [ "application/json" ], "description": "Get user psn entitlement ownership by entitlement label.", "operationId": "getPsnEntitlementOwnership", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PsnEntitlementOwnershipRequest" } }, { "in": "path", "name": "entitlementLabel", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user psn entitlement ownership by entitlement label", "tags": [ "Platform" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/platforms/xbl/entitlements/{productSku}/ownership": { "post": { "consumes": [ "application/json" ], "description": "Get Xbox entitlement ownership by product sku.", "operationId": "getXboxEntitlementOwnership", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/XblEntitlementOwnershipRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "productSku", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get Xbox entitlement ownership by product sku.", "tags": [ "Platform" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/platforms/{platform}/entitlement/config": { "get": { "consumes": [ "application/json" ], "description": "Get platform entitlement config list.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPlatformEntitlementConfig", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "in": "path", "name": "platform", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementPlatformConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get platform entitlement config list", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT:CONFIG[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update platform entitlement config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: platform entitlement config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePlatformEntitlementConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/EntitlementPlatformConfigUpdate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "in": "path", "name": "platform", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementPlatformConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31147\u003c/td\u003e\u003ctd\u003eOrigin [Steam] and System need exist in allowPlatformOrigin\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update platform entitlement config", "tags": [ "Entitlement" ], "x-errorCodes": { "31147": "Origin [Steam] and System need exist in allowPlatformOrigin" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ENTITLEMENT:CONFIG[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/platforms/{platform}/wallet/config": { "get": { "consumes": [ "application/json" ], "description": "Get platform wallet config list.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: wallet info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPlatformWalletConfig", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "in": "path", "name": "platform", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformWalletConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get platform wallet config list", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update platform wallet config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: platform wallet config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePlatformWalletConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PlatformWalletConfigUpdate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "in": "path", "name": "platform", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformWalletConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update platform wallet config", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/platforms/{platform}/wallet/config/reset": { "put": { "consumes": [ "application/json" ], "description": "Reset platform wallet config to default config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: platform wallet config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "resetPlatformWalletConfig", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "in": "path", "name": "platform", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformWalletConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Reset platform wallet config", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/revocation/config": { "delete": { "consumes": [ "application/json" ], "description": "Delete revocation config.", "operationId": "deleteRevocationConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete revocation config", "tags": [ "Revocation" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REVOCATION[DELETE]" } }, "get": { "description": "Get revocation configuration.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Revocation config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getRevocationConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevocationConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33243\u003c/td\u003e\u003ctd\u003ePayment callback config for [{namespace}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get revocation configuration", "tags": [ "Revocation" ], "x-errorCodes": { "33243": "Payment callback config for [{namespace}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REVOCATION[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update revocation configuration.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Revocation config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateRevocationConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RevocationConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevocationConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update revocation configuration", "tags": [ "Revocation" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REVOCATION[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/revocation/history": { "get": { "description": "Query revocation histories in a namespace.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: query revocation history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryRevocationHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZ", "in": "query", "name": "endTime", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "DLC", "IAP", "ORDER", "OTHER" ], "in": "query", "name": "source", "required": false, "type": "string" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZ", "in": "query", "name": "startTime", "required": false, "type": "string" }, { "enum": [ "FAIL", "SUCCESS" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "in": "query", "name": "transactionId", "required": false, "type": "string" }, { "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevocationHistoryPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query revocation histories", "tags": [ "Revocation" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REVOCATION[READ]" } } }, "/platform/admin/namespaces/{namespace}/revocation/plugins/revocation": { "delete": { "description": "Delete service plugin config.", "operationId": "deleteRevocationPluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete revocation plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:REVOCATION[DELETE]" } }, "get": { "description": "Get revocation plugin config.", "operationId": "getRevocationPluginConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevocationPluginConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get revocation plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:REVOCATION[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update revocation plugin config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated service plugin config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateRevocationPluginConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RevocationPluginConfigUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevocationPluginConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update revocation plugin config", "tags": [ "ServicePluginConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:REVOCATION[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/revocation/plugins/revocation/revocation/customConfig/cert": { "put": { "consumes": [ "multipart/form-data" ], "description": "Upload revocation plugin custom config tls cert.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated service plugin config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "uploadRevocationPluginConfigCert", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevocationPluginConfigInfo" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Upload revocation plugin custom config tls cert", "tags": [ "ServicePluginConfig" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:PLUGIN:REVOCATION[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/rewards": { "post": { "consumes": [ "application/json" ], "description": "This API is used to create a reward.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created reward data\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Acceptable values for rewardItem\u0026#39;s identityType are\u0026lt;/i\u0026gt;: ITEM_ID or ITEM_SKU\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createReward", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RewardCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34023\u003c/td\u003e\u003ctd\u003eReward Item [{itemId}] with item type [{itemType}] is not supported for duration or endDate\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34027\u003c/td\u003e\u003ctd\u003eReward Item [{sku}] with item type [{itemType}] is not supported for duration or endDate\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34042\u003c/td\u003e\u003ctd\u003eReward item [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34044\u003c/td\u003e\u003ctd\u003eReward item [{sku}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34071\u003c/td\u003e\u003ctd\u003eReward with code [{rewardCode}] already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34072\u003c/td\u003e\u003ctd\u003eDuplicate reward condition [{rewardConditionName}] found in reward [{rewardCode}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34074\u003c/td\u003e\u003ctd\u003eReward Item [{itemId}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34076\u003c/td\u003e\u003ctd\u003eReward Item [{sku}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create a reward", "tags": [ "Reward" ], "x-errorCodes": { "20002": "validation error", "34023": "Reward Item [{itemId}] with item type [{itemType}] is not supported for duration or endDate", "34027": "Reward Item [{sku}] with item type [{itemType}] is not supported for duration or endDate", "34042": "Reward item [{itemId}] does not exist in namespace [{namespace}]", "34044": "Reward item [{sku}] does not exist in namespace [{namespace}]", "34071": "Reward with code [{rewardCode}] already exists in namespace [{namespace}]", "34072": "Duplicate reward condition [{rewardConditionName}] found in reward [{rewardCode}]", "34074": "Reward Item [{itemId}] duration and end date can’t be set at the same time", "34076": "Reward Item [{sku}] duration and end date can’t be set at the same time" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/rewards/byCriteria": { "get": { "description": "This API is used to query rewards by criteria.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of rewards\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryRewards", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "eventTopic", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "default": [ "namespace:asc", "rewardCode:asc" ], "description": "default is namespace:asc,rewardCode:asc, allow values: [namespace, namespace:asc, namespace:desc, rewardCode, rewardCode:asc, rewardCode:desc, createdAt:asc, createdAt:desc],and support sort group, eg: sortBy=namespace:asc,rewardCode:asc", "in": "query", "items": { "enum": [ "namespace", "namespace:asc", "namespace:desc", "rewardCode", "rewardCode:asc", "rewardCode:desc" ], "type": "string" }, "name": "sortBy", "required": false, "type": "array", "uniqueItems": true } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardPagingSlicedResult" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query rewards by criteria", "tags": [ "Reward" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [READ]" } } }, "/platform/admin/namespaces/{namespace}/rewards/export": { "get": { "description": "Export reward configurations for a given namespace into file. At current, only JSON file is supported.", "operationId": "exportRewards", "parameters": [ { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful export of reward configs", "schema": { "type": "file" } } }, "security": [ { "authorization": [] } ], "summary": "Export all reward configurations", "tags": [ "Reward" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [READ]" } } }, "/platform/admin/namespaces/{namespace}/rewards/import": { "post": { "consumes": [ "multipart/form-data" ], "description": "Import reward configurations for a given namespace from file. At current, only JSON file is supported.", "operationId": "importRewards", "parameters": [ { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "replaceExisting", "in": "query", "name": "replaceExisting", "required": true, "type": "boolean", "x-omitempty": false }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful import of reward configs" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34021\u003c/td\u003e\u003ctd\u003eReward data for namespace [{namespace}] is invalid\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34023\u003c/td\u003e\u003ctd\u003eReward Item [{itemId}] with item type [{itemType}] is not supported for duration or endDate\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34027\u003c/td\u003e\u003ctd\u003eReward Item [{sku}] with item type [{itemType}] is not supported for duration or endDate\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34074\u003c/td\u003e\u003ctd\u003eReward Item [{itemId}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34076\u003c/td\u003e\u003ctd\u003eReward Item [{sku}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Import reward configurations", "tags": [ "Reward" ], "x-errorCodes": { "34021": "Reward data for namespace [{namespace}] is invalid", "34023": "Reward Item [{itemId}] with item type [{itemType}] is not supported for duration or endDate", "34027": "Reward Item [{sku}] with item type [{itemType}] is not supported for duration or endDate", "34074": "Reward Item [{itemId}] duration and end date can’t be set at the same time", "34076": "Reward Item [{sku}] duration and end date can’t be set at the same time" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/rewards/{rewardId}": { "delete": { "description": "This API is used to delete a reward by reward Id. \u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the deleted reward data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "deleteReward", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "rewardId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34041\u003c/td\u003e\u003ctd\u003eReward [{rewardId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a reward", "tags": [ "Reward" ], "x-errorCodes": { "34041": "Reward [{rewardId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [DELETE]" } }, "get": { "description": "This API is used to get reward by reward Id.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: reward instance\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getReward", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "rewardId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34041\u003c/td\u003e\u003ctd\u003eReward [{rewardId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a reward", "tags": [ "Reward" ], "x-errorCodes": { "34041": "Reward [{rewardId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to update a reward.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: reward instance\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Acceptable values for rewardItem\u0026#39;s identityType are\u0026lt;/i\u0026gt;: ITEM_ID or ITEM_SKU\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateReward", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RewardUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "rewardId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34023\u003c/td\u003e\u003ctd\u003eReward Item [{itemId}] with item type [{itemType}] is not supported for duration or endDate\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34027\u003c/td\u003e\u003ctd\u003eReward Item [{sku}] with item type [{itemType}] is not supported for duration or endDate\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34041\u003c/td\u003e\u003ctd\u003eReward [{rewardId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34042\u003c/td\u003e\u003ctd\u003eReward item [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34044\u003c/td\u003e\u003ctd\u003eReward item [{sku}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34072\u003c/td\u003e\u003ctd\u003eDuplicate reward condition [{rewardConditionName}] found in reward [{rewardCode}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34074\u003c/td\u003e\u003ctd\u003eReward Item [{itemId}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34076\u003c/td\u003e\u003ctd\u003eReward Item [{sku}] duration and end date can’t be set at the same time\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update a reward", "tags": [ "Reward" ], "x-errorCodes": { "34023": "Reward Item [{itemId}] with item type [{itemType}] is not supported for duration or endDate", "34027": "Reward Item [{sku}] with item type [{itemType}] is not supported for duration or endDate", "34041": "Reward [{rewardId}] does not exist in namespace [{namespace}]", "34042": "Reward item [{itemId}] does not exist in namespace [{namespace}]", "34044": "Reward item [{sku}] does not exist in namespace [{namespace}]", "34072": "Duplicate reward condition [{rewardConditionName}] found in reward [{rewardCode}]", "34074": "Reward Item [{itemId}] duration and end date can’t be set at the same time", "34076": "Reward Item [{sku}] duration and end date can’t be set at the same time" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/rewards/{rewardId}/match": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[TEST FACILITY ONLY] Forbidden in live environment. \u0026lt;/b\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: match result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "checkEventCondition", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "rewardId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/EventPayload" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ConditionMatchResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34041\u003c/td\u003e\u003ctd\u003eReward [{rewardId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Check if event payload match reward condition", "tags": [ "Reward" ], "x-errorCodes": { "34041": "Reward [{rewardId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [READ]" } } }, "/platform/admin/namespaces/{namespace}/rewards/{rewardId}/record": { "delete": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[TEST FACILITY ONLY] Forbidden in live environment. \u0026lt;/b\u0026gt; This API is used to delete a reward condition record by reward Id and condition Name (optional). \u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: 204 No Content \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "deleteRewardConditionRecord", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/DeleteRewardConditionRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "rewardId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete reward success" } }, "security": [ { "authorization": [] } ], "summary": "Delete a reward condition record", "tags": [ "Reward" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:REWARD [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/sections": { "get": { "description": "This API is used to query sections.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated sections\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "querySections", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "section active range time end, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "end", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "section active range time start , using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "start", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" }, { "in": "query", "name": "viewId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SectionPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "List sections", "tags": [ "Section" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "This API is used to create a section.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created a section\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for section extension and localization extension\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "createSection", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SectionCreate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullSectionInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20027\u003c/td\u003e\u003ctd\u003eInvalid time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30023\u003c/td\u003e\u003ctd\u003eCatalog plugin grpc server address required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30641\u003c/td\u003e\u003ctd\u003eView [{viewId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create a section", "tags": [ "Section" ], "x-errorCodes": { "20002": "validation error", "20027": "Invalid time range", "30021": "Default language [{language}] required", "30023": "Catalog plugin grpc server address required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30641": "View [{viewId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/sections/purge/expired": { "delete": { "description": "This API is used to purge expired section.", "operationId": "purgeExpiredSection", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "purge expired section successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "purge expired section", "tags": [ "Section" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/sections/{sectionId}": { "delete": { "description": "This API is used to delete s section.", "operationId": "deleteSection", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "sectionId", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete section successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30741\u003c/td\u003e\u003ctd\u003eSection [{sectionId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a section", "tags": [ "Section" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30741": "Section [{sectionId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [DELETE]" } }, "get": { "description": "This API is used to get a section.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: section data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getSection", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "sectionId", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullSectionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30741\u003c/td\u003e\u003ctd\u003eSection [{sectionId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a section", "tags": [ "Section" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30741": "Section [{sectionId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to update s section.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated section data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for section extension and localization extension\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "updateSection", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SectionUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "sectionId", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullSectionInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20027\u003c/td\u003e\u003ctd\u003eInvalid time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30023\u003c/td\u003e\u003ctd\u003eCatalog plugin grpc server address required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30641\u003c/td\u003e\u003ctd\u003eView [{viewId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30741\u003c/td\u003e\u003ctd\u003eSection [{sectionId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update s section", "tags": [ "Section" ], "x-errorCodes": { "20002": "validation error", "20027": "Invalid time range", "30021": "Default language [{language}] required", "30023": "Catalog plugin grpc server address required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30641": "View [{viewId}] does not exist in namespace [{namespace}]", "30741": "Section [{sectionId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores": { "get": { "description": "This API is used to list stores in a namespace.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of stores\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listStores", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/StoreInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "List stores", "tags": [ "Store" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "This API is used to create a non published store in a namespace.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created store data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createStore", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/StoreCreate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30174\u003c/td\u003e\u003ctd\u003eDraft store already exists in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create a store", "tags": [ "Store" ], "x-errorCodes": { "20002": "validation error", "30174": "Draft store already exists in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/catalogDefinition": { "get": { "description": "This API is used to get catalog definition for import/export store by CSV\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: catalog definition\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getCatalogDefinition", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "APP", "CATEGORY", "ITEM", "SECTION", "VIEW" ], "in": "query", "name": "catalogType", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CatalogDefinitionInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get catalog definition", "tags": [ "Store" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE[READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/downloadCSVTemplates": { "get": { "description": "This API is used to download store csv templates for store importing by CSV feature", "operationId": "downloadCSVTemplates", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/zip" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } } }, "security": [ { "authorization": [] } ], "summary": "Download store csv templates", "tags": [ "Store" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/exportByCSV": { "post": { "consumes": [ "application/json" ], "description": "This API is used to export a store to CSV format", "operationId": "exportStoreByCSV", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ExportStoreToCSVRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "text/csv" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30025\u003c/td\u003e\u003ctd\u003e[{header}] is required by CSV import/export for catalogType [{catalogType}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30076\u003c/td\u003e\u003ctd\u003eCSV header [{headerName}] is not supported for CatalogType [{catalogType}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Export a store to CSV format", "tags": [ "Store" ], "x-errorCodes": { "30025": "[{header}] is required by CSV import/export for catalogType [{catalogType}]", "30076": "CSV header [{headerName}] is not supported for CatalogType [{catalogType}]", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/import": { "put": { "consumes": [ "multipart/form-data" ], "deprecated": true, "description": "This API is used to import a store.\u0026lt;p\u0026gt;This api has been deprecated, pls use /v2/admin/namespaces/{namespace}/stores/import to import store.\u0026lt;br\u0026gt;", "operationId": "importStore", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" }, { "description": "default we will use published store id,and will create published store if it dose not exist", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30121\u003c/td\u003e\u003ctd\u003eStore data is invalid\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30122\u003c/td\u003e\u003ctd\u003eStore's meta mismatch\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30122\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30375\u003c/td\u003e\u003ctd\u003eItem id [{itemId}] of sku [{sku}] is duplicate with un-published deleted item in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37041\u003c/td\u003e\u003ctd\u003eTicket booth [{boothName}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Import a store", "tags": [ "Store" ], "x-errorCodes": { "30121": "Store data is invalid", "30122": "Store's meta mismatch", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30375": "Item id [{itemId}] of sku [{sku}] is duplicate with un-published deleted item in namespace [{namespace}]", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]", "37041": "Ticket booth [{boothName}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/published": { "delete": { "description": "This API is used to delete published store including category and items before release to public.\u0026lt;p\u0026gt;\u0026lt;b\u0026gt;Warning: Please do not use this API once published to public user.\u0026lt;/b\u0026gt;", "operationId": "deletePublishedStore", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete published store", "tags": [ "Store" ], "x-errorCodes": { "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [DELETE]" } }, "get": { "description": "This API is used to get a published store basic info, exclude category and item information.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: store data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPublishedStore", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get published store", "tags": [ "Store" ], "x-errorCodes": { "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/published/backup": { "get": { "consumes": [ "application/json" ], "description": "This API is used to get a store\u0026#39;s backup. \u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: store backup info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPublishedStoreBackup", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreBackupInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30143\u003c/td\u003e\u003ctd\u003ePublished store [{storeId}] backup does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a published store's backup", "tags": [ "Store" ], "x-errorCodes": { "30142": "Published store does not exist in namespace [{namespace}]", "30143": "Published store [{storeId}] backup does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/published/rollback": { "put": { "consumes": [ "application/json" ], "description": "This API is used to rollback a published store. \u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated store info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "rollbackPublishedStore", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30143\u003c/td\u003e\u003ctd\u003ePublished store [{storeId}] backup does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Rollback a published store", "tags": [ "Store" ], "x-errorCodes": { "30142": "Published store does not exist in namespace [{namespace}]", "30143": "Published store [{storeId}] backup does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}": { "delete": { "description": "This API is used to delete a store. Only non published store can be deleted.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: store\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "deleteStore", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a store", "tags": [ "Store" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [DELETE]" } }, "get": { "description": "This API is used to get a store.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: store data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getStore", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a store", "tags": [ "Store" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to Update a store basic info.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated store data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateStore", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/StoreUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30171\u003c/td\u003e\u003ctd\u003eStore [{store}] can't change default language to [{language}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30172\u003c/td\u003e\u003ctd\u003eStore [{store}] can't change default region to [{region}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update a store", "tags": [ "Store" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30171": "Store [{store}] can't change default language to [{language}]", "30172": "Store [{store}] can't change default region to [{region}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/byCriteria": { "get": { "description": "This API is used to query changes .\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the pagination of changes\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryChanges", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" }, { "enum": [ "CREATE", "DELETE", "UPDATE" ], "in": "query", "name": "action", "required": false, "type": "string" }, { "in": "query", "name": "itemSku", "required": false, "type": "string" }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": false, "type": "string" }, { "default": 20, "description": "limit \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "selected", "required": false, "type": "boolean", "x-omitempty": false }, { "default": [ "updatedAt:desc" ], "description": "default is updatedAt:desc, allow values: [createdAt, createdAt:asc, createdAt:desc, updatedAt, updatedAt:asc, updatedAt:desc],and support sort group, eg: sortBy=title:asc,createdAt:desc. Make sure to always use more than one sort if the first sort is not an unique valuefor example, if you wish to sort by title, make sure to include other sort such as sku or createdAt after the first sort, eg: title:asc,updatedAt:desc", "in": "query", "items": { "enum": [ "createdAt", "createdAt:asc", "createdAt:desc", "updatedAt", "updatedAt:asc", "updatedAt:desc" ], "type": "string" }, "name": "sortBy", "required": false, "type": "array", "uniqueItems": true }, { "default": "UNPUBLISHED", "description": "default is UNPUBLISHED", "enum": [ "PUBLISHED", "UNPUBLISHED" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "enum": [ "CATEGORY", "ITEM", "SECTION", "STORE", "VIEW" ], "in": "query", "name": "type", "required": false, "type": "string" }, { "description": "updated at end , using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "updatedAtEnd", "required": false, "type": "string" }, { "description": "updated at start , using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "updatedAtStart", "required": false, "type": "string" }, { "default": false, "description": "true means include total count of catalog changes in response body", "in": "query", "name": "withTotal", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CatalogChangePagingResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query catalog changes", "tags": [ "CatalogChanges" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/publishAll": { "put": { "consumes": [ "application/json" ], "description": "This API is used to publish all unpublished changes.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: no content\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publishAll", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30122\u003c/td\u003e\u003ctd\u003eStore's meta mismatch\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Publish all unpublished changes", "tags": [ "CatalogChanges" ], "x-errorCodes": { "30122": "Store's meta mismatch", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/publishSelected": { "put": { "consumes": [ "application/json" ], "description": "This API is used to publish selected unpublished changes.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: no content\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publishSelected", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30122\u003c/td\u003e\u003ctd\u003eStore's meta mismatch\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30375\u003c/td\u003e\u003ctd\u003eItem id [{itemId}] of sku [{sku}] is duplicate with un-published deleted item in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Publish selected unpublished changes", "tags": [ "CatalogChanges" ], "x-errorCodes": { "30122": "Store's meta mismatch", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30375": "Item id [{itemId}] of sku [{sku}] is duplicate with un-published deleted item in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/selectAll": { "put": { "consumes": [ "application/json" ], "description": "Select all changes.", "operationId": "selectAllRecords", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Select all changes", "tags": [ "CatalogChanges" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/selectAllByCriteria": { "put": { "consumes": [ "application/json" ], "description": "Select all changes by criteria", "operationId": "selectAllRecordsByCriteria", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" }, { "enum": [ "CREATE", "DELETE", "UPDATE" ], "in": "query", "name": "action", "required": false, "type": "string" }, { "in": "query", "name": "itemSku", "required": false, "type": "string" }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": false, "type": "string" }, { "in": "query", "name": "selected", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "CATEGORY", "ITEM", "SECTION", "STORE", "VIEW" ], "in": "query", "name": "type", "required": false, "type": "string" }, { "description": "updated at end , using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "updatedAtEnd", "required": false, "type": "string" }, { "description": "updated at start , using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "updatedAtStart", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Select all changes by criteria successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Select all changes by criteria", "tags": [ "CatalogChanges" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/statistics": { "get": { "description": "This API is used to query catalog changes statistics .\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: catalog changes statistics changes\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getStatistic", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" }, { "enum": [ "CREATE", "DELETE", "UPDATE" ], "in": "query", "name": "action", "required": false, "type": "string" }, { "in": "query", "name": "itemSku", "required": false, "type": "string" }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": false, "type": "string" }, { "enum": [ "CATEGORY", "ITEM", "SECTION", "STORE", "VIEW" ], "in": "query", "name": "type", "required": false, "type": "string" }, { "description": "updated at end , using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "updatedAtEnd", "required": false, "type": "string" }, { "description": "updated at start , using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "updatedAtStart", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CatalogChangeStatistics" } } }, "security": [ { "authorization": [] } ], "summary": "Get catalog changes statistics", "tags": [ "CatalogChanges" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/unselectAll": { "put": { "consumes": [ "application/json" ], "description": "Unselect all change.", "operationId": "unselectAllRecords", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Unselect all changes", "tags": [ "CatalogChanges" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/{changeId}/select": { "put": { "consumes": [ "application/json" ], "description": "Select a change, it will be included when partial publish.", "operationId": "selectRecord", "parameters": [ { "in": "path", "name": "changeId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30041\u003c/td\u003e\u003ctd\u003eChangelog [{changelogId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Select a change", "tags": [ "CatalogChanges" ], "x-errorCodes": { "30041": "Changelog [{changelogId}] does not exist in namespace [{namespace}]", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/catalogChanges/{changeId}/unselect": { "put": { "consumes": [ "application/json" ], "description": "Unselect a change, it will not be included when partial publish.", "operationId": "unselectRecord", "parameters": [ { "in": "path", "name": "changeId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30041\u003c/td\u003e\u003ctd\u003eChangelog [{changelogId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30071\u003c/td\u003e\u003ctd\u003eCan't unselect item [{itemId}] when the item which is bound to is already selected in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30072\u003c/td\u003e\u003ctd\u003eCan't unselect category [{categoryPath}] when item with this category is already selected in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30073\u003c/td\u003e\u003ctd\u003eCan't unselect store change\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30074\u003c/td\u003e\u003ctd\u003eCan't unselect subscription's content [{itemId}] when subscription is already selected in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Unselect a change", "tags": [ "CatalogChanges" ], "x-errorCodes": { "30041": "Changelog [{changelogId}] does not exist in namespace [{namespace}]", "30071": "Can't unselect item [{itemId}] when the item which is bound to is already selected in namespace [{namespace}]", "30072": "Can't unselect category [{categoryPath}] when item with this category is already selected in namespace [{namespace}]", "30073": "Can't unselect store change", "30074": "Can't unselect subscription's content [{itemId}] when subscription is already selected in namespace [{namespace}]", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/clone": { "put": { "consumes": [ "application/json" ], "description": "This API is used to clone a store. Usually clone a draft store to published store because published store can\u0026#39;t directly edit content.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: clone store info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "cloneStore", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" }, { "description": "default is published store", "in": "query", "name": "targetStoreId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/StoreInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30122\u003c/td\u003e\u003ctd\u003eStore's meta mismatch\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Clone a store", "tags": [ "Store" ], "x-errorCodes": { "30122": "Store's meta mismatch", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/export": { "get": { "deprecated": true, "description": "This API is used to export a store.\u0026lt;p\u0026gt;This api has been deprecated, pls use /v2/admin/namespaces/{namespace}/stores/export to export store.\u0026lt;br\u0026gt;", "operationId": "exportStore", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/zip" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Export a store", "tags": [ "Store" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/import/history": { "get": { "description": "This API is used to query import store history", "operationId": "queryImportHistory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" }, { "in": "query", "name": "end", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "default": "createdAt:desc", "description": "default createdAt:desc. Allowed values: [createdAt:asc, createdAt:desc]", "in": "query", "name": "sortBy", "required": false, "type": "string" }, { "in": "query", "name": "start", "required": false, "type": "string" }, { "in": "query", "name": "success", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ImportStoreHistoryPagingResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20027\u003c/td\u003e\u003ctd\u003eInvalid time range\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query import store history", "tags": [ "Store" ], "x-errorCodes": { "20027": "Invalid time range" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/admin/namespaces/{namespace}/stores/{storeId}/importByCSV": { "post": { "consumes": [ "multipart/form-data" ], "description": "This API is used to import a store by CSV format, You must select at least one of item/section/display/category for uploading", "operationId": "importStoreByCSV", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" }, { "in": "formData", "name": "category", "required": false, "type": "file" }, { "in": "formData", "name": "display", "required": false, "type": "file" }, { "in": "formData", "name": "item", "required": false, "type": "file" }, { "in": "formData", "name": "notes", "required": false, "type": "string" }, { "in": "formData", "name": "section", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ImportStoreResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30024\u003c/td\u003e\u003ctd\u003eUnable to parse CSV cell [{content}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30025\u003c/td\u003e\u003ctd\u003e[{header}] is required by CSV import/export for catalogType [{catalogType}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30121\u003c/td\u003e\u003ctd\u003eStore data is invalid\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30076\u003c/td\u003e\u003ctd\u003eCSV header [{headerName}] is not supported for CatalogType [{catalogType}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30382\u003c/td\u003e\u003ctd\u003eDuplicated Item sku [{sku}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Import store using CSV format", "tags": [ "Store" ], "x-errorCodes": { "30024": "Unable to parse CSV cell [{content}]", "30025": "[{header}] is required by CSV import/export for catalogType [{catalogType}]", "30076": "CSV header [{headerName}] is not supported for CatalogType [{catalogType}]", "30121": "Store data is invalid", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30382": "Duplicated Item sku [{sku}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/subscriptions": { "get": { "consumes": [ "application/json" ], "description": "Query subscriptions.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated subscriptions\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "querySubscriptions", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "CHARGED", "CHARGE_FAILED", "NEVER", "RECURRING_CHARGING", "SETUP" ], "in": "query", "name": "chargeStatus", "required": false, "type": "string" }, { "in": "query", "name": "itemId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "sku", "required": false, "type": "string" }, { "enum": [ "ACTIVE", "CANCELLED", "EXPIRED", "INIT" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "enum": [ "PLATFORM", "USER" ], "in": "query", "name": "subscribedBy", "required": false, "type": "string" }, { "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query subscriptions", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:SUBSCRIPTION [READ]" } } }, "/platform/admin/namespaces/{namespace}/subscriptions/{subscriptionId}/recurring": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[TEST FACILITY ONLY] Forbidden in live environment. \u0026lt;/b\u0026gt; Recurring charge subscription, it will trigger recurring charge if the USER subscription status is ACTIVE, nextBillingDate is before now and no fail recurring charge within X(default 12) hours.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: recurring charge result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "recurringChargeSubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RecurringChargeResult" } } }, "security": [ { "authorization": [] } ], "summary": "Recurring charge subscription", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:SUBSCRIPTION [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/tickets/{boothName}": { "get": { "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Get ticket(code/key) dynamic based on booth name.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: ticket dynamic\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getTicketDynamic", "parameters": [ { "in": "path", "name": "boothName", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TicketDynamicInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37041\u003c/td\u003e\u003ctd\u003eTicket booth [{boothName}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get ticket dynamic", "tags": [ "Ticket" ], "x-errorCodes": { "37041": "Ticket booth [{boothName}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:TICKET [READ]" } } }, "/platform/admin/namespaces/{namespace}/tickets/{boothName}/decrement": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Decrease ticket(code/key) sale if requested orderNo is already increased.", "operationId": "decreaseTicketSale", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TicketSaleDecrementRequest" } }, { "in": "path", "name": "boothName", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Return item successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37041\u003c/td\u003e\u003ctd\u003eTicket booth [{boothName}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Decrease ticket sale", "tags": [ "Ticket" ], "x-errorCodes": { "20002": "validation error", "37041": "Ticket booth [{boothName}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:TICKET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/tickets/{boothName}/id": { "get": { "description": "Get ticket(code/key) booth ID.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: ticket booth id\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getTicketBoothID", "parameters": [ { "in": "path", "name": "boothName", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TicketBoothID" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37041\u003c/td\u003e\u003ctd\u003eTicket booth [{boothName}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get ticket booth ID", "tags": [ "Ticket" ], "x-errorCodes": { "37041": "Ticket booth [{boothName}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:TICKET [READ]" } } }, "/platform/admin/namespaces/{namespace}/tickets/{boothName}/increment": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; increase ticket(code/key) sale.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Ticket sale increment result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "increaseTicketSale", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TicketSaleIncrementRequest" } }, { "in": "path", "name": "boothName", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TicketSaleIncrementResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37041\u003c/td\u003e\u003ctd\u003eTicket booth [{boothName}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Increase ticket sale", "tags": [ "Ticket" ], "x-errorCodes": { "20002": "validation error", "37041": "Ticket booth [{boothName}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:TICKET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/trade/commit": { "post": { "consumes": [ "application/json" ], "description": "This API is used to create a chained operations\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: chain action history\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;FULFILL_ITEM operation supported item type\u0026lt;/i\u0026gt;: INGAMEITEM,LOOTBOX,OPTIONBOX\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for metadata\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "commit", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TradeChainedActionCommitRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TradeChainActionHistoryInfo" } } }, "security": [ { "authorization": [] } ], "summary": "commit a chain of actions or operations", "tags": [ "TradeAction" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:TRADE [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/trade/history/byCriteria": { "get": { "description": "This API is used to fetch trade history based on the provided criteria\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: trade history list based on criteria\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getTradeHistoryByCriteria", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "Status of the trade (SUCCESS/FAIL)", "enum": [ "FAILED", "INIT", "SUCCESS" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "description": "Type of the trade", "in": "query", "name": "type", "required": false, "type": "string" }, { "description": "User ID for which the trade history is queried", "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TradeActionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Retrieve trade history by criteria", "tags": [ "TradeAction" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:TRADE [READ]" } } }, "/platform/admin/namespaces/{namespace}/trade/{transactionId}": { "get": { "description": "This API is used to fetch a specific trade history using transaction ID\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: trade history based on transaction ID\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getTradeHistoryByTransactionId", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Transaction ID to query the trade history", "in": "path", "name": "transactionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TradeChainActionHistoryInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Retrieve trade history by transaction ID", "tags": [ "TradeAction" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:TRADE [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/achievement/steam": { "put": { "consumes": [ "application/json" ], "description": "This API is used to unlock steam achievement.", "operationId": "unlockSteamUserAchievement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SteamAchievementUpdateRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39244\u003c/td\u003e\u003ctd\u003eSteam config does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39245\u003c/td\u003e\u003ctd\u003eSteam app id does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Unlock steam achievement.", "tags": [ "Achievement(Platform)" ], "x-errorCodes": { "20002": "validation error", "39244": "Steam config does not exist", "39245": "Steam app id does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ACHIEVEMENT[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/achievement/xbl": { "get": { "consumes": [ "application/json" ], "description": "This API is used to get xbox live user achievements(Only for test).", "operationId": "getXblUserAchievements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "xboxUserId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/XblUserAchievements" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get xbox live user achievements.", "tags": [ "Achievement(Platform)" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ACHIEVEMENT[READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to update xbox live achievements.", "operationId": "updateXblUserAchievement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/XblAchievementUpdateRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update xbox live achievements.", "tags": [ "Achievement(Platform)" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ACHIEVEMENT[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/campaign": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize campaign. At current it will only anonymize redeem history.", "operationId": "anonymizeCampaign", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "Anonymize campaign", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/entitlements": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize entitlement. At current it will only anonymize entitlement, entitlement history.", "operationId": "anonymizeEntitlement", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize entitlement", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/fulfillment": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize fulfillment. At current it will only anonymize fulfillment history.", "operationId": "anonymizeFulfillment", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize fulfillment", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/integrations": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize integrations. At current it will only anonymize iap histories.", "operationId": "anonymizeIntegration", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize integrations", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/orders": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize order. At current it will only anonymize order, order history.", "operationId": "anonymizeOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize order", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/payment": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize payment. At current it will only anonymize payment order, payment order history.", "operationId": "anonymizePayment", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize payment", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/revocation": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize revocation. At current it will only anonymize revocation history.", "operationId": "anonymizeRevocation", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize revocation", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION[DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/subscriptions": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize subscription. At current it will anonymize subscription, billing history and subscription activity.", "operationId": "anonymizeSubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize subscription", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/anonymization/wallets": { "delete": { "consumes": [ "application/json" ], "description": "Anonymize wallet. At current it will only anonymize wallet, wallet transaction.", "operationId": "anonymizeWallet", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Anonymize successfully" } }, "security": [ { "authorization": [] } ], "summary": "anonymize wallet", "tags": [ "Anonymization" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ANONYMIZATION [DELETE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/dlc": { "get": { "description": "Get user dlc by platform.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: user dlc\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserDLCByPlatform", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "in": "query", "name": "type", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/UserDLC" } } }, "security": [ { "authorization": [] } ], "summary": "Get user dlc by platform", "tags": [ "DLC" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/dlc/records": { "get": { "description": "Get user dlc records.\u0026lt;br\u0026gt;Note: includeAllNamespaces means this endpoint will return user dlcs from all namespace, example scenario isadmin may need to check the user dlcs before unlink a 3rd party account, so the user dlcs should be from all namespaces because unlinking is a platform level action \u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: user dlc\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserDLC", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "includeAllNamespaces", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "FULFILLED", "REVOKED", "REVOKE_FAILED" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "in": "query", "name": "type", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/UserDLCRecord" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user dlc records", "tags": [ "DLC" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements": { "get": { "description": "Query entitlements for a specific user.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserEntitlements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": false, "type": "string" }, { "in": "query", "name": "collectionId", "required": false, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "in": "query", "name": "entitlementName", "required": false, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "features", "required": false, "type": "array" }, { "default": false, "in": "query", "name": "fuzzyMatchName", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "description": "This param will work only with activeOnly=true.\nWhen fetching entitlement with active status, this param will ignore the startDate and endDate of an entitlement.", "in": "query", "name": "ignoreActiveDate", "required": false, "type": "boolean", "x-omitempty": false }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemId", "required": false, "type": "array" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "in": "query", "name": "origin", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user entitlements", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Grant user entitlement.\u0026lt;br\u0026gt;\u0026lt;br\u0026gt;Notes: \u0026lt;br\u0026gt;\u0026lt;br\u0026gt;will skip un-supported item if input un-supported item types, please use /admin/namespaces/{namespace}/users/{userId}/fulfillment endpoint if want to fulfill other item type, like coin item\u0026lt;br\u0026gt;\u0026lt;br\u0026gt;Support Item Types:\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;APP\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;INGAMEITEM\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;CODE\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;SUBSCRIPTION\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;MEDIA\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;OPTIONBOX\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;LOOTBOX\u0026lt;/i\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: granted entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "grantUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/EntitlementGrant" }, "type": "array" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/StackableEntitlementInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Grant user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20002": "validation error", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/byAppId": { "get": { "description": "Get user app entitlement by appId.", "operationId": "getUserAppEntitlementByAppId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "appId", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppEntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31142\u003c/td\u003e\u003ctd\u003eEntitlement with appId [{appId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user app entitlement by appId", "tags": [ "Entitlement" ], "x-errorCodes": { "31142": "Entitlement with appId [{appId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/byAppType": { "get": { "description": "Query app entitlements by appType.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: app entitlement pagination\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserEntitlementsByAppType", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppEntitlementPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query app entitlements by appType", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/byIds": { "get": { "description": "Get user entitlements by ids. This will return all entitlements regardless of its status\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserEntitlementsByIds", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "ids", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EntitlementInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlements by ids.", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/byItemId": { "get": { "description": "Get user entitlement by itemId.", "operationId": "getUserEntitlementByItemId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31144\u003c/td\u003e\u003ctd\u003eEntitlement with itemId [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement by itemId", "tags": [ "Entitlement" ], "x-errorCodes": { "31144": "Entitlement with itemId [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/byItemIds": { "get": { "description": "Get user entitlements by itemIds.", "operationId": "getUserActiveEntitlementsByItemIds", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "ids", "required": false, "type": "array" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EntitlementInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlements by itemIds", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT[READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/bySku": { "get": { "description": "Get user entitlement by sku.", "operationId": "getUserEntitlementBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31143\u003c/td\u003e\u003ctd\u003eEntitlement with sku [{sku}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement by sku", "tags": [ "Entitlement" ], "x-errorCodes": { "31143": "Entitlement with sku [{sku}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/ownership/any": { "get": { "description": "Exists any user active entitlement of specified itemIds, skus and appIds", "operationId": "existsAnyUserActiveEntitlement", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "appIds", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemIds", "required": false, "type": "array" }, { "in": "query", "name": "platform", "required": false, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "skus", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Exists any user active entitlement", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/ownership/anyOf": { "get": { "description": "Exists any user active entitlement of specified items.", "operationId": "existsAnyUserActiveEntitlementByItemIds", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemIds", "required": true, "type": "array" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Exists any user active entitlement", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/ownership/byAppId": { "get": { "description": "Get user app entitlement ownership by appId.", "operationId": "getUserAppEntitlementOwnershipByAppId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "appId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user app entitlement ownership by appId", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/ownership/byItemId": { "get": { "description": "Get user entitlement ownership by itemId.", "operationId": "getUserEntitlementOwnershipByItemId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TimedOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement ownership by itemId", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/ownership/byItemIds": { "get": { "description": "Get user entitlement ownership by itemIds.", "operationId": "getUserEntitlementOwnershipByItemIds", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "ids", "required": false, "type": "array" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EntitlementOwnership" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement ownership by itemIds", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT[READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/ownership/bySku": { "get": { "description": "Get user entitlement ownership by sku.", "operationId": "getUserEntitlementOwnershipBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "in": "query", "name": "platform", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TimedOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement ownership by sku", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/revoke": { "put": { "description": "Revoke all entitlements of a user (This API is for testing purpose only)\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: revoked entitlements count\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "revokeAllEntitlements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkOperationResult" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke all entitlements of a user (This API is for testing purpose only)", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/revoke/byIds": { "put": { "description": "Revoke user\u0026#39;s entitlements by ids.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: revoke entitlements count\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "revokeUserEntitlements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "separate multiple value by commas parameter.", "in": "query", "name": "entitlementIds", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkOperationResult" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke user's entitlements by ids", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}": { "get": { "description": "Get user entitlement.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserEntitlement", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update user entitlement. If update CONSUMABLE entitlement useCount to 0, the status will be CONSUMED.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/EntitlementUpdate" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31171": "Entitlement [{entitlementId}] already revoked" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/decrement": { "put": { "consumes": [ "application/json" ], "description": "Consume user entitlement. If the entitlement useCount is 0, the status will be CONSUMED.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: consumed entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "consumeUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AdminEntitlementDecrement" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementDecrementResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31123\u003c/td\u003e\u003ctd\u003eUnable to acquire box item, box item [{itemId}] expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31172\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31173\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] is not consumable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31174\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already consumed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31176\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] use count is insufficient\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31178\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] out of time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31180\u003c/td\u003e\u003ctd\u003eDuplicate request id: [{requestId}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31183\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Consume user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31123": "Unable to acquire box item, box item [{itemId}] expired", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31171": "Entitlement [{entitlementId}] already revoked", "31172": "Entitlement [{entitlementId}] not active", "31173": "Entitlement [{entitlementId}] is not consumable", "31174": "Entitlement [{entitlementId}] already consumed", "31176": "Entitlement [{entitlementId}] use count is insufficient", "31178": "Entitlement [{entitlementId}] out of time range", "31180": "Duplicate request id: [{requestId}]", "31183": "Entitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/disable": { "put": { "description": "Disable user entitlement if entitlement, only active entitlement can be disable, disabled entitlement can\u0026#39;t consume.\u0026lt;br\u0026gt;\u0026lt;b\u0026gt;Like revoke, it will lose the entitlement ownership, except disabled entitlement can enable.\u0026lt;/b\u0026gt;\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: disable entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "disableUserEntitlement", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31172\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Disable user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31172": "Entitlement [{entitlementId}] not active" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/enable": { "put": { "description": "Enable user entitlement.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: enable entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "enableUserEntitlement", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31174\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already consumed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31177\u003c/td\u003e\u003ctd\u003ePermanent item already owned\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31179\u003c/td\u003e\u003ctd\u003eDuplicate entitlement exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Enable user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31171": "Entitlement [{entitlementId}] already revoked", "31174": "Entitlement [{entitlementId}] already consumed", "31177": "Permanent item already owned", "31179": "Duplicate entitlement exists" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/history": { "get": { "description": "Get user entitlement histories.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of entitlement history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserEntitlementHistories", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EntitlementHistoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement history", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/revoke": { "put": { "consumes": [ "application/json" ], "description": "Revoke user entitlement.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: revoke entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "revokeUserEntitlement", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/EntitlementRevokeRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/revoke/byUseCount": { "post": { "consumes": [ "application/json" ], "description": "Revoke specified count of user entitlement.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: The revoked entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "revokeUserEntitlementByUseCount", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RevokeUseCountRequest" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementIfc" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke specified count of user entitlement.", "tags": [ "Entitlement" ], "x-errorCodes": { "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/revoke/byUseCount/preCheck": { "get": { "description": "Checks if specified use count of user entitlement can be revoked without actually revoking it.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: true if revokable, false otherwise\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "preCheckRevokeUserEntitlementByUseCount", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "format": "int32", "in": "query", "name": "quantity", "required": true, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementPrechekResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Check if specified count of user entitlement can be revoked", "tags": [ "Entitlement" ], "x-errorCodes": { "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/revokeByUseCount": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "Revoke specified use count of user entitlement. please use /{entitlementId}/revoke/byUseCount endpoint instead of this endpoint\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: revoke entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "revokeUseCount", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RevokeUseCountRequest" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke specified use count of user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/sell": { "put": { "consumes": [ "application/json" ], "description": "Sell user entitlement. If the entitlement is consumable, useCount is 0, the status will be CONSUMED. If the entitlement is durable, the status will be SOLD. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "sellUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AdminEntitlementSoldRequest" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementSoldResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31172\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31174\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already consumed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31176\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] use count is insufficient\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31178\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] out of time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31180\u003c/td\u003e\u003ctd\u003eDuplicate request id: [{requestId}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31181\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] is not sellable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31182\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already sold\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31183\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sell user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31171": "Entitlement [{entitlementId}] already revoked", "31172": "Entitlement [{entitlementId}] not active", "31174": "Entitlement [{entitlementId}] already consumed", "31176": "Entitlement [{entitlementId}] use count is insufficient", "31178": "Entitlement [{entitlementId}] out of time range", "31180": "Duplicate request id: [{requestId}]", "31181": "Entitlement [{entitlementId}] is not sellable", "31182": "Entitlement [{entitlementId}] already sold", "31183": "Entitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/fulfillment": { "post": { "consumes": [ "application/json" ], "description": "Fulfill item.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "fulfillItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/FulfillmentRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38122\u003c/td\u003e\u003ctd\u003eSubscription endDate required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill item", "tags": [ "Fulfillment" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists", "38122": "Subscription endDate required" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/fulfillment/code": { "post": { "consumes": [ "application/json" ], "description": "Redeem campaign code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "redeemCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/FulfillCodeRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37172\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37173\u003c/td\u003e\u003ctd\u003eCode [{code}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37174\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37175\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37177\u003c/td\u003e\u003ctd\u003eCode redemption not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37178\u003c/td\u003e\u003ctd\u003eCode redemption already ended\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31177\u003c/td\u003e\u003ctd\u003ePermanent item already owned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Redeem campaign code", "tags": [ "Fulfillment" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "31177": "Permanent item already owned", "35123": "Wallet [{walletId}] is inactive", "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37172": "Campaign [{campaignId}] is inactive in namespace [{namespace}]", "37173": "Code [{code}] is inactive in namespace [{namespace}]", "37174": "Exceeded max redeem count per code [{maxCount}]", "37175": "Exceeded max redeem count per code per user [{maxCount}]", "37177": "Code redemption not started", "37178": "Code redemption already ended", "38121": "Duplicate permanent item exists" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/fulfillment/preCheck": { "post": { "consumes": [ "application/json" ], "description": "Retrieve and check fulfillment items based on the provided request.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of fulfillment items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "preCheckFulfillItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PreCheckFulfillmentRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Successful retrieval", "schema": { "items": { "$ref": "#/definitions/FulfillmentItem" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Pre check fulfillment items", "tags": [ "Fulfillment" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "38121": "Duplicate permanent item exists" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/fulfillment/rewards": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Fulfill rewards.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "fulfillRewards", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RewardsRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "fulfill successfully" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill rewards without content", "tags": [ "Fulfillment" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap": { "get": { "description": "Query IAP orders.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated iap orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserIAPOrders", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "endTime", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "productId", "required": false, "type": "string" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "startTime", "required": false, "type": "string" }, { "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "query", "name": "type", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPOrderPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query IAP orders", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/all": { "get": { "description": "Query all user IAP orders.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of iap orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryAllUserIAPOrders", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPOrderPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query all user IAP orders", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/consume/history": { "get": { "description": "Query IAP consume history.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated iap consume history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserIAPConsumeHistory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "endTime", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "startTime", "required": false, "type": "string" }, { "enum": [ "FAIL", "PENDING", "SUCCESS" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "query", "name": "type", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPConsumeHistoryPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query IAP consume history", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/mock/receipt": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[TEST FACILITY ONLY] Forbidden in live environment. \u0026lt;/b\u0026gt; Mock fulfill iap item without validate receipt.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "mockFulfillIAPItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/MockIAPReceipt" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Fulfill item successfully" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38122\u003c/td\u003e\u003ctd\u003eSubscription endDate required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Mock fulfill iap item.", "tags": [ "IAP" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists", "38122": "Subscription endDate required" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/oculus/subscription/sync": { "put": { "consumes": [ "application/json" ], "description": "this endpoint only return existed subscription transaction info", "operationId": "adminSyncOculusSubscriptions", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/OculusSubscriptionSyncRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionInfo" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39134\u003c/td\u003e\u003ctd\u003eInvalid Oculus IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39133\u003c/td\u003e\u003ctd\u003eBad request for Oculus: [{reason}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39146\u003c/td\u003e\u003ctd\u003eOculus IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39154\u003c/td\u003e\u003ctd\u003eMeta Quest Subscription Sku [{sku}] not found in namespace [{namespace}] config, please config this Subscription sku in subscription group.\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Meta Quest(Oculus) subscription", "tags": [ "IAP" ], "x-errorCodes": { "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39133": "Bad request for Oculus: [{reason}]", "39134": "Invalid Oculus IAP config under namespace [{namespace}]: [{message}]", "39146": "Oculus IAP config not found in namespace [{namespace}].", "39154": "Meta Quest Subscription Sku [{sku}] not found in namespace [{namespace}] config, please config this Subscription sku in subscription group." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/orders/{iapOrderNo}/line_items": { "get": { "description": "Query IAP order ine items.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated iap orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "adminGetIAPOrderLineItems", "parameters": [ { "in": "path", "name": "iapOrderNo", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/IAPOrderLineItemInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Query IAP order line items", "tags": [ "IAP" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/steam/syncAbnormalTransaction": { "put": { "description": "", "operationId": "adminSyncSteamAbnormalTransaction", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPOrderShortInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39124\u003c/td\u003e\u003ctd\u003eIAP request platform [{platformId}] user id is not linked with current user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39621\u003c/td\u003e\u003ctd\u003eSteam api common exception with status code [statusCode] details: [details]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39144\u003c/td\u003e\u003ctd\u003eSteam IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39184\u003c/td\u003e\u003ctd\u003eSteam api exception with status code [{statusCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39185\u003c/td\u003e\u003ctd\u003eThis endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Abnormal transaction, Sync steam order by transaction. only works when steam sync mode is TRANSACTION.", "tags": [ "IAP" ], "x-errorCodes": { "39124": "IAP request platform [{platformId}] user id is not linked with current user", "39144": "Steam IAP config not found in namespace [{namespace}].", "39184": "Steam api exception with status code [{statusCode}] and error message [{message}]", "39185": "This endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]", "39621": "Steam api common exception with status code [statusCode] details: [details]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/steam/syncByTransaction": { "put": { "consumes": [ "application/json" ], "description": "", "operationId": "adminSyncSteamIAPByTransaction", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SteamSyncByTransactionRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPOrderShortInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39124\u003c/td\u003e\u003ctd\u003eIAP request platform [{platformId}] user id is not linked with current user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39621\u003c/td\u003e\u003ctd\u003eSteam api common exception with status code [statusCode] details: [details]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39144\u003c/td\u003e\u003ctd\u003eSteam IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39184\u003c/td\u003e\u003ctd\u003eSteam api exception with error code [{errorCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39185\u003c/td\u003e\u003ctd\u003eThis endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Manual sync steam transaction. only works when steam sync mode is TRANSACTION.", "tags": [ "IAP" ], "x-errorCodes": { "39124": "IAP request platform [{platformId}] user id is not linked with current user", "39144": "Steam IAP config not found in namespace [{namespace}].", "39184": "Steam api exception with error code [{errorCode}] and error message [{message}]", "39185": "This endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]", "39621": "Steam api common exception with status code [statusCode] details: [details]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions": { "get": { "description": "Query user subscription, default sort by updatedAtOther detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserThirdPartySubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "if platform is Google, please pass google subscription product id. if platform is Apple, please pass apple subscription group id", "in": "query", "name": "groupId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "query", "name": "platform", "required": false, "type": "string" }, { "description": "if platform is Google, please pass google subscription plan id. if platform is Apple, please pass apple subscription product id", "in": "query", "name": "productId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartyUserSubscriptionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user subscription.", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/platforms/{platform}/ownership/byGroupId": { "get": { "description": "Get user third party subscription by subscription group id.", "operationId": "getThirdPartyPlatformSubscriptionOwnershipByGroupId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "path", "name": "platform", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "if platform is Google, please pass google subscription product id. if platform is Apple, please pass apple subscription group id", "in": "query", "name": "groupId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user third party platform subscription ownership by subscription group id", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP[READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/platforms/{platform}/ownership/byProductId": { "get": { "description": "Get user third party subscription by subscription product id.", "operationId": "getThirdPartyPlatformSubscriptionOwnershipByProductId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "path", "name": "platform", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "if platform is Google, please pass google subscription plan id. if platform is Apple, please pass apple subscription product id", "in": "query", "name": "productId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user third party platform subscription ownership by subscription product id", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP[READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/transactions": { "get": { "description": "Admin query user subscription transactions, default sort by startAt timeOther detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserThirdPartySubscriptionTransactions", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "if platform is Google, please pass google subscription product id. if platform is Apple, please pass apple subscription group id", "in": "query", "name": "groupId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "query", "name": "platform", "required": false, "type": "string" }, { "description": "if platform is Google, please pass google subscription plan id. if platform is Apple, please pass apple subscription product id", "in": "query", "name": "productId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Admin query user subscription transactions.", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/transactions/{id}": { "get": { "description": "Admin get user subscription details.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getThirdPartySubscriptionDetails", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39149\u003c/td\u003e\u003ctd\u003eThird Party Subscription [{id}] not found for user [{userId}] in the namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get user subscription transaction details.", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39149": "Third Party Subscription [{id}] not found for user [{userId}] in the namespace [{namespace}]." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/transactions/{id}/histories": { "get": { "description": "Get Subscription Transaction Update History", "operationId": "getSubscriptionHistory", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionHistoryPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Get User Subscription Transaction Update History", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP[READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/transactions/{id}/sync": { "put": { "description": "Sync Subscription Status", "operationId": "syncSubscriptionTransaction", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39131\u003c/td\u003e\u003ctd\u003eInvalid Apple IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39136\u003c/td\u003e\u003ctd\u003eRequest Apple API failed with status code [{statusCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39137\u003c/td\u003e\u003ctd\u003eVerify Apple transaction failed with status [{status}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39149\u003c/td\u003e\u003ctd\u003eThird Party Subscription Transaction [{id}] not found for user [{userId}] in the namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Subscription transaction", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39131": "Invalid Apple IAP config under namespace [{namespace}]: [{message}]", "39136": "Request Apple API failed with status code [{statusCode}] and error message [{message}]", "39137": "Verify Apple transaction failed with status [{status}] and error message [{message}]", "39149": "Third Party Subscription Transaction [{id}] not found for user [{userId}] in the namespace [{namespace}]." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/{id}": { "get": { "description": "Admin get user subscription details.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getThirdPartyUserSubscriptionDetails", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartyUserSubscriptionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39149\u003c/td\u003e\u003ctd\u003eThird Party User Subscription [{id}] not found for user [{userId}] in the namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get user subscription details.", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39149": "Third Party User Subscription [{id}] not found for user [{userId}] in the namespace [{namespace}]." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/iap/subscriptions/{id}/sync": { "put": { "description": "Sync Subscription Status", "operationId": "syncSubscription", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartyUserSubscriptionInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39131\u003c/td\u003e\u003ctd\u003eInvalid Apple IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39136\u003c/td\u003e\u003ctd\u003eRequest Apple API failed with status code [{statusCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39137\u003c/td\u003e\u003ctd\u003eVerify Apple transaction failed with status [{status}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39149\u003c/td\u003e\u003ctd\u003eThird Party Subscription Transaction [{id}] not found for user [{userId}] in the namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39150\u003c/td\u003e\u003ctd\u003eThird Party User Subscription [{id}] not found for user [{userId}] in the namespace [{namespace}]..\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Subscription Status", "tags": [ "IAP(Subscription)" ], "x-errorCodes": { "39131": "Invalid Apple IAP config under namespace [{namespace}]: [{message}]", "39136": "Request Apple API failed with status code [{statusCode}] and error message [{message}]", "39137": "Verify Apple transaction failed with status [{status}] and error message [{message}]", "39149": "Third Party Subscription Transaction [{id}] not found for user [{userId}] in the namespace [{namespace}].", "39150": "Third Party User Subscription [{id}] not found for user [{userId}] in the namespace [{namespace}].." }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:IAP[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders": { "get": { "consumes": [ "application/json" ], "description": "Query user orders.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserOrders", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "discounted", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "itemId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CLOSED", "DELETED", "FULFILLED", "FULFILL_FAILED", "INIT", "REFUNDED", "REFUNDING", "REFUND_FAILED" ], "in": "query", "name": "status", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user orders", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Admin Create an order. The result contains the checkout link and payment token. User with permission SANDBOX will create sandbox order that not real paid for xsolla/alipay and not validate price for wxpay.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;It will be forbidden while the user is banned: ORDER_INITIATE or ORDER_AND_PAYMENT\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;sandbox default value is \u0026lt;b\u0026gt;false\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;platform default value is \u0026lt;b\u0026gt;Other\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for ext field\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "adminCreateUserOrder", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AdminOrderCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20018\u003c/td\u003e\u003ctd\u003eecommerce item type not supported\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32121\u003c/td\u003e\u003ctd\u003eOrder price mismatch\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32122\u003c/td\u003e\u003ctd\u003eItem type [{itemType}] does not support\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32123\u003c/td\u003e\u003ctd\u003eItem is not purchasable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32126\u003c/td\u003e\u003ctd\u003eSection ID is required for placing this order\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32124\u003c/td\u003e\u003ctd\u003eInvalid currency namespace\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32127\u003c/td\u003e\u003ctd\u003eDiscount code [{code}] can't be used on this item: {tips}\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32128\u003c/td\u003e\u003ctd\u003eDiscount code [{code}] can not be used with other code together\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32129\u003c/td\u003e\u003ctd\u003eCan't use discount code on free order\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32130\u003c/td\u003e\u003ctd\u003eThe total discount amount cannot exceed the order price\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20016\u003c/td\u003e\u003ctd\u003eaction is banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49147\u003c/td\u003e\u003ctd\u003ePublished season does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1100001\u003c/td\u003e\u003ctd\u003erecord not found: inventory\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003einsufficient inventory capacity (max. slots)\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32175\u003c/td\u003e\u003ctd\u003eExceed item [{itemId}] max count [{maxCount}] per user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32176\u003c/td\u003e\u003ctd\u003eExceed item [{itemId}] max count [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32178\u003c/td\u003e\u003ctd\u003eUser [{userId}] already owned all durable items in flexible bundle [{bundleId}], namespace: [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31177\u003c/td\u003e\u003ctd\u003ePermanent item already owned\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49183\u003c/td\u003e\u003ctd\u003ePass item does not match published season pass\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49184\u003c/td\u003e\u003ctd\u003eTier item does not match published season tier\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49185\u003c/td\u003e\u003ctd\u003eSeason has not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49186\u003c/td\u003e\u003ctd\u003ePass already owned\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49187\u003c/td\u003e\u003ctd\u003eExceed max tier count\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37172\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37173\u003c/td\u003e\u003ctd\u003eCode [{code}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37174\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37175\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37177\u003c/td\u003e\u003ctd\u003eCode redemption not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37178\u003c/td\u003e\u003ctd\u003eCode redemption already ended\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37179\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per campaign per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30771\u003c/td\u003e\u003ctd\u003eItem [{itemId}] not found in User Section [{sectionId}], UserId [{userId}], Namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30772\u003c/td\u003e\u003ctd\u003eSection [{sectionId}] is not available or expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Create an order", "tags": [ "Order" ], "x-errorCodes": { "1100001": "record not found: inventory", "20002": "validation error", "20006": "optimistic lock", "20016": "action is banned", "20018": "ecommerce item type not supported", "20024": "insufficient inventory capacity (max. slots)", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30771": "Item [{itemId}] not found in User Section [{sectionId}], UserId [{userId}], Namespace [{namespace}]", "30772": "Section [{sectionId}] is not available or expired", "31177": "Permanent item already owned", "32121": "Order price mismatch", "32122": "Item type [{itemType}] does not support", "32123": "Item is not purchasable", "32124": "Invalid currency namespace", "32126": "Section ID is required for placing this order", "32127": "Discount code [{code}] can't be used on this item: {tips}", "32128": "Discount code [{code}] can not be used with other code together", "32129": "Can't use discount code on free order", "32130": "The total discount amount cannot exceed the order price", "32175": "Exceed item [{itemId}] max count [{maxCount}] per user", "32176": "Exceed item [{itemId}] max count [{maxCount}]", "32178": "User [{userId}] already owned all durable items in flexible bundle [{bundleId}], namespace: [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "35124": "Wallet [{currencyCode}] has insufficient balance", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]", "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37172": "Campaign [{campaignId}] is inactive in namespace [{namespace}]", "37173": "Code [{code}] is inactive in namespace [{namespace}]", "37174": "Exceeded max redeem count per code [{maxCount}]", "37175": "Exceeded max redeem count per code per user [{maxCount}]", "37177": "Code redemption not started", "37178": "Code redemption already ended", "37179": "Exceeded max redeem count per campaign per user [{maxCount}]", "38121": "Duplicate permanent item exists", "49147": "Published season does not exist", "49183": "Pass item does not match published season pass", "49184": "Tier item does not match published season tier", "49185": "Season has not started", "49186": "Pass already owned", "49187": "Exceed max tier count" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders/countOfItem": { "get": { "description": "This API is used to get the count of purchased item which is the order target.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Item purchased count\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "countOfPurchasedItem", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PurchasedItemCount" } } }, "security": [ { "authorization": [] } ], "summary": "Get the count of purchased item", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders/{orderNo}": { "get": { "consumes": [ "application/json" ], "description": "Get an order.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get an order", "tags": [ "Order" ], "x-errorCodes": { "32141": "Order [{orderNo}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update order status.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateUserOrderStatus", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/OrderUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update order status", "tags": [ "Order" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "32141": "Order [{orderNo}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders/{orderNo}/fulfill": { "put": { "consumes": [ "application/json" ], "description": "Fulfill an order if the order is charged but fulfill failed.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfilled order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "fulfillUserOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32172\u003c/td\u003e\u003ctd\u003eInvalid order status [{status}] for order [{orderNo}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill an order", "tags": [ "Order" ], "x-errorCodes": { "20006": "optimistic lock", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "32141": "Order [{orderNo}] does not exist", "32172": "Invalid order status [{status}] for order [{orderNo}]", "35123": "Wallet [{walletId}] is inactive" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders/{orderNo}/grant": { "get": { "deprecated": true, "description": "Get user order grant that fulfilled by this order.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get order grant\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserOrderGrant", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderGrantInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get user order grant", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders/{orderNo}/history": { "get": { "description": "Get user order history.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get order history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserOrderHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/OrderHistoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user order histories", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders/{orderNo}/notifications": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This API is used as a web hook for payment notification from justice payment service.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Process result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "processUserOrderNotification", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TradeNotification" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "process successfully" }, "400": { "description": "process failed" } }, "security": [ { "authorization": [] } ], "summary": "Web hook for payment notification", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/orders/{orderNo}/receipt.pdf": { "get": { "description": "Download user order receipt by orderNo.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: order receipt pdf\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "downloadUserOrderReceipt", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/pdf" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32173\u003c/td\u003e\u003ctd\u003eReceipt of order [{orderNo}] is not downloadable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Download user order receipt", "tags": [ "Order" ], "x-errorCodes": { "32141": "Order [{orderNo}] does not exist", "32173": "Receipt of order [{orderNo}] is not downloadable" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/payment/orders": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This API is used to create payment order from justice service. The result contains the payment station url.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;It will be forbidden while the user is banned: PAYMENT_INITIATE or ORDER_AND_PAYMENT\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for custom parameters and meta data\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "createUserPaymentOrder", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentOrderCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33121\u003c/td\u003e\u003ctd\u003eRecurring payment failed with code: [{errorCode}] and message: [{errorMessage}] by provider: [{provider}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33122\u003c/td\u003e\u003ctd\u003eSubscription not match when create payment order\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20016\u003c/td\u003e\u003ctd\u003eaction is banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33145\u003c/td\u003e\u003ctd\u003eRecurring token not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser [{userId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create payment order", "tags": [ "Payment" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "20008": "user [{userId}] does not exist in namespace [{namespace}]", "20016": "action is banned", "33121": "Recurring payment failed with code: [{errorCode}] and message: [{errorMessage}] by provider: [{provider}]", "33122": "Subscription not match when create payment order", "33141": "Payment Order [{paymentOrderNo}] does not exist", "33145": "Recurring token not found", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:PAYMENT [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/payment/orders/{paymentOrderNo}/refund": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This API is used to refund order by paymentOrderNo from justice service.", "operationId": "refundUserPaymentOrder", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentOrderRefund" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33172\u003c/td\u003e\u003ctd\u003ePayment order [{paymentOrderNo}] is not refundable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Refund payment order", "tags": [ "Payment" ], "x-errorCodes": { "20002": "validation error", "33141": "Payment Order [{paymentOrderNo}] does not exist", "33172": "Payment order [{paymentOrderNo}] is not refundable" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:PAYMENT [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/platform/closure/history": { "get": { "description": "Get user platform account closure history.\u0026lt;br\u0026gt;", "operationId": "getUserPlatformAccountClosureHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/PlatformAccountClosureHistoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user platform account closure history", "tags": [ "Platform Account Closure" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:INTEGRATION [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/redemption": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Redeem code. If the campaign which the code belongs to is INACTIVE, the code couldn\u0026#39;t be redeemed even if its status is ACTIVE.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Redeem result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "applyUserRedemption", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RedeemRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RedeemResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37172\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37173\u003c/td\u003e\u003ctd\u003eCode [{code}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37174\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37175\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37177\u003c/td\u003e\u003ctd\u003eCode redemption not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37178\u003c/td\u003e\u003ctd\u003eCode redemption already ended\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37179\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per campaign per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Redeem code", "tags": [ "Campaign" ], "x-errorCodes": { "20002": "validation error", "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37172": "Campaign [{campaignId}] is inactive in namespace [{namespace}]", "37173": "Code [{code}] is inactive in namespace [{namespace}]", "37174": "Exceeded max redeem count per code [{maxCount}]", "37175": "Exceeded max redeem count per code per user [{maxCount}]", "37177": "Code redemption not started", "37178": "Code redemption already ended", "37179": "Exceeded max redeem count per campaign per user [{maxCount}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:REDEMPTION [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/revocation": { "put": { "consumes": [ "application/json" ], "description": "Do revocation.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: revocation results\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "doRevocation", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RevocationRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevocationResult" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e41171\u003c/td\u003e\u003ctd\u003eRequest has different payload on previous call\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e41172\u003c/td\u003e\u003ctd\u003eRequest has different user id on previous call\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Do revocation.", "tags": [ "Revocation" ], "x-errorCodes": { "41171": "Request has different payload on previous call", "41172": "Request has different user id on previous call" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:REVOCATION[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/session/xbl": { "put": { "consumes": [ "application/json" ], "description": "This API is used to register/update a session on xbox.", "operationId": "registerXblSessions", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/XblUserSessionRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": { "type": "object" }, "type": "object" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Register/Update a session", "tags": [ "Session(Platform)" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:INTEGRATION[UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions": { "get": { "consumes": [ "application/json" ], "description": "Query user subscriptions.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserSubscriptions", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "enum": [ "CHARGED", "CHARGE_FAILED", "NEVER", "RECURRING_CHARGING", "SETUP" ], "in": "query", "name": "chargeStatus", "required": false, "type": "string" }, { "in": "query", "name": "itemId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "sku", "required": false, "type": "string" }, { "enum": [ "ACTIVE", "CANCELLED", "EXPIRED", "INIT" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "enum": [ "PLATFORM", "USER" ], "in": "query", "name": "subscribedBy", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user subscriptions", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/activities": { "get": { "description": "Get user subscription activity.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated subscription activity\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserSubscriptionActivities", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "excludeSystem", "required": false, "type": "boolean", "x-omitempty": false }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "subscriptionId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionActivityPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Get user subscription activity", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/platformSubscribe": { "post": { "consumes": [ "application/json" ], "description": "Free subscribe by platform, can used by other justice service to redeem/reward the subscription.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: result subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "platformSubscribeSubscription", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PlatformSubscribeRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionInfo" } }, "201": { "description": "platform subscribe request processed" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40121\u003c/td\u003e\u003ctd\u003eItem type [{itemType}] does not support\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser [{userId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Free subscribe by platform", "tags": [ "Subscription" ], "x-errorCodes": { "20002": "validation error", "20008": "user [{userId}] does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "40121": "Item type [{itemType}] does not support" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/subscribable/byItemId": { "get": { "description": "Check user subscription subscribable by itemId, ACTIVE USER subscription can\u0026#39;t do subscribe again.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: subscribable info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "checkUserSubscriptionSubscribableByItemId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Subscribable" } } }, "security": [ { "authorization": [] } ], "summary": "Check user subscription subscribable", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}": { "delete": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[TEST FACILITY ONLY] Forbidden in live environment. \u0026lt;/b\u0026gt; Delete user subscription.", "operationId": "deleteUserSubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "delete user subscription successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete user subscription", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [DELETE]" } }, "get": { "consumes": [ "application/json" ], "description": "Get user subscription.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserSubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40141\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user subscription", "tags": [ "Subscription" ], "x-errorCodes": { "40141": "Subscription [{subscriptionId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}/cancel": { "put": { "consumes": [ "application/json" ], "description": "Cancel a subscription, only ACTIVE subscription can be cancelled. \u0026lt;b\u0026gt;Ensure successfully cancel, recommend at least 1 day before current period ends, otherwise it may be charging or charged.\u0026lt;/b\u0026gt;\u0026lt;br\u0026gt;Set immediate true, the subscription will be terminated immediately, otherwise till the end of current billing cycle.\u0026lt;br\u0026gt;Set force true, will ignore the error if subscription is during recurring charging.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: cancelled subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "cancelSubscription", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CancelRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "force", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40141\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40171\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] is not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40172\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] is charging, waiting for payment notification\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Cancel a subscription", "tags": [ "Subscription" ], "x-errorCodes": { "40141": "Subscription [{subscriptionId}] does not exist", "40171": "Subscription [{subscriptionId}] is not active", "40172": "Subscription [{subscriptionId}] is charging, waiting for payment notification" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}/grant": { "put": { "consumes": [ "application/json" ], "description": "Grant days to a subscription, if grantDays is positive, it will add free days and push the next billing date by the amount of day.\u0026lt;br\u0026gt;if the grantDays is negative or zero, it only apply to active/cancelled subscription, remove days will decrease current period end, and move the next billing date closer.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "grantDaysToSubscription", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/GrantSubscriptionDaysRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40141\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Grant days to a subscription", "tags": [ "Subscription" ], "x-errorCodes": { "40141": "Subscription [{subscriptionId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}/history": { "get": { "description": "Get user subscription billing histories.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated subscription billing history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserSubscriptionBillingHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "excludeFree", "required": false, "type": "boolean", "x-omitempty": false }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BillingHistoryPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Get user subscription billing histories", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}/notifications": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; This API is used as a web hook for payment notification from justice payment service.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Process result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "processUserSubscriptionNotification", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TradeNotification" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "process successfully" }, "400": { "description": "process failed" } }, "security": [ { "authorization": [] } ], "summary": "Web hook for payment notification", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/tickets/{boothName}": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Acquire ticket(code/key) based on booth name.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: acquire result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "acquireUserTicket", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TicketAcquireRequest" } }, { "in": "path", "name": "boothName", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TicketAcquireResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37041\u003c/td\u003e\u003ctd\u003eTicket booth [{boothName}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37071\u003c/td\u003e\u003ctd\u003eInsufficient ticket in booth [{boothName}] in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Acquire ticket", "tags": [ "Ticket" ], "x-errorCodes": { "20002": "validation error", "37041": "Ticket booth [{boothName}] does not exist in namespace [{namespace}]", "37071": "Insufficient ticket in booth [{boothName}] in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:TICKET [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/currencies/summary": { "get": { "consumes": [ "application/json" ], "description": "Get user currency wallet summary.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;(READ)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: currency wallet summary\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryUserCurrencyWallets", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CurrencyWallet" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user currency wallet summary", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/currencies/{currencyCode}/debit": { "put": { "consumes": [ "application/json" ], "description": "Debit a user wallet by currency code, default is debit system wallet.", "operationId": "debitUserWalletByCurrencyCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/DebitByCurrencyCodeRequest" } }, { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Debit a user wallet by currency code", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "35124": "Wallet [{currencyCode}] has insufficient balance" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/currencies/{currencyCode}/transactions": { "get": { "consumes": [ "application/json" ], "description": "List user currency transactions ordered by create time desc.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: currency transaction info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listUserCurrencyTransactions", "parameters": [ { "description": "currencyCode", "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletTransactionPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35141\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "List user currency transactions", "tags": [ "Wallet" ], "x-errorCodes": { "35141": "Wallet [{walletId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{currencyCode}/balanceCheck": { "post": { "consumes": [ "application/json" ], "description": "Checks if the user has enough balance based on the provided criteria.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: boolean value indicating if the user has enough balance\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "checkBalance", "parameters": [ { "in": "body", "name": "request", "required": true, "schema": { "$ref": "#/definitions/DebitByWalletPlatformRequest" } }, { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Successfully determined if user has enough balance." }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Check if a user has enough balance", "tags": [ "Wallet" ], "x-errorCodes": { "35123": "Wallet [{walletId}] is inactive", "35124": "Wallet [{currencyCode}] has insufficient balance" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{currencyCode}/check": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Check wallet by balance origin and currency code whether it\u0026#39;s inactive.", "operationId": "checkWallet", "parameters": [ { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "in": "query", "name": "origin", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "check successfully" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Check wallet by balance origin and currency code", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "35123": "Wallet [{walletId}] is inactive" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{currencyCode}/credit": { "put": { "consumes": [ "application/json" ], "description": "Credit a user wallet by currency code and balance origin, if wallet not exists, it will create a new wallet.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;(UPDATE)\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "creditUserWallet", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CreditRequest" } }, { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Credit a user wallet by currency code and balance origin", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error", "35123": "Wallet [{walletId}] is inactive" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{currencyCode}/debitByWalletPlatform": { "put": { "consumes": [ "application/json" ], "description": "Debit user wallet by currency code and client platform.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for metadata\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "debitByWalletPlatform", "parameters": [ { "in": "body", "name": "request", "required": true, "schema": { "$ref": "#/definitions/DebitByWalletPlatformRequest" } }, { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformWallet" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Debit user wallet by currency code and client platform", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error", "35123": "Wallet [{walletId}] is inactive", "35124": "Wallet [{currencyCode}] has insufficient balance" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{currencyCode}/payment": { "put": { "consumes": [ "application/json" ], "description": "Pay with user wallet by currency code and client platform.", "operationId": "payWithUserWallet", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentRequest" } }, { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformWallet" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Pay with user wallet by currency code and client platform", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error", "35123": "Wallet [{walletId}] is inactive", "35124": "Wallet [{currencyCode}] has insufficient balance" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{walletId}": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "get a user wallet.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: wallet info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getUserWallet", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "path", "name": "walletId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35141\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a user wallet", "tags": [ "Wallet" ], "x-errorCodes": { "35141": "Wallet [{walletId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{walletId}/debit": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "Debit a user wallet.", "operationId": "debitUserWallet", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/DebitRequest" } }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "path", "name": "walletId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35141\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Debit a user wallet", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "35123": "Wallet [{walletId}] is inactive", "35124": "Wallet [{currencyCode}] has insufficient balance", "35141": "Wallet [{walletId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{walletId}/disable": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "disable a user wallet.", "operationId": "disableUserWallet", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "walletId", "in": "path", "name": "walletId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35141\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Disable a user wallet", "tags": [ "Wallet" ], "x-errorCodes": { "20006": "optimistic lock", "35141": "Wallet [{walletId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{walletId}/enable": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "enable a user wallet.", "operationId": "enableUserWallet", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "walletId", "in": "path", "name": "walletId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35141\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Enable a user wallet", "tags": [ "Wallet" ], "x-errorCodes": { "20006": "optimistic lock", "35141": "Wallet [{walletId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/users/{userId}/wallets/{walletId}/transactions": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "List user wallet transactions ordered by create time desc.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: wallet transaction info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listUserWalletTransactions", "parameters": [ { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "walletId", "in": "path", "name": "walletId", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/DetailedWalletTransactionPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35141\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "List user wallet transactions", "tags": [ "Wallet" ], "x-errorCodes": { "35141": "Wallet [{walletId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/admin/namespaces/{namespace}/views": { "get": { "description": "This API is used to list all views.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of views\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "listViews", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ListViewInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "List all views", "tags": [ "View" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "This API is used to create a view.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created a view\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for localization extension\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "createView", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ViewCreate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullViewInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create a view", "tags": [ "View" ], "x-errorCodes": { "20002": "validation error", "30021": "Default language [{language}] required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [CREATE]" } } }, "/platform/admin/namespaces/{namespace}/views/{viewId}": { "delete": { "description": "This API is used to delete a view.It will also delete all the related sections", "operationId": "deleteView", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "viewId", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete view successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30641\u003c/td\u003e\u003ctd\u003eView [{viewId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a view", "tags": [ "View" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30641": "View [{viewId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [DELETE]" } }, "get": { "description": "This API is used to get a view.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: view data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getView", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "viewId", "required": true, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullViewInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30641\u003c/td\u003e\u003ctd\u003eView [{viewId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a view", "tags": [ "View" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30641": "View [{viewId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "This API is used to update a view.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated view data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for localization extension\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "updateView", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ViewUpdate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "viewId", "required": true, "type": "string" }, { "in": "query", "name": "storeId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullViewInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30021\u003c/td\u003e\u003ctd\u003eDefault language [{language}] required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30641\u003c/td\u003e\u003ctd\u003eView [{viewId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30173\u003c/td\u003e\u003ctd\u003ePublished store can't modify content\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update a view", "tags": [ "View" ], "x-errorCodes": { "20002": "validation error", "30021": "Default language [{language}] required", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30173": "Published store can't modify content", "30641": "View [{viewId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/wallet/config": { "get": { "description": "get wallet config", "operationId": "getWalletConfig", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get wallet config of a namespace", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "Update wallet config of a namespace", "operationId": "updateWalletConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/WalletConfigUpdate" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Update wallet config", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET:CONFIG [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/wallets": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "Query wallets.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated wallets info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryWallets", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "currencyCode", "in": "query", "name": "currencyCode", "required": false, "type": "string" }, { "default": 20, "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "balance origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "in": "query", "name": "origin", "required": false, "type": "string" }, { "description": "userId", "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query wallets", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET [READ]" } } }, "/platform/admin/namespaces/{namespace}/wallets/credit": { "post": { "consumes": [ "application/json" ], "description": "Credit different users\u0026#39; wallets.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: bulk credit result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "bulkCredit", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/BulkCreditRequest" }, "type": "array" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkCreditResult" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Credit different users' wallets", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/wallets/debit": { "post": { "consumes": [ "application/json" ], "description": "Debit different users\u0026#39; wallets.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: bulk credit result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "bulkDebit", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/BulkDebitRequest" }, "type": "array" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BulkDebitResult" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Debit different users' wallets", "tags": [ "Wallet" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET [UPDATE]" } } }, "/platform/admin/namespaces/{namespace}/wallets/{walletId}": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "get a wallet by wallet id.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: wallet info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getWallet", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "walletId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35141\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a wallet by wallet id", "tags": [ "Wallet" ], "x-errorCodes": { "35141": "Wallet [{walletId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:WALLET [READ]" } } }, "/platform/admin/orders": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Sync orders. If response contains nextEvaluatedKey, please use it as query param in the next call to fetch the next batch, a batch has 1000 elements or less.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: sync orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncOrders", "parameters": [ { "description": "exclude ISODateTimeFormat no millis like yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "end", "required": true, "type": "string" }, { "description": "include ISODateTimeFormat no millis like yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "start", "required": true, "type": "string" }, { "in": "query", "name": "nextEvaluatedKey", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderSyncResult" } } }, "security": [ { "authorization": [] } ], "summary": "Sync orders", "tags": [ "Order(Dedicated)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:ORDER [READ]" } } }, "/platform/admin/payment/config/merchant/adyenconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test adyen configuration. \u0026lt;h4\u0026gt;Check List:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;apiKey\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;merchantAccount\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h4\u0026gt;Non-check list:\u0026lt;/h4\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;notificationHmacKey\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;notificationUsername\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;notificationPassword\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;liveEndpointUrlPrefix\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;allowedPaymentMethods\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;blockedPaymentMethods\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;settings\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test adyen config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testAdyenConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AdyenConfig" } }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test adyen configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/alipayconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test AliPay configuration.Reference: \u0026lt;a href=\u0026#34;https://docs.open.alipay.com/270/alipay.trade.page.pay\u0026#34;\u0026gt;Alipay Document\u0026lt;/a\u0026gt;.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testAliPayConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AliPayConfig" } }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test Alipay configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/checkoutconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test checkout.com configuration. \u0026lt;h4\u0026gt;Check List:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;publicKey\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;secretKey\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testCheckoutConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CheckoutConfig" } }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test checkout.com configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/matched": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Debug matched payment merchant config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment merchant config info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "debugMatchedPaymentMerchantConfig", "parameters": [ { "default": "*", "description": "namespace", "in": "query", "name": "namespace", "required": false, "type": "string" }, { "default": "*", "description": "region", "in": "query", "name": "region", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Debug matched payment merchant config(internal)", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/neonpayconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Check Neon Pay configuration, Reference: \u0026lt;a href=\u0026#34;https://docs.neonpay.com/docs/checkout\u0026#34;\u0026gt;Neon Pay Document\u0026lt;/a\u0026gt;.\u0026lt;h4\u0026gt;Check List:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;apiKey\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;webhookSecretKey\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testNeonPayConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/NeonPayConfig" } }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test Neon Pay configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/paypalconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test PayPal configuration. \u0026lt;h4\u0026gt;Check List:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;clientID\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;clientSecret\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h4\u0026gt;Non-check list:\u0026lt;/h4\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;webHookId\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testPayPalConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PayPalConfig" } }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test PayPal configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/stripeconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test stripe configuration. \u0026lt;h4\u0026gt;Check List:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;secretKey\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;allowedPaymentMethodTypes\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h4\u0026gt;Non-check list:\u0026lt;/h4\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;publishableKey\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;webhookSecret\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test adyen config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testStripeConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/StripeConfig" } }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test stripe configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/wxpayconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test WxPay configuration. Reference: \u0026lt;a href=\u0026#34;https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1\u0026#34;\u0026gt;WxPay Document\u0026lt;/a\u0026gt;.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test WxPay config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testWxPayConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/WxPayConfigRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test wxPay configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/xsollaconfig/test": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Check xsolla configuration, Reference: \u0026lt;a href=\u0026#34;https://developers.xsolla.com/?#simple-checkout\u0026#34;\u0026gt;Xsolla Document\u0026lt;/a\u0026gt;.\u0026lt;h4\u0026gt;Check List:\u0026lt;/h4\u0026gt; \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;merchantId\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;projectId\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;apiKey\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h4\u0026gt;Non-check list:\u0026lt;/h4\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;projectSecretKey\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testXsollaConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/XsollaConfig" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } } }, "security": [ { "authorization": [] } ], "summary": "Test xsolla configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment merchant config by id.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment merchant config info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentMerchantConfig_1", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get payment merchant config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/adyenconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update adyen config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateAdyenConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AdyenConfig" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update adyen config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/adyenconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test adyen configuration in payment merchant config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test adyen config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testAdyenConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test adyen configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/alipayconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update alipay configuration.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateAliPayConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AliPayConfig" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update alipay configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/alipayconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test AliPay configuration in payment merchant config. Reference: \u0026lt;a href=\u0026#34;https://docs.open.alipay.com/270/alipay.trade.page.pay\u0026#34;\u0026gt;Alipay Document\u0026lt;/a\u0026gt;.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test alipay config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testAliPayConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test Alipay configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/checkoutconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update checkout.com config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateCheckoutConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CheckoutConfig" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update checkout.com config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/checkoutconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test checkout.com configuration in payment merchant config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testCheckoutConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test checkout.com configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/neonpayconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update Neon Pay config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateNeonPayConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/NeonPayConfig" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update Neon Pay config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/neonpayconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test Neon Pay configuration in payment merchant config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testNeonPayConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test Neon Pay configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/paypalconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update PayPal config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePayPalConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PayPalConfig" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update PayPal config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/paypalconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test PayPal configuration in payment merchant config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testPayPalConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eNumericErrorCode\u003c/td\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33045\u003c/td\u003e\u003ctd\u003eerrors.net.accelbyte.platform.payment.payment_merchant_config_not_found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test PayPal configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33045": "errors.net.accelbyte.platform.payment.payment_merchant_config_not_found" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/stripeconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update stripe config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateStripeConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/StripeConfig" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update stripe config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/stripeconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test stripe configuration in payment merchant config. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test adyen config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testStripeConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test stripe configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/wxpayconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update wxpay configuration.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateWxPayConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/WxPayConfigRequest" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update wxpay configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/wxpayconfig/cert": { "put": { "consumes": [ "multipart/form-data" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Upload wxpay cert file.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateWxPayConfigCert", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Upload wxpay cert file", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/wxpayconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test WxPay configuration in payment merchant config. Reference: \u0026lt;a href=\u0026#34;https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1\u0026#34;\u0026gt;WxPay Document\u0026lt;/a\u0026gt;.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test WxPay config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testWxPayConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test wxPay configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/xsollaconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update xsolla configuration. Reference: \u0026lt;a href=\u0026#34;https://developers.xsolla.com/?#simple-checkout\u0026#34;\u0026gt;Xsolla Document\u0026lt;/a\u0026gt;.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateXsollaConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/XsollaConfig" } }, { "in": "path", "name": "id", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "validate", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eUpdate [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update xsolla configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33221": "Update [{paymentProvider}] config in payment merchant config [{id}] failed with message [{errMsg}]", "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/merchant/{id}/xsollaconfig/test": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Test xsolla configuration in payment merchant config. Reference: \u0026lt;a href=\u0026#34;https://developers.xsolla.com/?#simple-checkout\u0026#34;\u0026gt;Xsolla Document\u0026lt;/a\u0026gt;.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: test xsolla config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "testXsollaConfigById", "parameters": [ { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TestResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Test xsolla configuration by id", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/merchant/{id}/xsollauiconfig": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update xsolla UI configuration.Reference: \u0026lt;a href=\u0026#34;https://developers.xsolla.com/api.html#ui-integrations\u0026#34;\u0026gt;Xsolla Document\u0026lt;/a\u0026gt;.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated payment merchant config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updateXsollaUIConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/XsollaPaywallConfigRequest" } }, { "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentMerchantConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33242\u003c/td\u003e\u003ctd\u003ePayment merchant config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update xsolla UI configuration", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33242": "Payment merchant config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/provider": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Query payment provider config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider config list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryPaymentProviderConfig", "parameters": [ { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "description": "namespace", "in": "query", "name": "namespace", "required": false, "type": "string" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "region", "in": "query", "name": "region", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentProviderConfigPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query payment provider config", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Create payment provider config.\u0026lt;br\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Parameters:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;namespace, * indicates all namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;region\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;region, * indicates all regions\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;aggregate\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;aggregate payment provider, such as XSOLLA, ADYEN, STRIPE\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;specials\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;List\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;special payment provider, such as ALIPAY, WXPAY\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;payment provider applied has priority: \u0026lt;ol\u0026gt;\u0026lt;li\u0026gt;namespace and region match\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;namespace matches and region is *\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;region matches and namespace is *\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;namespace and region are *\u0026lt;/li\u0026gt;\u0026lt;/ol\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "createPaymentProviderConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentProviderConfigEdit" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentProviderConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eTaxJar api token required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33271\u003c/td\u003e\u003ctd\u003ePayment provider config for namespace [{namespace}] and region [{region}] already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create payment provider config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "20002": "validation error", "33221": "TaxJar api token required", "33271": "Payment provider config for namespace [{namespace}] and region [{region}] already exists" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [CREATE]" } } }, "/platform/admin/payment/config/provider/aggregate": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get aggregate payment providers, such as XSOLLA, ADYEN.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getAggregatePaymentProviders", "parameters": [], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get aggregate payment providers", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/provider/matched": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Debug matched payment provider config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "debugMatchedPaymentProviderConfig", "parameters": [ { "default": "*", "description": "namespace", "in": "query", "name": "namespace", "required": false, "type": "string" }, { "default": "*", "description": "region", "in": "query", "name": "region", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentProviderConfigInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33241\u003c/td\u003e\u003ctd\u003ePayment provider config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Debug matched payment provider config(internal)", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33241": "Payment provider config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/provider/special": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get special payment providers, such as ALIPAY, WXPAY.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getSpecialPaymentProviders", "parameters": [], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get special payment providers", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } } }, "/platform/admin/payment/config/provider/{id}": { "delete": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Delete payment provider config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "deletePaymentProviderConfig", "parameters": [ { "description": "id", "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete successfully" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33241\u003c/td\u003e\u003ctd\u003ePayment provider config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Delete payment provider config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "33241": "Payment provider config [{id}] does not exist" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [DELETE]" } }, "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update payment provider config.\u0026lt;br\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Parameters:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;namespace\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;namespace, * indicates all namespace\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;region\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;region, * indicates all regions\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;aggregate\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;aggregate payment provider, such as XSOLLA, ADYEN, STRIPE\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;specials\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;List\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;special payment provider, such as ALIPAY, WXPAY\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;payment provider applied has priority: \u0026lt;ol\u0026gt;\u0026lt;li\u0026gt;namespace and region match\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;namespace matches and region is *\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;region matches and namespace is *\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;namespace and region are *\u0026lt;/li\u0026gt;\u0026lt;/ol\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePaymentProviderConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentProviderConfigEdit" } }, { "description": "id", "in": "path", "name": "id", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentProviderConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eTaxJar api token required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33241\u003c/td\u003e\u003ctd\u003ePayment provider config [{id}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33271\u003c/td\u003e\u003ctd\u003ePayment provider config for namespace [{namespace}] and region [{region}] already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update payment provider config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "20002": "validation error", "33221": "TaxJar api token required", "33241": "Payment provider config [{id}] does not exist", "33271": "Payment provider config for namespace [{namespace}] and region [{region}] already exists" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/config/tax": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment global tax config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment provider list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentTaxConfig", "parameters": [], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentTaxConfigInfo" } } }, "security": [ { "authorization": [] } ], "summary": "Get payment global tax config", "tags": [ "PaymentConfig" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [READ]" } }, "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Update payment tax config.\u0026lt;br\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;p\u0026gt;\u0026lt;strong\u0026gt;Request Body Parameters:\u0026lt;/strong\u0026gt;\u0026lt;/p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Parameter\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;taxJarEnabled\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Boolean\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;false\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;taxJarApiToken\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;false\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;required, when taxJarEnabled is true and there is no existing token\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;sandboxTaxJarApiToken\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;false\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;optional\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;taxJarProductCodesMapping\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Map\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;key is item type(APP|COINS|INGAMEITEM|BUNDLE|CODE|SUBSCRIPTION) and value is product tax code: https://developers.taxjar.com/api/reference/?ruby#get-list-tax-categories\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;/ol\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: payment global tax config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "updatePaymentTaxConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentTaxConfigEdit" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentTaxConfigInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33221\u003c/td\u003e\u003ctd\u003eTaxJar api token required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Update payment global tax config", "tags": [ "PaymentConfig" ], "x-errorCodes": { "20002": "validation error", "33221": "TaxJar api token required" }, "x-security": { "userPermissions": "ADMIN:PAYMENT:CONFIG [UPDATE]" } } }, "/platform/admin/payment/orders": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Sync payment orders. If response contains nextEvaluatedKey, please use it as query param in the next call to fetch the next batch, a batch has 1000 elements or less.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: sync payment orders\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncPaymentOrders", "parameters": [ { "description": "exclude ISODateTimeFormat no millis like yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "end", "required": true, "type": "string" }, { "description": "include ISODateTimeFormat no millis like yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "start", "required": true, "type": "string" }, { "in": "query", "name": "nextEvaluatedKey", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderSyncResult" } } }, "security": [ { "authorization": [] } ], "summary": "Sync payment orders", "tags": [ "Payment(Dedicated)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:PAYMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/categories": { "get": { "description": "This API is used to get root categories.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: root category data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetRootCategories", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CategoryInfo" }, "type": "array" } } }, "summary": "Get Root Categories", "tags": [ "Category" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/categories/download": { "get": { "description": "This API is used to download store\u0026#39;s structured categories.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store content)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store content)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: structured categories\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "downloadCategories", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/HierarchicalCategoryInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Download store's structured categories", "tags": [ "Category" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/categories/{categoryPath}": { "get": { "description": "This API is used to get category by category path.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1 (CREATE)(user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: category data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetCategory", "parameters": [ { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/CategoryInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30241\u003c/td\u003e\u003ctd\u003eCategory [{categoryPath}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Get Category", "tags": [ "Category" ], "x-errorCodes": { "30241": "Category [{categoryPath}] does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/categories/{categoryPath}/children": { "get": { "description": "This API is used to get child categories by category path.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of child categories data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetChildCategories", "parameters": [ { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CategoryInfo" }, "type": "array" } } }, "summary": "Get Child Categories", "tags": [ "Category" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/categories/{categoryPath}/descendants": { "get": { "description": "This API is used to get descendant categories by category path.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store category)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of descendant categories data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetDescendantCategories", "parameters": [ { "in": "path", "name": "categoryPath", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CategoryInfo" }, "type": "array" } } }, "summary": "Get Descendant Categories", "tags": [ "Category" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/currencies": { "get": { "consumes": [ "application/json" ], "description": "List currencies of a namespace.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Currency List\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicListCurrencies", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "currencyType", "enum": [ "REAL", "VIRTUAL" ], "in": "query", "name": "currencyType", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/CurrencyInfo" }, "type": "array" } } }, "summary": "list currencies", "tags": [ "Currency" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/dlc/rewards/durable/map": { "get": { "description": "Get dlc reward simple map, only return the sku of durable item reward.", "operationId": "geDLCDurableRewardShortMap", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "in": "query", "name": "dlcType", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/DLCConfigRewardShortInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39442\u003c/td\u003e\u003ctd\u003eDLC item config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39441\u003c/td\u003e\u003ctd\u003ePlatform dlc config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get dlc durable reward simple map", "tags": [ "DLC" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "39441": "Platform dlc config cannot be found in namespace [{namespace}]", "39442": "DLC item config cannot be found in namespace [{namespace}]" }, "x-security": { "userPermissions": "-" } } }, "/platform/public/namespaces/{namespace}/iap/apple/config/version": { "get": { "description": "Get apple config version.", "operationId": "getAppleConfigVersion", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppleIAPConfigVersionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39142\u003c/td\u003e\u003ctd\u003eApple IAP config not found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get apple config version", "tags": [ "IAP" ], "x-errorCodes": { "39142": "Apple IAP config not found in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/iap/item/mapping": { "get": { "description": "Get iap item mapping.", "operationId": "getIAPItemMapping", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "query", "name": "platform", "required": false, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPItemMappingInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39341\u003c/td\u003e\u003ctd\u003eIAP item config cannot be found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get iap item mapping", "tags": [ "IAP" ], "x-errorCodes": { "39341": "IAP item config cannot be found in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/items/byAppId": { "get": { "description": "This API is used to get item by appId.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the item with that appId\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetItemByAppId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "appId", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30342\u003c/td\u003e\u003ctd\u003eItem of appId [{appId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get item by appId", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30342": "Item of appId [{appId}] does not exist" } } }, "/platform/public/namespaces/{namespace}/items/byCriteria": { "get": { "description": "This API is used to query items by criteria within a store. If item not exist in specific region, default region item will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicQueryItems", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": false, "type": "string" }, { "default": false, "in": "query", "name": "autoCalcEstimatedPrice", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "baseAppId", "required": false, "type": "string" }, { "description": "category path", "in": "query", "name": "categoryPath", "required": false, "type": "string" }, { "description": "features, separate multiple value by commas parameter", "in": "query", "name": "features", "required": false, "type": "string" }, { "default": false, "description": "default is false, only available when search by category path, it will return all of the items(includes sub category path) under this category path", "in": "query", "name": "includeSubCategoryItem", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": false, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "default": [ "name:asc", "displayOrder:asc" ], "description": "default is name:asc,displayOrder:asc, allow values: [name, name:asc, name:desc, createdAt, createdAt:asc, createdAt:desc, updatedAt, updatedAt:asc, updatedAt:desc, displayOrder, displayOrder:asc, displayOrder:desc],and support sort group, eg: sortBy=name:asc,createdAt:desc. Make sure to always use more than one sort if the first sort is not an unique value for example, if you wish to sort by displayOrder, make sure to include other sort such as name or createdAt after the first sort, eg: displayOrder:asc,name:asc", "in": "query", "items": { "enum": [ "name", "name:asc", "name:desc", "createdAt", "createdAt:asc", "createdAt:desc", "updatedAt", "updatedAt:asc", "updatedAt:desc", "displayOrder", "displayOrder:asc", "displayOrder:desc" ], "type": "string" }, "name": "sortBy", "required": false, "type": "array", "uniqueItems": true }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" }, { "description": "tags, separate multiple value by commas parameter", "in": "query", "name": "tags", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query items by criteria", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/items/bySku": { "get": { "description": "This API is used to get the item by sku.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the item with sku\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetItemBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "autoCalcEstimatedPrice", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{sku}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get item by sku", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30343": "Item of sku [{sku}] does not exist" } } }, "/platform/public/namespaces/{namespace}/items/estimatedPrice": { "get": { "consumes": [ "application/json" ], "description": "This API is used to get estimated prices of item", "operationId": "publicGetEstimatedPrice", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "commas separated item ids", "in": "query", "name": "itemIds", "required": true, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "use published store id by default", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EstimatedPriceInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get estimated price", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/items/locale/byIds": { "get": { "description": "This API is used to bulk get locale items. If item not exist in specific region, default region item will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store items)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store items)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicBulkGetItems", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "commas separated item ids", "in": "query", "name": "itemIds", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "autoCalcEstimatedPrice", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ItemInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk get locale items", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/items/purchase/conditions/validate": { "post": { "consumes": [ "application/json" ], "description": "This API is used to validate user item purchase condition", "operationId": "publicValidateItemPurchaseCondition", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/ItemPurchaseConditionValidateRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ItemPurchaseConditionValidateResult" }, "type": "array" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Validate user item purchase condition", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error" } } }, "/platform/public/namespaces/{namespace}/items/search": { "get": { "description": "This API is used to search items by keyword in title, description and long description, It\u0026#39;s language constrained, also if item not exist in specific region, default region item will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicSearchItems", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "keyword", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "autoCalcEstimatedPrice", "required": false, "type": "boolean", "x-omitempty": false }, { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "in": "query", "name": "itemType", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemPagingSlicedResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Search items by keyword", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/items/{itemId}/app/locale": { "get": { "description": "This API is used to get an app in locale. If app not exist in specific region, default region app will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store app)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store app)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: app data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetApp", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Get an app in locale", "tags": [ "Item" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/items/{itemId}/dynamic": { "get": { "description": "Get item dynamic data for a published item.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item dynamic data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetItemDynamicData", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ItemDynamicDataInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get item dynamic data", "tags": [ "Item" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/items/{itemId}/locale": { "get": { "description": "This API is used to get an item in locale. If item not exist in specific region, default region item will return.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store item)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: item data\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetItem", "parameters": [ { "in": "path", "name": "itemId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "autoCalcEstimatedPrice", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "default": false, "description": "whether populate bundled items if it's a bundle", "in": "query", "name": "populateBundle", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PopulatedItemInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get an item in locale", "tags": [ "Item" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]" } } }, "/platform/public/namespaces/{namespace}/payment/customization": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment provider customization, at current only Adyen provide customization. This api has been deprecated, pls use /public/namespaces/{namespace}/payment/publicconfig to get adyen config\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: customization\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentCustomization", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "in": "query", "name": "paymentProvider", "required": true, "type": "string" }, { "in": "query", "name": "region", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Customization" } } }, "summary": "Get payment provider customization", "tags": [ "PaymentStation" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/payment/link": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment url.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;For Neon Pay payment provider, the \u0026#39;neonPayConfig\u0026#39; field can be used to provide success and cancel URL. If \u0026#39;neonPayConfig\u0026#39; field is not present, the \u0026#39;returnUrl\u0026#39; will be used for both success and cancel URL.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Get payment link\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetPaymentUrl", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentUrlCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentUrl" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33321\u003c/td\u003e\u003ctd\u003ePayment provider [{paymentProvider}] not support currency [{currency}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33322\u003c/td\u003e\u003ctd\u003ePayment provider [{paymentProvider}] not supported\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33332\u003c/td\u003e\u003ctd\u003eAmount too small, please contact administrator\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33333\u003c/td\u003e\u003ctd\u003eNeon Pay checkout payment order [{paymentOrderNo}] failed with message [{errMsg}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20016\u003c/td\u003e\u003ctd\u003eaction is banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser [{userId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Get payment url", "tags": [ "PaymentStation" ], "x-errorCodes": { "20008": "user [{userId}] does not exist in namespace [{namespace}]", "20016": "action is banned", "33141": "Payment Order [{paymentOrderNo}] does not exist", "33321": "Payment provider [{paymentProvider}] not support currency [{currency}]", "33322": "Payment provider [{paymentProvider}] not supported", "33332": "Amount too small, please contact administrator", "33333": "Neon Pay checkout payment order [{paymentOrderNo}] failed with message [{errMsg}]" } } }, "/platform/public/namespaces/{namespace}/payment/methods": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment methods.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment method list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetPaymentMethods", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/PaymentMethod" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Get payment methods", "tags": [ "PaymentStation" ], "x-errorCodes": { "33141": "Payment Order [{paymentOrderNo}] does not exist" } } }, "/platform/public/namespaces/{namespace}/payment/orders/{paymentOrderNo}/info": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment order info.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment order details\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetUnpaidPaymentOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderDetails" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser [{userId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33171\u003c/td\u003e\u003ctd\u003eInvalid payment order status [{status}] for payment order [{paymentOrderNo}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Get payment order info", "tags": [ "PaymentStation" ], "x-errorCodes": { "20008": "user [{userId}] does not exist in namespace [{namespace}]", "33141": "Payment Order [{paymentOrderNo}] does not exist", "33171": "Invalid payment order status [{status}] for payment order [{paymentOrderNo}]" } } }, "/platform/public/namespaces/{namespace}/payment/orders/{paymentOrderNo}/pay": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Do payment(For now, this only support checkout.com).\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment process result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "pay", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PaymentToken" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" }, { "default": "CHECKOUT", "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "in": "query", "name": "paymentProvider", "required": false, "type": "string" }, { "description": "zip code", "in": "query", "name": "zipCode", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentProcessResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33322\u003c/td\u003e\u003ctd\u003ePayment provider [{paymentProvider}] not supported\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33171\u003c/td\u003e\u003ctd\u003eInvalid payment order status [{status}] for payment order [{paymentOrderNo}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Do payment", "tags": [ "PaymentStation" ], "x-errorCodes": { "33141": "Payment Order [{paymentOrderNo}] does not exist", "33171": "Invalid payment order status [{status}] for payment order [{paymentOrderNo}]", "33322": "Payment provider [{paymentProvider}] not supported" } } }, "/platform/public/namespaces/{namespace}/payment/orders/{paymentOrderNo}/status": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Check payment order paid status.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment order paid result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicCheckPaymentOrderPaidStatus", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "paymentOrderNo", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PaymentOrderPaidResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "Check payment order paid status", "tags": [ "PaymentStation" ], "x-errorCodes": { "33141": "Payment Order [{paymentOrderNo}] does not exist" } } }, "/platform/public/namespaces/{namespace}/payment/publicconfig": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment provider public config, at current only Strip provide public config.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Public config\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentPublicConfig", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "in": "query", "name": "paymentProvider", "required": true, "type": "string" }, { "in": "query", "name": "region", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "sandbox", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "additionalProperties": { "type": "object" }, "type": "object" } } }, "summary": "Get payment provider public config", "tags": [ "PaymentStation" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/payment/qrcode": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get qrcode.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: QRCode image stream\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetQRCode", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "code", "required": true, "type": "string" } ], "produces": [ "image/png" ], "responses": { "200": { "description": "Successful operation", "schema": { "$ref": "#/definitions/BinarySchema" } } }, "summary": "Get qrcode", "tags": [ "PaymentStation" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/payment/returnurl": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Normalize payment return url for payment provider\u0026lt;br\u0026gt;Payment response: \u0026lt;table\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;Field\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Type\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Required\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Description\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;orderNo\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;order no\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;paymentStatus\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;Yes\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;DONE: The payment was successfully completed.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;CANCELLED: The payment was cancelled by the shopper before completion, or the shopper returned to the merchant\u0026#39;s site before completing the transaction.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;PENDING: Inform the shopper that you\u0026#39;ve received their order, and are waiting for the payment to be completed.\n\nWhen the shopper has completed the payment you will receive a successful AUTHORISATION.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;RECEIVED: Inform the shopper that you\u0026#39;ve received their order, and are waiting for the payment to clear.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;UNKNOWN: An error occurred during the payment processing.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;FAILED: Shopper paid failed because of various reasons.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td\u0026gt;reason\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;String\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;No\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;payment status reason\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;xsolla\u0026lt;/i\u0026gt;: parameters \u0026#39;user_id\u0026#39;, \u0026#39;foreinginvoice\u0026#39;, \u0026#39;invoice_id\u0026#39; and \u0026#39;status\u0026#39; will be automatically added to the link\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;adyen\u0026lt;/i\u0026gt;: https://docs.adyen.com/developers/checkout/web-sdk\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicNormalizePaymentReturnUrl", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform order no", "in": "query", "name": "orderNo", "required": true, "type": "string" }, { "description": "Platform payment order no", "in": "query", "name": "paymentOrderNo", "required": true, "type": "string" }, { "description": "Platform payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "in": "query", "name": "paymentProvider", "required": true, "type": "string" }, { "in": "query", "name": "returnUrl", "required": true, "type": "string" }, { "description": "PayPal payer id", "in": "query", "name": "PayerID", "required": false, "type": "string" }, { "in": "query", "name": "foreinginvoice", "required": false, "type": "string" }, { "in": "query", "name": "invoice_id", "required": false, "type": "string" }, { "description": "adyen redirect session data for checkout sdk", "in": "query", "name": "payload", "required": false, "type": "string" }, { "description": "adyen redirect session data for drop in", "in": "query", "name": "redirectResult", "required": false, "type": "string" }, { "description": "adyen redirect resultCode from checkout sdk", "in": "query", "name": "resultCode", "required": false, "type": "string" }, { "description": "adyen redirect session Id for drop in", "in": "query", "name": "sessionId", "required": false, "type": "string" }, { "description": "paypal and xsolla will return this", "in": "query", "name": "status", "required": false, "type": "string" }, { "description": "PayPal token", "in": "query", "name": "token", "required": false, "type": "string" }, { "in": "query", "name": "type", "required": false, "type": "string" }, { "in": "query", "name": "user_id", "required": false, "type": "string" } ], "responses": { "204": { "description": "no content.(if query param 'returnUrl' is empty)" }, "307": { "description": "successful operation.(if query param 'returnUrl' is not empty)", "headers": { "Location": { "description": "The Location header", "format": "uri", "type": "string" } } } }, "summary": "Normalize payment return url", "tags": [ "PaymentStation" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/payment/tax": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Check and get a payment order\u0026#39;s should pay tax.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: tax result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getPaymentTaxValue", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "paymentOrderNo", "required": true, "type": "string" }, { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "in": "query", "name": "paymentProvider", "required": true, "type": "string" }, { "in": "query", "name": "zipCode", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TaxResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33123\u003c/td\u003e\u003ctd\u003eInvalid zipcode\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e33141\u003c/td\u003e\u003ctd\u003ePayment Order [{paymentOrderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "summary": "get tax result of a payment order", "tags": [ "PaymentStation" ], "x-errorCodes": { "33123": "Invalid zipcode", "33141": "Payment Order [{paymentOrderNo}] does not exist" } } }, "/platform/public/namespaces/{namespace}/rewards/byCode": { "get": { "description": "This API is used to get reward by reward code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: reward instance\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getRewardByCode", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "rewardCode", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34043\u003c/td\u003e\u003ctd\u003eReward with code [{rewardCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a reward by code", "tags": [ "Reward" ], "x-errorCodes": { "34043": "Reward with code [{rewardCode}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:REWARD [READ]" } } }, "/platform/public/namespaces/{namespace}/rewards/byCriteria": { "get": { "description": "This API is used to query rewards by criteria.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of rewards\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryRewards_1", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "event topic", "in": "query", "name": "eventTopic", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "default": [ "namespace:asc", "rewardCode:asc" ], "description": "default is namespace:asc,rewardCode:asc, allow values: [namespace, namespace:asc, namespace:desc, rewardCode, rewardCode:asc, rewardCode:desc],and support sort group, eg: sortBy=namespace:asc,rewardCode:asc", "in": "query", "items": { "enum": [ "namespace", "namespace:asc", "namespace:desc", "rewardCode", "rewardCode:asc", "rewardCode:desc" ], "type": "string" }, "name": "sortBy", "required": false, "type": "array", "uniqueItems": true } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardPagingSlicedResult" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query rewards by criteria", "tags": [ "Reward" ], "x-errorCodes": { "20002": "validation error" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:REWARD [READ]" } } }, "/platform/public/namespaces/{namespace}/rewards/{rewardId}": { "get": { "description": "This API is used to get reward by reward Id.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: reward instance\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "getReward_1", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "rewardId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RewardInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e34041\u003c/td\u003e\u003ctd\u003eReward [{rewardId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get a reward", "tags": [ "Reward" ], "x-errorCodes": { "34041": "Reward [{rewardId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:REWARD [READ]" } } }, "/platform/public/namespaces/{namespace}/stores": { "get": { "description": "This API is used to list all stores in a namespace.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of stores\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicListStores", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/StoreInfo" }, "type": "array" } } }, "summary": "List all stores", "tags": [ "Store" ], "x-errorCodes": {} } }, "/platform/public/namespaces/{namespace}/users/me/entitlements/ownership/any": { "get": { "description": "Exists any my active entitlement of specified itemIds, skus and appIds", "operationId": "publicExistsAnyMyActiveEntitlement", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "appIds", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemIds", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "skus", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Exists any my active entitlement", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/me/entitlements/ownership/byAppId": { "get": { "description": "Get my app entitlement ownership by appId.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Path\u0026#39;s namespace\u0026lt;/i\u0026gt; : \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;can be filled with \u0026lt;b\u0026gt;publisher namespace\u0026lt;/b\u0026gt; in order to get \u0026lt;b\u0026gt;publisher namespace app entitlement ownership\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetMyAppEntitlementOwnershipByAppId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "appId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Get my app entitlement ownership by appId", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/me/entitlements/ownership/byItemId": { "get": { "description": "Get my entitlement ownership by itemId.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Path\u0026#39;s namespace\u0026lt;/i\u0026gt; : \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;can be filled with \u0026lt;b\u0026gt;publisher namespace\u0026lt;/b\u0026gt; in order to get \u0026lt;b\u0026gt;publisher namespace entitlement ownership by sku\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;can be filled with \u0026lt;b\u0026gt;game namespace\u0026lt;/b\u0026gt; in order to get \u0026lt;b\u0026gt;game namespace entitlement ownership by sku\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetMyEntitlementOwnershipByItemId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TimedOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get my entitlement ownership by itemId", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/me/entitlements/ownership/bySku": { "get": { "description": "Get my entitlement ownership by sku.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Path\u0026#39;s namespace\u0026lt;/i\u0026gt; : \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;can be filled with \u0026lt;b\u0026gt;publisher namespace\u0026lt;/b\u0026gt; in order to get \u0026lt;b\u0026gt;publisher namespace entitlement ownership by sku\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;can be filled with \u0026lt;b\u0026gt;game namespace\u0026lt;/b\u0026gt; in order to get \u0026lt;b\u0026gt;game namespace entitlement ownership by sku\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetMyEntitlementOwnershipBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TimedOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get my entitlement ownership by sku", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/me/entitlements/ownershipToken": { "get": { "description": "Gets an entitlement ownership token of specified itemIds, skus and appIds\u0026lt;p\u0026gt;The decoded ownership token header like below:\u0026lt;p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code\u0026gt;{\r\n \u0026#34;kid\u0026#34;: \u0026#34;9fd4cd5f991cebe3323605cd12d3b8bfdfc73fa4\u0026#34;,\r\n \u0026#34;typ\u0026#34;: \u0026#34;JWT\u0026#34;,\r\n \u0026#34;alg\u0026#34;: \u0026#34;RS256\u0026#34;\r\n}\r\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;That you can get the jwks by api \u0026lt;baseUrl\u0026gt;/platform/jwks, if the configured private key is same as IAM, \u0026lt;p\u0026gt;you can also get jwks from IAM endpoint. \u0026lt;p\u0026gt;The decoded ownership token payload like below:\u0026lt;p\u0026gt;\u0026lt;pre\u0026gt;\u0026lt;code\u0026gt;{\r\n \u0026#34;namespace\u0026#34;: \u0026#34;accelbyte\u0026#34;,\r\n \u0026#34;entitlements\u0026#34;: [\r\n {\r\n \u0026#34;itemId\u0026#34;: \u0026#34;4c1296291f604c199f7bb7f0ee02e5f8\u0026#34;,\r\n \u0026#34;appType\u0026#34;: null,\r\n \u0026#34;appId\u0026#34;: null,\r\n \u0026#34;namespace\u0026#34;: \u0026#34;accelbyte\u0026#34;,\r\n \u0026#34;itemNamespace\u0026#34;: \u0026#34;accelbyte\u0026#34;,\r\n \u0026#34;sku\u0026#34;: \u0026#34;prime-plus\u0026#34;\r\n },\r\n {\r\n \u0026#34;itemId\u0026#34;: \u0026#34;e8f4974cf45c4e1f8d4f0c6990c518bd\u0026#34;,\r\n \u0026#34;appType\u0026#34;: \u0026#34;GAME\u0026#34;,\r\n \u0026#34;appId\u0026#34;: \u0026#34;omeganebula\u0026#34;,\r\n \u0026#34;namespace\u0026#34;: \u0026#34;accelbyte\u0026#34;,\r\n \u0026#34;itemNamespace\u0026#34;: \u0026#34;accelbyte\u0026#34;,\r\n \u0026#34;sku\u0026#34;: \u0026#34;APPG005ON\u0026#34;\r\n }\r\n ],\r\n\u0026#34;sub\u0026#34;: \u0026#34;66459eb6a4e44e6fb0040bd20c1079a5\u0026#34;,\r\n\u0026#34;exp\u0026#34;: 1619624360,\r\n\u0026#34;iat\u0026#34;: 1619624060\r\n}\r\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;b\u0026gt;if there\u0026#39;s no active entitlement for the specific params, the entitlements section will be omitted\u0026lt;/b\u0026gt;.", "operationId": "publicGetEntitlementOwnershipToken", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "appIds", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemIds", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "skus", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OwnershipToken" } } }, "security": [ { "authorization": [] } ], "summary": "Gets an entitlement ownership token", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/me/iap/twitch/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync my game twitch drops entitlements.", "operationId": "syncTwitchDropsEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TwitchSyncRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/TwitchSyncResult" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync my game twitch drops entitlements.", "tags": [ "IAP" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:IAP[UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/me/wallets/{currencyCode}": { "get": { "consumes": [ "application/json" ], "description": "get my wallet by currency code and namespace.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: wallet info\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Path\u0026#39;s namespace\u0026lt;/i\u0026gt; : \u0026lt;ul\u0026gt; \u0026lt;li\u0026gt;can be filled with \u0026lt;b\u0026gt;publisher namespace\u0026lt;/b\u0026gt; in order to get \u0026lt;b\u0026gt;publisher user wallet\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;can be filled with \u0026lt;b\u0026gt;game namespace\u0026lt;/b\u0026gt; in order to get \u0026lt;b\u0026gt;game user wallet\u0026lt;/b\u0026gt;\u0026lt;/li\u0026gt; \u0026lt;/ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetMyWallet", "parameters": [ { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformWallet" } } }, "security": [ { "authorization": [] } ], "summary": "Get my wallet by currency code and namespace", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:WALLET [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/dlc/epicgames/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync epic games dlc items", "operationId": "syncEpicGameDLC", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/EpicGamesDLCSyncRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39147\u003c/td\u003e\u003ctd\u003eEpic IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync epic games dlc items", "tags": [ "DLC" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39147": "Epic IAP config not found in namespace [{namespace}]." }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:DLC[UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/dlc/oculus/sync": { "put": { "description": "Sync oculus dlc", "operationId": "syncOculusDLC", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39134\u003c/td\u003e\u003ctd\u003eInvalid Oculus IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39133\u003c/td\u003e\u003ctd\u003eBad request for Oculus: [{reason}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39146\u003c/td\u003e\u003ctd\u003eOculus IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync oculus dlc.", "tags": [ "DLC" ], "x-errorCodes": { "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39133": "Bad request for Oculus: [{reason}]", "39134": "Invalid Oculus IAP config under namespace [{namespace}]: [{message}]", "39146": "Oculus IAP config not found in namespace [{namespace}]." }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:DLC[UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/dlc/psn/sync": { "put": { "consumes": [ "application/json" ], "description": "Synchronize with dlc entitlements in PSN Store.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: result of synchronization\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicSyncPsnDlcInventory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/PlayStationDLCSyncRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39127\u003c/td\u003e\u003ctd\u003eInvalid service label [{serviceLabel}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39132\u003c/td\u003e\u003ctd\u003eBad request for playstation under namespace [{namespace}], reason: [{reason}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39143\u003c/td\u003e\u003ctd\u003ePlayStation IAP config not found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Synchronize with dlc entitlements in PSN Store.", "tags": [ "DLC" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39127": "Invalid service label [{serviceLabel}]", "39132": "Bad request for playstation under namespace [{namespace}], reason: [{reason}].", "39143": "PlayStation IAP config not found in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:DLC[UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/dlc/psn/sync/multiServiceLabels": { "put": { "consumes": [ "application/json" ], "description": "Synchronize with dlc entitlements in PSN Store with multiple service labels.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: result of synchronization\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicSyncPsnDlcInventoryWithMultipleServiceLabels", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/PlayStationDLCSyncMultiServiceLabelsRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39127\u003c/td\u003e\u003ctd\u003eInvalid service label [{serviceLabel}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39132\u003c/td\u003e\u003ctd\u003eBad request for playstation under namespace [{namespace}], reason: [{reason}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39143\u003c/td\u003e\u003ctd\u003ePlayStation IAP config not found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Synchronize with dlc entitlements in PSN Store with multiple service labels.", "tags": [ "DLC" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39127": "Invalid service label [{serviceLabel}]", "39132": "Bad request for playstation under namespace [{namespace}], reason: [{reason}].", "39143": "PlayStation IAP config not found in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:DLC[UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/dlc/steam/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync steam dlc", "operationId": "syncSteamDLC", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SteamDLCSyncRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39124\u003c/td\u003e\u003ctd\u003eIAP request platform [{platformId}] user id is not linked with current user\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39144\u003c/td\u003e\u003ctd\u003eSteam IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync steam dlc.", "tags": [ "DLC" ], "x-errorCodes": { "39124": "IAP request platform [{platformId}] user id is not linked with current user", "39144": "Steam IAP config not found in namespace [{namespace}]." }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:DLC[UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/dlc/xbl/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync Xbox inventory\u0026#39;s dlc items", "operationId": "syncXboxDLC", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/XblDLCSyncRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39221\u003c/td\u003e\u003ctd\u003eInvalid Xbox Business Partner Certificate or password: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39145\u003c/td\u003e\u003ctd\u003eXBox IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Xbox dlc items.", "tags": [ "DLC" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39145": "XBox IAP config not found in namespace [{namespace}].", "39221": "Invalid Xbox Business Partner Certificate or password: [{message}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:DLC[UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements": { "get": { "description": "Query user entitlements for a specific user.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicQueryUserEntitlements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": false, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "in": "query", "name": "entitlementName", "required": false, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "features", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemId", "required": false, "type": "array" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user entitlements", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/byAppId": { "get": { "description": "Get user app entitlement by appId.", "operationId": "publicGetUserAppEntitlementByAppId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "appId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppEntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31142\u003c/td\u003e\u003ctd\u003eEntitlement with appId [{appId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user app entitlement by appId", "tags": [ "Entitlement" ], "x-errorCodes": { "31142": "Entitlement with appId [{appId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/byAppType": { "get": { "description": "Query app entitlements by appType.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: app entitlement pagination\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicQueryUserEntitlementsByAppType", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/AppEntitlementPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query app entitlements by appType", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/byIds": { "get": { "description": "Get user entitlements by ids..\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetUserEntitlementsByIds", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": true, "in": "query", "name": "availablePlatformOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "ids", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EntitlementInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlements by ids.", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/byItemId": { "get": { "deprecated": true, "description": "Get user entitlement by itemId.", "operationId": "publicGetUserEntitlementByItemId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31144\u003c/td\u003e\u003ctd\u003eEntitlement with itemId [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement by itemId", "tags": [ "Entitlement" ], "x-errorCodes": { "31144": "Entitlement with itemId [{itemId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/bySku": { "get": { "deprecated": true, "description": "Get user entitlement by sku.", "operationId": "publicGetUserEntitlementBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31143\u003c/td\u003e\u003ctd\u003eEntitlement with sku [{sku}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement by sku", "tags": [ "Entitlement" ], "x-errorCodes": { "31143": "Entitlement with sku [{sku}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/history": { "get": { "description": "Get user entitlement history\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: user entitlement history list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicUserEntitlementHistory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z", "in": "query", "name": "endDate", "required": false, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z", "in": "query", "name": "startDate", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/UserEntitlementHistoryPagingSlicedResult" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlements histories.", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/ownership/any": { "get": { "description": "Exists any user active entitlement of specified itemIds, skus and appIds", "operationId": "publicExistsAnyUserActiveEntitlement", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "appIds", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "itemIds", "required": false, "type": "array" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "skus", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Exists any user active entitlement", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/ownership/byAppId": { "get": { "description": "Get user app entitlement ownership by appId.", "operationId": "publicGetUserAppEntitlementOwnershipByAppId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "appId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Ownership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user app entitlement ownership by appId", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/ownership/byItemId": { "get": { "description": "Get user entitlement ownership by itemId.", "operationId": "publicGetUserEntitlementOwnershipByItemId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TimedOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement ownership by itemId", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/ownership/byItemIds": { "get": { "description": "Get user entitlement ownership by itemIds.", "operationId": "publicGetUserEntitlementOwnershipByItemIds", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "type": "string" }, "name": "ids", "required": false, "type": "array" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EntitlementOwnership" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement ownership by itemIds", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT[READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/ownership/bySku": { "get": { "description": "Get user entitlement ownership by sku.", "operationId": "publicGetUserEntitlementOwnershipBySku", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "sku", "required": true, "type": "string" }, { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "in": "query", "name": "entitlementClazz", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/TimedOwnership" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement ownership by sku", "tags": [ "Entitlement" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}": { "get": { "description": "Get user entitlement.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetUserEntitlement", "parameters": [ { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/decrement": { "put": { "consumes": [ "application/json" ], "description": "Consume user entitlement. If the entitlement useCount is 0, the status will be CONSUMED. Client should pass item id in options if entitlement clazz is OPTIONBOX\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: consumed entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicConsumeUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PublicEntitlementDecrement" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementDecrementResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31121\u003c/td\u003e\u003ctd\u003eOptionBox entitlement [{entitlementId}] use count is not 1\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31122\u003c/td\u003e\u003ctd\u003eOptionBox entitlement [{entitlementId}] options size is not 1\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31123\u003c/td\u003e\u003ctd\u003eUnable to acquire box item, box item [{itemId}] expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31145\u003c/td\u003e\u003ctd\u003eOption [{option}] doesn't exist in OptionBox entitlement [{entitlementId}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31172\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31173\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] is not consumable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31174\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already consumed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31176\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] use count is insufficient\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31178\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] out of time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31180\u003c/td\u003e\u003ctd\u003eDuplicate request id: [{requestId}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31183\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Consume user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31121": "OptionBox entitlement [{entitlementId}] use count is not 1", "31122": "OptionBox entitlement [{entitlementId}] options size is not 1", "31123": "Unable to acquire box item, box item [{itemId}] expired", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31145": "Option [{option}] doesn't exist in OptionBox entitlement [{entitlementId}]", "31171": "Entitlement [{entitlementId}] already revoked", "31172": "Entitlement [{entitlementId}] not active", "31173": "Entitlement [{entitlementId}] is not consumable", "31174": "Entitlement [{entitlementId}] already consumed", "31176": "Entitlement [{entitlementId}] use count is insufficient", "31178": "Entitlement [{entitlementId}] out of time range", "31180": "Duplicate request id: [{requestId}]", "31183": "Entitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/sell": { "put": { "consumes": [ "application/json" ], "description": "Sell user entitlement. If the entitlement is consumable, useCount is 0, the status will be CONSUMED. If the entitlement is durable, the status will be SOLD. Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicSellUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/EntitlementSoldRequest" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementSoldResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31172\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31174\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already consumed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31176\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] use count is insufficient\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31178\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] out of time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31180\u003c/td\u003e\u003ctd\u003eDuplicate request id: [{requestId}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31181\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] is not sellable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31182\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already sold\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31183\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sell user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31171": "Entitlement [{entitlementId}] already revoked", "31172": "Entitlement [{entitlementId}] not active", "31174": "Entitlement [{entitlementId}] already consumed", "31176": "Entitlement [{entitlementId}] use count is insufficient", "31178": "Entitlement [{entitlementId}] out of time range", "31180": "Duplicate request id: [{requestId}]", "31181": "Entitlement [{entitlementId}] is not sellable", "31182": "Entitlement [{entitlementId}] already sold", "31183": "Entitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/split": { "put": { "consumes": [ "application/json" ], "description": "Split a specified use count of entitlement and create a new entitlement with splitting use count.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicSplitUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/EntitlementSplitRequest" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementSplitResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31172\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31174\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already consumed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31176\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] use count is insufficient\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31178\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] out of time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31182\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already sold\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31183\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Split user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31171": "Entitlement [{entitlementId}] already revoked", "31172": "Entitlement [{entitlementId}] not active", "31174": "Entitlement [{entitlementId}] already consumed", "31176": "Entitlement [{entitlementId}] use count is insufficient", "31178": "Entitlement [{entitlementId}] out of time range", "31182": "Entitlement [{entitlementId}] already sold", "31183": "Entitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/entitlements/{entitlementId}/transfer": { "put": { "consumes": [ "application/json" ], "description": "Transfer a specified use count from entitlement A to B..Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: entitlement\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicTransferUserEntitlement", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/EntitlementTransferRequest" } }, { "in": "path", "name": "entitlementId", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/EntitlementTransferResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31141\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31171\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already revoked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31172\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31174\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already consumed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31176\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] use count is insufficient\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31178\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] out of time range\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31182\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] already sold\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31183\u003c/td\u003e\u003ctd\u003eEntitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31184\u003c/td\u003e\u003ctd\u003eSource entitlement [{sourceEntitlementId}] and target entitlement [{targetEntitlementId}] should have same collectionId, timeRange, origin and itemId\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31185\u003c/td\u003e\u003ctd\u003eTransferred source entitlement [{sourceEntitlementId}] and target entitlement [{targetEntitlementId}] can not be set to same\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Transfer user entitlement", "tags": [ "Entitlement" ], "x-errorCodes": { "20006": "optimistic lock", "31141": "Entitlement [{entitlementId}] does not exist in namespace [{namespace}]", "31171": "Entitlement [{entitlementId}] already revoked", "31172": "Entitlement [{entitlementId}] not active", "31174": "Entitlement [{entitlementId}] already consumed", "31176": "Entitlement [{entitlementId}] use count is insufficient", "31178": "Entitlement [{entitlementId}] out of time range", "31182": "Entitlement [{entitlementId}] already sold", "31183": "Entitlement [{entitlementId}] origin [{origin}] not allowed be operated at [{platform}]", "31184": "Source entitlement [{sourceEntitlementId}] and target entitlement [{targetEntitlementId}] should have same collectionId, timeRange, origin and itemId", "31185": "Transferred source entitlement [{sourceEntitlementId}] and target entitlement [{targetEntitlementId}] can not be set to same" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/fulfillment/code": { "post": { "consumes": [ "application/json" ], "description": "Redeem campaign code, this api have rate limit, default: only allow request once per user in 2 seconds\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment result\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicRedeemCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/FulfillCodeRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37172\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37173\u003c/td\u003e\u003ctd\u003eCode [{code}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37174\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37175\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37177\u003c/td\u003e\u003ctd\u003eCode redemption not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37178\u003c/td\u003e\u003ctd\u003eCode redemption already ended\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31177\u003c/td\u003e\u003ctd\u003ePermanent item already owned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Redeem campaign code", "tags": [ "Fulfillment" ], "x-errorCodes": { "20006": "optimistic lock", "20007": "too many requests", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "31177": "Permanent item already owned", "35123": "Wallet [{walletId}] is inactive", "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37172": "Campaign [{campaignId}] is inactive in namespace [{namespace}]", "37173": "Code [{code}] is inactive in namespace [{namespace}]", "37174": "Exceeded max redeem count per code [{maxCount}]", "37175": "Exceeded max redeem count per code per user [{maxCount}]", "37177": "Code redemption not started", "37178": "Code redemption already ended", "38121": "Duplicate permanent item exists" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [CREATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/apple/receipt": { "put": { "consumes": [ "application/json" ], "description": "Verify apple iap receipt and fulfill item. don\u0026#39;t support subscriptionOther detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicFulfillAppleIAPItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/AppleIAPReceipt" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Fulfill item successfully" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39121\u003c/td\u003e\u003ctd\u003eApple iap receipt verify failed with status code [{statusCode}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39131\u003c/td\u003e\u003ctd\u003eInvalid Apple IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39138\u003c/td\u003e\u003ctd\u003eApple IAP version mismatch detected: The current configuration is set to [{configVersion}], but the API version is [{apiVersion}]. Please ensure that both the configuration and API versions are aligned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39141\u003c/td\u003e\u003ctd\u003eApple iap receipt of transaction [{transactionId}] for productId [{}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39142\u003c/td\u003e\u003ctd\u003eApple IAP config not found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39171\u003c/td\u003e\u003ctd\u003eThe bundle id in namespace [{namespace}] expect [{expected}] but was [{actual}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill apple iap item.", "tags": [ "IAP" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists", "39121": "Apple iap receipt verify failed with status code [{statusCode}]", "39131": "Invalid Apple IAP config under namespace [{namespace}]: [{message}]", "39138": "Apple IAP version mismatch detected: The current configuration is set to [{configVersion}], but the API version is [{apiVersion}]. Please ensure that both the configuration and API versions are aligned", "39141": "Apple iap receipt of transaction [{transactionId}] for productId [{}] does not exist", "39142": "Apple IAP config not found in namespace [{namespace}]", "39171": "The bundle id in namespace [{namespace}] expect [{expected}] but was [{actual}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/epicgames/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync epic games inventory\u0026#39;s items.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncEpicGamesInventory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/EpicGamesReconcileRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/EpicGamesReconcileResult" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39147\u003c/td\u003e\u003ctd\u003eEpic IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync epic games inventory.", "tags": [ "IAP" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39147": "Epic IAP config not found in namespace [{namespace}]." }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/google/receipt": { "put": { "consumes": [ "application/json" ], "description": "Verify google iap receipt and fulfill item.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicFulfillGoogleIAPItem", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/GoogleIAPReceipt" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Successful operation", "schema": { "$ref": "#/definitions/GoogleReceiptResolveResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39122\u003c/td\u003e\u003ctd\u003eGoogle iap receipt is invalid with status code [{statusCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38122\u003c/td\u003e\u003ctd\u003eSubscription endDate required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39135\u003c/td\u003e\u003ctd\u003eInvalid Google IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39148\u003c/td\u003e\u003ctd\u003eGoogle IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39172\u003c/td\u003e\u003ctd\u003eThe order id in namespace [{namespace}] expect [{expected}] but was [{actual}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39173\u003c/td\u003e\u003ctd\u003eThe purchase status of google play order [{orderId}] in namespace [{namespace}] expect [{expected}] but was [{actual}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39174\u003c/td\u003e\u003ctd\u003eThe google iap purchase time of order [{orderId}] in namespace [{namespace}] expect [{expected}] but was [{actual}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill google iap item.", "tags": [ "IAP" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists", "38122": "Subscription endDate required", "39122": "Google iap receipt is invalid with status code [{statusCode}] and error message [{message}]", "39135": "Invalid Google IAP config under namespace [{namespace}]: [{message}]", "39148": "Google IAP config not found in namespace [{namespace}].", "39172": "The order id in namespace [{namespace}] expect [{expected}] but was [{actual}]", "39173": "The purchase status of google play order [{orderId}] in namespace [{namespace}] expect [{expected}] but was [{actual}]", "39174": "The google iap purchase time of order [{orderId}] in namespace [{namespace}] expect [{expected}] but was [{actual}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/oculus/subscription/sync": { "put": { "consumes": [ "application/json" ], "description": "this endpoint only return existed subscription transaction info", "operationId": "syncOculusSubscriptions", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/OculusSubscriptionSyncRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionInfo" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39134\u003c/td\u003e\u003ctd\u003eInvalid Oculus IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39133\u003c/td\u003e\u003ctd\u003eBad request for Oculus: [{reason}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39146\u003c/td\u003e\u003ctd\u003eOculus IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39154\u003c/td\u003e\u003ctd\u003eMeta Quest Subscription Sku [{sku}] not found in namespace [{namespace}] config, please config this Subscription sku in subscription group.\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Meta Quest(Oculus) subscription", "tags": [ "IAP" ], "x-errorCodes": { "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39133": "Bad request for Oculus: [{reason}]", "39134": "Invalid Oculus IAP config under namespace [{namespace}]: [{message}]", "39146": "Oculus IAP config not found in namespace [{namespace}].", "39154": "Meta Quest Subscription Sku [{sku}] not found in namespace [{namespace}] config, please config this Subscription sku in subscription group." }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/oculus/sync": { "put": { "description": "Sync Oculus entitlements.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncOculusConsumableEntitlements", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/OculusReconcileResult" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39134\u003c/td\u003e\u003ctd\u003eInvalid Oculus IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39133\u003c/td\u003e\u003ctd\u003eBad request for Oculus: [{reason}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39146\u003c/td\u003e\u003ctd\u003eOculus IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Oculus entitlements.", "tags": [ "IAP" ], "x-errorCodes": { "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39133": "Bad request for Oculus: [{reason}]", "39134": "Invalid Oculus IAP config under namespace [{namespace}]: [{message}]", "39146": "Oculus IAP config not found in namespace [{namespace}]." }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/psn/sync": { "put": { "consumes": [ "application/json" ], "description": "Synchronize with entitlements in PSN Store.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: result of synchronization\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicReconcilePlayStationStore", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/PlayStationReconcileRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/PlayStationReconcileResult" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39127\u003c/td\u003e\u003ctd\u003eInvalid service label [{serviceLabel}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39132\u003c/td\u003e\u003ctd\u003eBad request for playstation under namespace [{namespace}], reason: [{reason}].\u003c/td\u003e\u003c/tr\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39143\u003c/td\u003e\u003ctd\u003ePlayStation IAP config not found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Synchronize with entitlements in PSN Store.", "tags": [ "IAP" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39127": "Invalid service label [{serviceLabel}]", "39132": "Bad request for playstation under namespace [{namespace}], reason: [{reason}].", "39143": "PlayStation IAP config not found in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/psn/sync/multiServiceLabels": { "put": { "consumes": [ "application/json" ], "description": "Synchronize with entitlements in PSN Store with multiple service labels.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: result of synchronization\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicReconcilePlayStationStoreWithMultipleServiceLabels", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/PlayStationMultiServiceLabelsReconcileRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/PlayStationReconcileResult" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39127\u003c/td\u003e\u003ctd\u003eInvalid service label [{serviceLabel}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39132\u003c/td\u003e\u003ctd\u003eBad request for playstation under namespace [{namespace}], reason: [{reason}].\u003c/td\u003e\u003c/tr\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39143\u003c/td\u003e\u003ctd\u003ePlayStation IAP config not found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Synchronize with entitlements in PSN Store with multiple service labels.", "tags": [ "IAP" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39127": "Invalid service label [{serviceLabel}]", "39132": "Bad request for playstation under namespace [{namespace}], reason: [{reason}].", "39143": "PlayStation IAP config not found in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/steam/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync steam inventory\u0026#39;s items.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncSteamInventory", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SteamSyncRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Successful operation" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39123\u003c/td\u003e\u003ctd\u003eIAP request is not in valid application\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39124\u003c/td\u003e\u003ctd\u003eIAP request platform [{platformId}] user id is not linked with current user\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39144\u003c/td\u003e\u003ctd\u003eSteam IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync steam inventory.", "tags": [ "IAP" ], "x-errorCodes": { "39123": "IAP request is not in valid application", "39124": "IAP request platform [{platformId}] user id is not linked with current user", "39144": "Steam IAP config not found in namespace [{namespace}]." }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/steam/syncAbnormalTransaction": { "put": { "description": "", "operationId": "syncSteamAbnormalTransaction", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPOrderShortInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39124\u003c/td\u003e\u003ctd\u003eIAP request platform [{platformId}] user id is not linked with current user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39621\u003c/td\u003e\u003ctd\u003eSteam api common exception with status code [statusCode] details: [details]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39144\u003c/td\u003e\u003ctd\u003eSteam IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39184\u003c/td\u003e\u003ctd\u003eSteam api exception with error code [{statusCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39185\u003c/td\u003e\u003ctd\u003eThis endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Abnormal transaction, Sync steam order by transaction. only works when steam sync mode is TRANSACTION.", "tags": [ "IAP" ], "x-errorCodes": { "39124": "IAP request platform [{platformId}] user id is not linked with current user", "39144": "Steam IAP config not found in namespace [{namespace}].", "39184": "Steam api exception with error code [{statusCode}] and error message [{message}]", "39185": "This endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]", "39621": "Steam api common exception with status code [statusCode] details: [details]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/steam/syncByTransaction": { "put": { "consumes": [ "application/json" ], "description": "Sync steam in app purchase by transaction.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncSteamIAPByTransaction", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SteamSyncByTransactionRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/IAPOrderShortInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39124\u003c/td\u003e\u003ctd\u003eIAP request platform [{platformId}] user id is not linked with current user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39621\u003c/td\u003e\u003ctd\u003eSteam api common exception with status code [statusCode] details: [details]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39144\u003c/td\u003e\u003ctd\u003eSteam IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39183\u003c/td\u003e\u003ctd\u003eSteam transaction [{orderId}] is still pending or failed, status [{status}], please try it later\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39184\u003c/td\u003e\u003ctd\u003eSteam api exception with error code [{errorCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39185\u003c/td\u003e\u003ctd\u003eThis endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync steam in app purchase by transaction.", "tags": [ "IAP" ], "x-errorCodes": { "39124": "IAP request platform [{platformId}] user id is not linked with current user", "39144": "Steam IAP config not found in namespace [{namespace}].", "39183": "Steam transaction [{orderId}] is still pending or failed, status [{status}], please try it later", "39184": "Steam api exception with error code [{errorCode}] and error message [{message}]", "39185": "This endpoint only works on sync mode [{workSyncMode}], but current steam iap config sync mode is [{currentSyncMode}] under namespace [{namespace}]", "39621": "Steam api common exception with status code [statusCode] details: [details]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/subscriptions/platforms/{platform}": { "get": { "description": "Query user subscription, default sort by updatedAtOther detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicQueryUserThirdPartySubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "in": "path", "name": "platform", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "activeOnly", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "if platform is Google, please pass google subscription product id. if platform is Apple, please pass apple subscription group id", "in": "query", "name": "groupId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "if platform is Google, please pass google subscription plan id. if platform is Apple, please pass apple subscription product id", "in": "query", "name": "productId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ThirdPartyUserSubscriptionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user subscription.", "tags": [ "IAP(Subscription)" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/twitch/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync twitch drops entitlements.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncTwitchDropsEntitlement_1", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/TwitchSyncRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Sync Successful" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync twitch drops entitlements.", "tags": [ "IAP" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/iap/xbl/sync": { "put": { "consumes": [ "application/json" ], "description": "Sync Xbox inventory\u0026#39;s items.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "syncXboxInventory", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/XblReconcileRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/XblReconcileResult" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39125\u003c/td\u003e\u003ctd\u003eInvalid platform [{platformId}] user token\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39126\u003c/td\u003e\u003ctd\u003eUser id [{}] in namespace [{}] doesn't link platform [{}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39221\u003c/td\u003e\u003ctd\u003eInvalid Xbox Business Partner Certificate or password: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39145\u003c/td\u003e\u003ctd\u003eXBox IAP config not found in namespace [{namespace}].\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Xbox inventory.", "tags": [ "IAP" ], "x-errorCodes": { "39125": "Invalid platform [{platformId}] user token", "39126": "User id [{}] in namespace [{}] doesn't link platform [{}]", "39145": "XBox IAP config not found in namespace [{namespace}].", "39221": "Invalid Xbox Business Partner Certificate or password: [{message}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/orders": { "get": { "consumes": [ "application/json" ], "description": "Query user orders.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicQueryUserOrders", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "discounted", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "itemId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CLOSED", "DELETED", "FULFILLED", "FULFILL_FAILED", "INIT", "REFUNDED", "REFUNDING", "REFUND_FAILED" ], "in": "query", "name": "status", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user orders", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Create an order. The result contains the checkout link and payment token. User with permission SANDBOX will create sandbox order that not real paid for xsolla/alipay and not validate price for wxpay.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission(user with this permission will create sandbox order)\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1 (CREATE)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;It will be forbidden while the user is banned: ORDER_INITIATE or ORDER_AND_PAYMENT\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h2\u0026gt;Restrictions for ext field\u0026lt;/h2\u0026gt;\n1. Cannot use \u0026lt;b\u0026gt;\u0026#34;.\u0026#34;\u0026lt;/b\u0026gt; as the key name\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;data.2\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;\n2. Cannot use \u0026lt;b\u0026gt;\u0026#34;$\u0026#34;\u0026lt;/b\u0026gt; as the prefix in key names\n-\t\u0026lt;pre\u0026gt;{ \u0026#34;$data\u0026#34;: \u0026#34;value\u0026#34; }\u0026lt;/pre\u0026gt;", "operationId": "publicCreateUserOrder", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/OrderCreate" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20018\u003c/td\u003e\u003ctd\u003eecommerce item type not supported\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32121\u003c/td\u003e\u003ctd\u003eOrder price mismatch\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32122\u003c/td\u003e\u003ctd\u003eItem type [{itemType}] does not support\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32123\u003c/td\u003e\u003ctd\u003eItem is not purchasable\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32125\u003c/td\u003e\u003ctd\u003eThe user does not meet the purchase conditions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32126\u003c/td\u003e\u003ctd\u003eSection ID is required for placing this order\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32124\u003c/td\u003e\u003ctd\u003eInvalid currency namespace\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32127\u003c/td\u003e\u003ctd\u003eDiscount code [{code}] can't be used on this item: {tips}\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32128\u003c/td\u003e\u003ctd\u003eDiscount code [{code}] can not be used with other code together\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32129\u003c/td\u003e\u003ctd\u003eCan't use discount code on free order\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32130\u003c/td\u003e\u003ctd\u003eThe total discount amount cannot exceed the order price\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20016\u003c/td\u003e\u003ctd\u003eaction is banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49147\u003c/td\u003e\u003ctd\u003ePublished season does not exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1100001\u003c/td\u003e\u003ctd\u003erecord not found: inventory\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003einsufficient inventory capacity (max. slots)\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32175\u003c/td\u003e\u003ctd\u003eExceed item [{itemId}] max count [{maxCount}] per user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32176\u003c/td\u003e\u003ctd\u003eExceed item [{itemId}] max count [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e31177\u003c/td\u003e\u003ctd\u003ePermanent item already owned\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32178\u003c/td\u003e\u003ctd\u003eUser [{userId}] already owned all durable items in flexible bundle [{bundleId}], namespace: [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49183\u003c/td\u003e\u003ctd\u003ePass item does not match published season pass\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49184\u003c/td\u003e\u003ctd\u003eTier item does not match published season tier\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49185\u003c/td\u003e\u003ctd\u003eSeason has not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49186\u003c/td\u003e\u003ctd\u003ePass already owned\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e49187\u003c/td\u003e\u003ctd\u003eExceed max tier count\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37172\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37173\u003c/td\u003e\u003ctd\u003eCode [{code}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37174\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37175\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37177\u003c/td\u003e\u003ctd\u003eCode redemption not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37178\u003c/td\u003e\u003ctd\u003eCode redemption already ended\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37179\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per campaign per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30771\u003c/td\u003e\u003ctd\u003eItem [{itemId}] not found in User Section [{sectionId}], UserId [{userId}], Namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30772\u003c/td\u003e\u003ctd\u003eSection [{sectionId}] is not available or expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Create an order", "tags": [ "Order" ], "x-errorCodes": { "1100001": "record not found: inventory", "20002": "validation error", "20006": "optimistic lock", "20016": "action is banned", "20018": "ecommerce item type not supported", "20024": "insufficient inventory capacity (max. slots)", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30771": "Item [{itemId}] not found in User Section [{sectionId}], UserId [{userId}], Namespace [{namespace}]", "30772": "Section [{sectionId}] is not available or expired", "31177": "Permanent item already owned", "32121": "Order price mismatch", "32122": "Item type [{itemType}] does not support", "32123": "Item is not purchasable", "32124": "Invalid currency namespace", "32125": "The user does not meet the purchase conditions", "32126": "Section ID is required for placing this order", "32127": "Discount code [{code}] can't be used on this item: {tips}", "32128": "Discount code [{code}] can not be used with other code together", "32129": "Can't use discount code on free order", "32130": "The total discount amount cannot exceed the order price", "32175": "Exceed item [{itemId}] max count [{maxCount}] per user", "32176": "Exceed item [{itemId}] max count [{maxCount}]", "32178": "User [{userId}] already owned all durable items in flexible bundle [{bundleId}], namespace: [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "35124": "Wallet [{currencyCode}] has insufficient balance", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]", "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37172": "Campaign [{campaignId}] is inactive in namespace [{namespace}]", "37173": "Code [{code}] is inactive in namespace [{namespace}]", "37174": "Exceeded max redeem count per code [{maxCount}]", "37175": "Exceeded max redeem count per code per user [{maxCount}]", "37177": "Code redemption not started", "37178": "Code redemption already ended", "37179": "Exceeded max redeem count per campaign per user [{maxCount}]", "38121": "Duplicate permanent item exists", "49147": "Published season does not exist", "49183": "Pass item does not match published season pass", "49184": "Tier item does not match published season tier", "49185": "Season has not started", "49186": "Pass already owned", "49187": "Exceed max tier count" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ORDER [CREATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/orders/discount/preview": { "post": { "consumes": [ "application/json" ], "description": "Preview order price with discount code, this api is used to auto calc order price with discount code.Notes: this api don\u0026#39;t do full order validation, only check discount code and calc final order price.Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: previewed order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicPreviewOrderPrice", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/OrderDiscountPreviewRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderDiscountPreviewResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32127\u003c/td\u003e\u003ctd\u003eDiscount code [{code}] can't be used on this item: {tips}\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32128\u003c/td\u003e\u003ctd\u003eDiscount code [{code}] can not be used with other code together\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32129\u003c/td\u003e\u003ctd\u003eCan't use discount code on free order\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32130\u003c/td\u003e\u003ctd\u003eThe total discount amount cannot exceed the order price\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20016\u003c/td\u003e\u003ctd\u003eaction is banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37142\u003c/td\u003e\u003ctd\u003eCode [{code}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37172\u003c/td\u003e\u003ctd\u003eCampaign [{campaignId}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37173\u003c/td\u003e\u003ctd\u003eCode [{code}] is inactive in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37174\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37175\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per code per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37177\u003c/td\u003e\u003ctd\u003eCode redemption not started\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37178\u003c/td\u003e\u003ctd\u003eCode redemption already ended\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e37179\u003c/td\u003e\u003ctd\u003eExceeded max redeem count per campaign per user [{maxCount}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Preview order price with discount code.", "tags": [ "Order" ], "x-errorCodes": { "20002": "validation error", "20016": "action is banned", "30142": "Published store does not exist in namespace [{namespace}]", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "32127": "Discount code [{code}] can't be used on this item: {tips}", "32128": "Discount code [{code}] can not be used with other code together", "32129": "Can't use discount code on free order", "32130": "The total discount amount cannot exceed the order price", "37142": "Code [{code}] does not exist in namespace [{namespace}]", "37172": "Campaign [{campaignId}] is inactive in namespace [{namespace}]", "37173": "Code [{code}] is inactive in namespace [{namespace}]", "37174": "Exceeded max redeem count per code [{maxCount}]", "37175": "Exceeded max redeem count per code per user [{maxCount}]", "37177": "Code redemption not started", "37178": "Code redemption already ended", "37179": "Exceeded max redeem count per campaign per user [{maxCount}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ORDER [CREATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/orders/{orderNo}": { "get": { "consumes": [ "application/json" ], "description": "Get user order.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetUserOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user order", "tags": [ "Order" ], "x-errorCodes": { "32141": "Order [{orderNo}] does not exist" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/orders/{orderNo}/cancel": { "put": { "consumes": [ "application/json" ], "description": "Cancel user order.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: cancelled order\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicCancelUserOrder", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/OrderInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32177\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] is not cancelable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Cancel user order", "tags": [ "Order" ], "x-errorCodes": { "32141": "Order [{orderNo}] does not exist", "32177": "Order [{orderNo}] is not cancelable" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ORDER [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/orders/{orderNo}/history": { "get": { "description": "Get user order histories.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: get order history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetUserOrderHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/OrderHistoryInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get user order histories", "tags": [ "Order" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/orders/{orderNo}/receipt.pdf": { "get": { "description": "Download user order receipt by orderNo.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: order receipt pdf\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicDownloadUserOrderReceipt", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "orderNo", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/pdf" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32141\u003c/td\u003e\u003ctd\u003eOrder [{orderNo}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e32173\u003c/td\u003e\u003ctd\u003eReceipt of order [{orderNo}] is not downloadable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Download user order receipt", "tags": [ "Order" ], "x-errorCodes": { "32141": "Order [{orderNo}] does not exist", "32173": "Receipt of order [{orderNo}] is not downloadable" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:ORDER [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/payment/accounts": { "get": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Get payment accounts.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: Payment account list\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetPaymentAccounts", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/PaymentAccount" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get payment accounts", "tags": [ "PaymentAccount" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:PAYMENT:ACCOUNT [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/payment/accounts/{type}/{id}": { "delete": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt;Delete payment account.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;:\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicDeletePaymentAccount", "parameters": [ { "description": "payment account id", "in": "path", "name": "id", "required": true, "type": "string" }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "payment account type", "enum": [ "card", "paypal" ], "in": "path", "name": "type", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "delete a payment account successfully" } }, "security": [ { "authorization": [] } ], "summary": "Delete payment account", "tags": [ "PaymentAccount" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:PAYMENT:ACCOUNT [DELETE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/sections": { "get": { "description": "This API is used to list active section contents.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store sections)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store sections)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: active section contents\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicListActiveSections", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "autoCalcEstimatedPrice", "required": false, "type": "boolean", "x-omitempty": false }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "in": "query", "name": "region", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" }, { "in": "query", "name": "viewId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/SectionInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "List active section contents", "tags": [ "Section" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:STORE [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/subscriptions": { "get": { "consumes": [ "application/json" ], "description": "Query user subscriptions.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicQueryUserSubscriptions", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "enum": [ "CHARGED", "CHARGE_FAILED", "NEVER", "RECURRING_CHARGING", "SETUP" ], "in": "query", "name": "chargeStatus", "required": false, "type": "string" }, { "in": "query", "name": "itemId", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "in": "query", "name": "sku", "required": false, "type": "string" }, { "enum": [ "ACTIVE", "CANCELLED", "EXPIRED", "INIT" ], "in": "query", "name": "status", "required": false, "type": "string" }, { "enum": [ "PLATFORM", "USER" ], "in": "query", "name": "subscribedBy", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query user subscriptions", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } }, "post": { "consumes": [ "application/json" ], "description": "Subscribe a subscription. Support both real and virtual payment. Need go through payment flow using the paymentOrderNo if paymentFlowRequired true.\u0026lt;br\u0026gt;\u0026lt;b\u0026gt;ACTIVE USER subscription can\u0026#39;t do subscribe again.\u0026lt;/b\u0026gt;\u0026lt;br\u0026gt;\u0026lt;b\u0026gt;The next billing date will be X(default 4) hours before the current period ends if correctly subscribed.\u0026lt;/b\u0026gt;\u0026lt;br\u0026gt;User with permission SANDBOX will create sandbox subscription that not real paid.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission(user with this permission will create sandbox subscription)\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1 (CREATE)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;It will be forbidden while the user is banned: ORDER_INITIATE or ORDER_AND_PAYMENT\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: created subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicSubscribeSubscription", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/SubscribeRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "subscribe request processed" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40121\u003c/td\u003e\u003ctd\u003eItem type [{itemType}] does not support\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40122\u003c/td\u003e\u003ctd\u003eSubscription already been subscribed by user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40123\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not support\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35124\u003c/td\u003e\u003ctd\u003eWallet [{currencyCode}] has insufficient balance\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20016\u003c/td\u003e\u003ctd\u003eaction is banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e36141\u003c/td\u003e\u003ctd\u003eCurrency [{currencyCode}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40172\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] is charging, waiting for payment notification\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40173\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] current currency [{currentCurrency}] not match request currency [{requestCurrency}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Subscribe a subscription", "tags": [ "Subscription" ], "x-errorCodes": { "20002": "validation error", "20006": "optimistic lock", "20016": "action is banned", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "35124": "Wallet [{currencyCode}] has insufficient balance", "36141": "Currency [{currencyCode}] does not exist in namespace [{namespace}]", "40121": "Item type [{itemType}] does not support", "40122": "Subscription already been subscribed by user", "40123": "Currency [{currencyCode}] does not support", "40172": "Subscription [{subscriptionId}] is charging, waiting for payment notification", "40173": "Subscription [{subscriptionId}] current currency [{currentCurrency}] not match request currency [{requestCurrency}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [CREATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/subscriptions/subscribable/byItemId": { "get": { "description": "Check user subscription subscribable by itemId, ACTIVE USER subscription can\u0026#39;t do subscribe again.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: subscribable info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicCheckUserSubscriptionSubscribableByItemId", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "itemId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Subscribable" } } }, "security": [ { "authorization": [] } ], "summary": "Check user subscription subscribable", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}": { "get": { "consumes": [ "application/json" ], "description": "Get user subscription.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetUserSubscription", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40141\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Get user subscription", "tags": [ "Subscription" ], "x-errorCodes": { "40141": "Subscription [{subscriptionId}] does not exist" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}/billingAccount": { "put": { "consumes": [ "application/json" ], "description": "Request to change a subscription billing account, this will guide user to payment station. The actual change will happen at the 0 payment notification successfully handled.\u0026lt;br\u0026gt;Only ACTIVE USER subscription with real currency billing account can be changed.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: updated subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicChangeSubscriptionBillingAccount", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionInfo" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40125\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] has no real currency billing account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40141\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40171\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] is not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40172\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] is charging, waiting for payment notification\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Request to change a subscription billing account", "tags": [ "Subscription" ], "x-errorCodes": { "40125": "Subscription [{subscriptionId}] has no real currency billing account", "40141": "Subscription [{subscriptionId}] does not exist", "40171": "Subscription [{subscriptionId}] is not active", "40172": "Subscription [{subscriptionId}] is charging, waiting for payment notification" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}/cancel": { "put": { "consumes": [ "application/json" ], "description": "Cancel a subscription, only ACTIVE subscription can be cancelled. \u0026lt;b\u0026gt;Ensure successfully cancel, recommend at least 1 day before current period ends, otherwise it may be charging or charged.\u0026lt;/b\u0026gt;\u0026lt;br\u0026gt;Set immediate true, the subscription will be terminated immediately, otherwise till the end of current billing cycle.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: cancelled subscription\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicCancelSubscription", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/CancelRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SubscriptionInfo" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40141\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40171\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] is not active\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e40172\u003c/td\u003e\u003ctd\u003eSubscription [{subscriptionId}] is charging, waiting for payment notification\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Cancel a subscription", "tags": [ "Subscription" ], "x-errorCodes": { "40141": "Subscription [{subscriptionId}] does not exist", "40171": "Subscription [{subscriptionId}] is not active", "40172": "Subscription [{subscriptionId}] is charging, waiting for payment notification" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [UPDATE]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/subscriptions/{subscriptionId}/history": { "get": { "description": "Get user subscription billing histories.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: paginated subscription history\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetUserSubscriptionBillingHistories", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "subscriptionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "in": "query", "name": "excludeFree", "required": false, "type": "boolean", "x-omitempty": false }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/BillingHistoryPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Get user subscription billing histories", "tags": [ "Subscription" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:SUBSCRIPTION [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/views": { "get": { "description": "This API is used to get all views.\u0026lt;p\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;PREVIEW\u0026#34;, action=1(CREATE) (user with this permission can view draft store views)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Optional permission\u0026lt;/i\u0026gt;: resource=\u0026#34;SANDBOX\u0026#34;, action=1(CREATE) (user with this permission can view draft store views)\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: all views\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicListViews", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "query", "name": "language", "required": false, "type": "string" }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "items": { "$ref": "#/definitions/ViewInfo" }, "type": "array" } } }, "security": [ { "authorization": [] } ], "summary": "Get all views", "tags": [ "View" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:STORE [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/wallets/{currencyCode}": { "get": { "consumes": [ "application/json" ], "description": "get a wallet by currency code.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: wallet info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetWallet", "parameters": [ { "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/PlatformWallet" } } }, "security": [ { "authorization": [] } ], "summary": "Get a wallet by currency code", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/public/namespaces/{namespace}/users/{userId}/wallets/{currencyCode}/transactions": { "get": { "consumes": [ "application/json" ], "description": "List wallet transactions by currency code ordered by create time desc.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: currency transaction info\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicListUserWalletTransactions", "parameters": [ { "description": "currencyCode", "in": "path", "name": "currencyCode", "required": true, "type": "string" }, { "description": "namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "userId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/WalletTransactionPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "List wallet transactions by currency code", "tags": [ "Wallet" ], "x-errorCodes": {}, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:WALLET [READ]" } } }, "/platform/public/users/me/dlc/content": { "get": { "description": "Get user dlc reward contents. If includeAllNamespaces is false, will only return the dlc synced from the current namespace\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: user dlc\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "publicGetMyDLCContent", "parameters": [ { "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "in": "query", "name": "type", "required": true, "type": "string" }, { "in": "query", "name": "includeAllNamespaces", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/SimpleUserDLCRewardContentsResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user dlc reward contents", "tags": [ "DLC" ], "x-errorCodes": {} } }, "/platform/v2/admin/namespaces/{namespace}/fulfillments": { "get": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt; Query fulfillments in a namespace.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: list of fulfillment info:\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;storeId in items can be ignored\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;error in successList will always be null\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryFulfillments", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "end time is exclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "endTime", "required": false, "type": "string" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "start time is inclusive, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ssZZ", "in": "query", "name": "startTime", "required": false, "type": "string" }, { "enum": [ "FULFILLED", "FULFILL_FAILED", "REVOKED", "REVOKE_FAILED" ], "in": "query", "name": "state", "required": false, "type": "string" }, { "in": "query", "name": "transactionId", "required": false, "type": "string" }, { "in": "query", "name": "userId", "required": false, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentPagingSlicedResult" } } }, "security": [ { "authorization": [] } ], "summary": "Query fulfillments", "tags": [ "Fulfillment" ], "x-errorCodes": {}, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:FULFILLMENT [READ]" } } }, "/platform/v2/admin/namespaces/{namespace}/items/byCriteria": { "get": { "description": "This API is used to query items by criteria within a store.\u0026lt;p\u0026gt;The behaviour for itemStatus query parameter:\u0026lt;li\u0026gt;TRUE: Show only ACTIVE items\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;FALSE: Show only INACTIVE items\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;Not provided: show both ACTIVE and INACTIVE items\u0026lt;/li\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: the list of items\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "queryItemsV2", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "in": "query", "name": "appType", "required": false, "type": "string" }, { "description": "allowed format: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z , filter date include(purchaseAt, expireAt)", "in": "query", "name": "availableDate", "required": false, "type": "string" }, { "in": "query", "name": "baseAppId", "required": false, "type": "string" }, { "description": "category path", "in": "query", "name": "categoryPath", "required": false, "type": "string" }, { "description": "features, separate multiple value by commas parameter", "in": "query", "name": "features", "required": false, "type": "string" }, { "default": false, "description": "default is false, only available when search by category path, it will return all of the items(includes sub category path) under this category path", "in": "query", "name": "includeSubCategoryItem", "required": false, "type": "boolean", "x-omitempty": false }, { "description": "itemName, fuzzy matching", "in": "query", "name": "itemName", "required": false, "type": "string" }, { "enum": [ "ACTIVE", "INACTIVE" ], "in": "query", "name": "itemStatus", "required": false, "type": "string" }, { "collectionFormat": "multi", "in": "query", "items": { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "name": "itemType", "required": false, "type": "array" }, { "default": 20, "description": "limit. \u003cdiv style=\"border-left: 4px solid #ffc107; background-color: #fff8e1; padding: 10px; margin: 10px 0;\"\u003e\n For performance and stability reasons, it is recommended to keep the\n \u003ccode\u003elimit\u003c/code\u003e value \u003cstrong\u003eno greater than 100\u003c/strong\u003e. Using higher values may lead to increased response times or degraded service performance.\n\u003c/div\u003e\n", "format": "int32", "in": "query", "name": "limit", "required": false, "type": "integer" }, { "default": 0, "description": "offset", "format": "int32", "in": "query", "name": "offset", "required": false, "type": "integer" }, { "description": "exist in region", "in": "query", "name": "region", "required": false, "type": "string" }, { "in": "query", "name": "sectionExclusive", "required": false, "type": "boolean", "x-omitempty": false }, { "default": [ "name:asc", "displayOrder:asc" ], "description": "default is name:asc,displayOrder:asc, allow values: [name, name:asc, name:desc, createdAt, createdAt:asc, createdAt:desc, updatedAt, updatedAt:asc, updatedAt:desc, displayOrder, displayOrder:asc, displayOrder:desc],and support sort group, eg: sortBy=name:asc,createdAt:desc. Make sure to always use more than one sort if the first sort is not an unique valuefor example, if you wish to sort by displayOrder, make sure to include other sort such as name or createdAt after the first sort, eg: displayOrder:asc,name:asc", "in": "query", "items": { "enum": [ "name", "name:asc", "name:desc", "createdAt", "createdAt:asc", "createdAt:desc", "updatedAt", "updatedAt:asc", "updatedAt:desc", "displayOrder", "displayOrder:asc", "displayOrder:desc" ], "type": "string" }, "name": "sortBy", "required": false, "type": "array", "uniqueItems": true }, { "description": "default is published store id", "in": "query", "name": "storeId", "required": false, "type": "string" }, { "description": "tags, separate multiple value by commas parameter", "in": "query", "name": "tags", "required": false, "type": "string" }, { "description": "targetNamespace", "in": "query", "name": "targetNamespace", "required": false, "type": "string" }, { "default": false, "description": "true means include total count of items in response body", "in": "query", "name": "withTotal", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FullItemPagingResult" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30142\u003c/td\u003e\u003ctd\u003ePublished store does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ValidationErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Query items by criteria", "tags": [ "Item" ], "x-errorCodes": { "20002": "validation error", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]", "30142": "Published store does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:ITEM [READ]" } } }, "/platform/v2/admin/namespaces/{namespace}/stores/import": { "put": { "consumes": [ "multipart/form-data" ], "description": "This API is used to import a store.", "operationId": "importStore_1", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "formData", "name": "file", "required": false, "type": "file" }, { "description": "default we will use published store id,and will create published store if it dose not exist", "in": "query", "name": "storeId", "required": false, "type": "string" }, { "default": true, "description": "default strict mode is true, if strict mode is false, will not do any validation.", "in": "query", "name": "strictMode", "required": false, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ImportStoreResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30121\u003c/td\u003e\u003ctd\u003eStore data is invalid\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30122\u003c/td\u003e\u003ctd\u003eStore's meta mismatch\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Import a store", "tags": [ "Store" ], "x-errorCodes": { "30121": "Store data is invalid", "30122": "Store's meta mismatch", "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [UPDATE]" } } }, "/platform/v2/admin/namespaces/{namespace}/stores/{storeId}/export": { "post": { "consumes": [ "application/json" ], "description": "This API is used to export a whole or partial store.", "operationId": "exportStore_1", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "storeId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/ExportStoreRequest" } } ], "produces": [ "application/zip" ], "responses": { "200": { "description": "Successful operation", "schema": { "type": "file" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30141\u003c/td\u003e\u003ctd\u003eStore [{storeId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Export a store", "tags": [ "Store" ], "x-errorCodes": { "30141": "Store [{storeId}] does not exist in namespace [{namespace}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:STORE [READ]" } } }, "/platform/v2/admin/namespaces/{namespace}/users/{userId}/fulfillment/rewards": { "post": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[SERVICE COMMUNICATION ONLY]\u0026lt;/b\u0026gt; Fulfill rewards.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment result\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;rewards Item unsupported Type\u0026lt;/i\u0026gt;: SUBSCRIPTION\u0026lt;/ul\u0026gt;", "operationId": "fulfillRewardsV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/RewardsRequest" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill rewards", "tags": [ "Fulfillment" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [CREATE]" } } }, "/platform/v2/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "\u0026lt;h3\u0026gt;The endpoint is going to be deprecated \u0026lt;/h3\u0026gt;Description: this endpoint is \u0026lt;b\u0026gt;Not supported yet in AGS Shared Cloud\u0026lt;/b\u0026gt; and it\u0026#39;s used to fulfill items by transaction id.\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Request body\u0026lt;/i\u0026gt;: storeId, region, language, and entitlementCollectionId can be ignored.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment v2 result, storeId field can be ignored.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h3\u0026gt;Endpoint migration guide\u0026lt;/h3\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;strong\u0026gt;Substitute endpoint: \u0026lt;em\u0026gt;/v3/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId} [PUT]\u0026lt;/em\u0026gt;\u0026lt;/strong\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;ul\u0026gt;", "operationId": "fulfillItems", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/FulfillmentV2Request" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "transactionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentV2Result" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38122\u003c/td\u003e\u003ctd\u003eSubscription endDate required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38128\u003c/td\u003e\u003ctd\u003eCannot retry fulfillment with different payload. Please check the items list.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38129\u003c/td\u003e\u003ctd\u003eCannot combine same item [{itemId}] with different [{fieldName}] value\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38130\u003c/td\u003e\u003ctd\u003eCannot fulfill item with type [{itemType}] in item [{itemIdentity}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{sku}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/FulfillmentV2Result" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill items by transactionId", "tags": [ "Fulfillment" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30343": "Item of sku [{sku}] does not exist", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists", "38122": "Subscription endDate required", "38128": "Cannot retry fulfillment with different payload. Please check the items list.", "38129": "Cannot combine same item [{itemId}] with different [{fieldName}] value", "38130": "Cannot fulfill item with type [{itemType}] in item [{itemIdentity}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [UPDATE]" } } }, "/platform/v2/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}/retry": { "put": { "deprecated": true, "description": "\u0026lt;h3\u0026gt;The endpoint is going to be deprecated \u0026lt;/h3\u0026gt;\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt; Retry fulfill items by transactionId without sending the original payload.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment v2 result, storeId field can be ignored.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h3\u0026gt;Endpoint migration guide\u0026lt;/h3\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;strong\u0026gt;Substitute endpoint: \u0026lt;em\u0026gt;/v3/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}/retry [PUT]\u0026lt;/em\u0026gt;\u0026lt;/strong\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;ul\u0026gt;", "operationId": "retryFulfillItems", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "transactionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentV2Result" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38145\u003c/td\u003e\u003ctd\u003eFulfillment with transactionId [{transactionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/FulfillmentV2Result" } } }, "security": [ { "authorization": [] } ], "summary": "Retry fulfill items by transactionId", "tags": [ "Fulfillment" ], "x-errorCodes": { "38145": "Fulfillment with transactionId [{transactionId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [UPDATE]" } } }, "/platform/v2/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}/revoke": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "\u0026lt;h3\u0026gt;The endpoint is going to be deprecated \u0026lt;/h3\u0026gt;\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt; Revoke items by transactionId.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: revoke fulfillment v2 result, storeId field can be ignored.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;\u0026lt;h3\u0026gt;Endpoint migration guide\u0026lt;/h3\u0026gt;\u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;strong\u0026gt;Substitute endpoint: \u0026lt;em\u0026gt;/v3/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}/revoke [PUT]\u0026lt;/em\u0026gt;\u0026lt;/strong\u0026gt;\u0026lt;/li\u0026gt;\u0026lt;ul\u0026gt;", "operationId": "revokeItems", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "transactionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevokeFulfillmentV2Result" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38145\u003c/td\u003e\u003ctd\u003eFulfillment with transactionId [{transactionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/RevokeFulfillmentV2Result" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke items by transactionId", "tags": [ "Fulfillment" ], "x-errorCodes": { "38145": "Fulfillment with transactionId [{transactionId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [UPDATE]" } } }, "/platform/v2/public/namespaces/{namespace}/users/{userId}/iap/apple/receipt": { "put": { "consumes": [ "application/json" ], "description": "Verify apple iap transaction and fulfill item, support subscriptionOther detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: \u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "V2PublicFulfillAppleIAPItem", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": false, "schema": { "$ref": "#/definitions/AppleIAPRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Fulfill successfully" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39131\u003c/td\u003e\u003ctd\u003eInvalid Apple IAP config under namespace [{namespace}]: [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39136\u003c/td\u003e\u003ctd\u003eRequest Apple API failed with status code [{statusCode}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39137\u003c/td\u003e\u003ctd\u003eVerify Apple transaction failed with status [{status}] and error message [{message}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39138\u003c/td\u003e\u003ctd\u003eApple IAP version mismatch detected: The current configuration is set to [{configVersion}], but the API version is [{apiVersion}]. Please ensure that both the configuration and API versions are aligned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39142\u003c/td\u003e\u003ctd\u003eApple IAP config not found in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e39171\u003c/td\u003e\u003ctd\u003eThe bundle id in namespace [{namespace}] expect [{expected}] but was [{actual}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20006\u003c/td\u003e\u003ctd\u003eoptimistic lock\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill apple iap item V2.", "tags": [ "IAP" ], "x-errorCodes": { "20006": "optimistic lock", "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists", "39131": "Invalid Apple IAP config under namespace [{namespace}]: [{message}]", "39136": "Request Apple API failed with status code [{statusCode}] and error message [{message}]", "39137": "Verify Apple transaction failed with status [{status}] and error message [{message}]", "39138": "Apple IAP version mismatch detected: The current configuration is set to [{configVersion}], but the API version is [{apiVersion}]. Please ensure that both the configuration and API versions are aligned", "39142": "Apple IAP config not found in namespace [{namespace}]", "39171": "The bundle id in namespace [{namespace}] expect [{expected}] but was [{actual}]" }, "x-security": { "userPermissions": "NAMESPACE:{namespace}:USER:{userId}:IAP [UPDATE]" } } }, "/platform/v3/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt; Fulfill items by transactionId.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Request body\u0026lt;/i\u0026gt;: storeId, region, language, and entitlementCollectionId can be ignored.\u0026lt;/li\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment v2 result, storeId field can be ignored.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "fulfillItemsV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/FulfillmentV2Request" } }, { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "transactionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentV2Result" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e35123\u003c/td\u003e\u003ctd\u003eWallet [{walletId}] is inactive\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38121\u003c/td\u003e\u003ctd\u003eDuplicate permanent item exists\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38122\u003c/td\u003e\u003ctd\u003eSubscription endDate required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38128\u003c/td\u003e\u003ctd\u003eCannot retry fulfillment with different payload. Please check the items list.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38129\u003c/td\u003e\u003ctd\u003eCannot combine same item [{itemId}] with different [{fieldName}] value\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38130\u003c/td\u003e\u003ctd\u003eCannot fulfill item with type [{itemType}] in item [{itemIdentity}]\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30341\u003c/td\u003e\u003ctd\u003eItem [{itemId}] does not exist in namespace [{namespace}]\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e30343\u003c/td\u003e\u003ctd\u003eItem of sku [{sku}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Fulfill items by transactionId", "tags": [ "Fulfillment" ], "x-errorCodes": { "30341": "Item [{itemId}] does not exist in namespace [{namespace}]", "30343": "Item of sku [{sku}] does not exist", "35123": "Wallet [{walletId}] is inactive", "38121": "Duplicate permanent item exists", "38122": "Subscription endDate required", "38128": "Cannot retry fulfillment with different payload. Please check the items list.", "38129": "Cannot combine same item [{itemId}] with different [{fieldName}] value", "38130": "Cannot fulfill item with type [{itemType}] in item [{itemIdentity}]" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [UPDATE]" } } }, "/platform/v3/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}/retry": { "put": { "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt; Retry fulfill items by transactionId without sending the original payload.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: fulfillment v2 result, storeId field can be ignored.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "retryFulfillItemsV3", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "transactionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/FulfillmentV2Result" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38145\u003c/td\u003e\u003ctd\u003eFulfillment with transactionId [{transactionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Retry fulfill items by transactionId", "tags": [ "Fulfillment" ], "x-errorCodes": { "38145": "Fulfillment with transactionId [{transactionId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [UPDATE]" } } }, "/platform/v3/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}/revoke": { "put": { "consumes": [ "application/json" ], "description": "\u0026lt;b\u0026gt;[Not supported yet in AGS Shared Cloud]\u0026lt;/b\u0026gt; Revoke items by transactionId.\u0026lt;br\u0026gt;Other detail info: \u0026lt;ul\u0026gt;\u0026lt;li\u0026gt;\u0026lt;i\u0026gt;Returns\u0026lt;/i\u0026gt;: revoke fulfillment v2 result, storeId field can be ignored.\u0026lt;/li\u0026gt;\u0026lt;/ul\u0026gt;", "operationId": "revokeItemsV3", "parameters": [ { "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "path", "name": "transactionId", "required": true, "type": "string" }, { "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/RevokeFulfillmentV2Result" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eErrorCode\u003c/td\u003e\u003ctd\u003eErrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e38145\u003c/td\u003e\u003ctd\u003eFulfillment with transactionId [{transactionId}] does not exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/ErrorEntity" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke items by transactionId", "tags": [ "Fulfillment" ], "x-errorCodes": { "38145": "Fulfillment with transactionId [{transactionId}] does not exist" }, "x-security": { "userPermissions": "ADMIN:NAMESPACE:{namespace}:USER:{userId}:FULFILLMENT [UPDATE]" } } } }, "definitions": { "AchievementInfo": { "properties": { "id": { "description": "achievement id", "type": "string" }, "name": { "description": "achievement display name", "type": "string" }, "progressState": { "description": "achievement progress", "type": "string" }, "progression": { "additionalProperties": { "type": "object" }, "description": "achievement progression", "type": "object" }, "serviceConfigId": { "description": "service config id", "type": "string" } }, "type": "object" }, "Action": { "properties": { "operations": { "items": { "$ref": "#/definitions/Operation" }, "type": "array" }, "status": { "enum": [ "FAILED", "INIT", "SKIPPED", "SUCCESS" ], "type": "string" }, "statusReason": { "type": "string" }, "userId": { "type": "string" } }, "type": "object" }, "ActionRequest": { "description": "Represents the request to commit a chained trade action.", "properties": { "operations": { "example": "[\n {\n \"type\": \"DEBIT_WALLET\",\n \"debitPayload\": {\n \"currencyCode\": \"string\",\n \"walletPlatform\": \"Other\",\n \"count\": 1\n }\n },\n {\n \"type\": \"CREDIT_WALLET\",\n \"creditPayload\": {\n \"currencyCode\": \"string\",\n \"expireAt\": null,\n \"balanceOrigin\": \"System\",\n \"count\": 1\n }\n },\n {\n \"type\": \"FULFILL_ITEM\",\n \"fulFillItemPayload\": {\n \"itemIdentityType\": \"ITEM_ID\",\n \"itemIdentity\": \"string\",\n \"entitlementOrigin\": \"string\",\n \"entitlementCollectionId\": \"string\",\n \"count\": 1\n }\n },\n {\n \"type\": \"REVOKE_ENTITLEMENT\",\n \"revokeEntitlementPayload\": {\n \"entitlementId\": \"string\",\n \"count\": 1\n }\n }\n]\n", "items": { "$ref": "#/definitions/OperationRequest" }, "type": "array" }, "userId": { "type": "string" } }, "type": "object" }, "AdditionalData": { "properties": { "cardSummary": { "type": "string" } }, "type": "object" }, "AdditionalDataEntitlement": { "properties": { "clientTransaction": { "items": { "$ref": "#/definitions/ClientTransaction" }, "type": "array" }, "entitlementId": { "type": "string" }, "usageCount": { "format": "int32", "type": "integer" } }, "type": "object" }, "AdminEntitlementDecrement": { "description": "A DTO object for admin entitlement decrement.", "properties": { "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata, It is not stored in the database, only forwarded to AGS event", "type": "object" }, "options": { "description": "options, it is only available when entitlement clazz is OPTIONBOX and value should be item id.", "items": { "type": "string" }, "type": "array" }, "platform": { "description": "user platform", "type": "string" }, "requestId": { "description": "Request id(Optional), client should provide a unique request id to perform at most once execution, When a request id is resubmitted, it will return original successful response", "type": "string" }, "useCount": { "description": "the count to decrease, 1 for default, option box entitlement only allow 1", "format": "int32", "type": "integer" } }, "type": "object" }, "AdminEntitlementSoldRequest": { "description": "A DTO object for sell entitlement.", "properties": { "platform": { "description": "user platform", "type": "string" }, "requestId": { "description": "Request id(Optional), client should provide a unique request id to perform at most once execution, When a request id is resubmitted, it will return original successful response", "type": "string" }, "useCount": { "description": "the use count to sell, 1 for default, durable entitlement only allow 1", "format": "int32", "type": "integer" } }, "type": "object" }, "AdminOrderCreate": { "properties": { "currencyCode": { "description": "currency code, should match currency code in item region data", "type": "string" }, "currencyNamespace": { "description": "currency namespace, if options.skipPriceValidation is true, then this is required. If current namespace is publisher namespace, then currency namespace must be publisher namespace; if current is game namespace, currency namespace must be the same game namespace or publisher namespace", "type": "string" }, "discountCodes": { "description": "Discount codes, min size is 1, max size is 10notes: The same data will be auto merged, for example input discount code [111, 111] in request body, final discount code list should be 111", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "discountedPrice": { "description": "Discounted price of order, this should match (item_discounted_price * quantity) ifitem discounted price is available, otherwise it should equal to (item_price * quantity) if item is not flexible bundle, if item is flexible bundle, item discounted price should equal estimate discounted price.", "format": "int32", "type": "integer" }, "entitlementPlatform": { "description": "entitlement platform the platform which user are playing now and use for entitlement eg: user purchase item on Steam, it should be 'Steam'", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "type": "string" }, "ext": { "additionalProperties": { "type": "object" }, "description": "extra field to store external order information", "type": "object" }, "itemId": { "description": "item id", "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "type": "string" }, "options": { "$ref": "#/definitions/OrderCreationOptions", "description": "Creation options" }, "platform": { "description": "platform the platform which user are playing now and use for payment eg: user purchase item on Steam, it should be 'Steam'", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "type": "string" }, "price": { "description": "Price of order, should match (item_price * quantity) if item is not flexible bundle, should use flexible estimate price if item is flexible bundle", "format": "int32", "type": "integer" }, "quantity": { "description": "Quantity of item, min is 1, and will default use 1 and ignore this quantity field if item is flexible bundle", "format": "int32", "type": "integer" }, "region": { "description": "country value from ISO countries", "type": "string" }, "returnUrl": { "description": "custom return url for real payment, user will be redirected to this url once payment is finished", "type": "string" }, "sandbox": { "description": "sandbox", "type": "boolean", "x-omitempty": false }, "sectionId": { "description": "section Id, required if order consists of section item", "type": "string" } }, "required": [ "currencyCode", "discountedPrice", "itemId", "quantity", "region" ], "type": "object" }, "AdyenConfig": { "description": "A DTO object for updating adyen config.", "properties": { "allowedPaymentMethods": { "description": "specifying the payment methods that are allowed to appear with the paymentMethod.type. paymentMethod.type of each payment method link: https://docs.adyen.com/developers/payment-methods", "items": { "type": "string" }, "type": "array" }, "apiKey": { "description": "api key, max length is 4096", "type": "string" }, "authoriseAsCapture": { "description": "authorise as capture means no separated capture event", "type": "boolean", "x-omitempty": false }, "blockedPaymentMethods": { "description": "specifying the payment methods that are blocked with the paymentMethod.type. paymentMethod.type of each payment method link: https://docs.adyen.com/developers/payment-methods", "items": { "type": "string" }, "type": "array" }, "clientKey": { "description": "client key, max length is 4096", "type": "string" }, "dropInSettings": { "description": "Adyen drop in settings json string", "type": "string" }, "liveEndpointUrlPrefix": { "description": "Provide the unique live url prefix from the \"API URLs and Response\" menu in the Adyen Customer Area. Under sandbox env, please input random words.", "type": "string" }, "merchantAccount": { "description": "merchant account, max length is 255", "type": "string" }, "notificationHmacKey": { "description": "notification hmac key, max length is 4096", "type": "string" }, "notificationPassword": { "description": "notification password, max length is 255", "type": "string" }, "notificationUsername": { "description": "notification username, max length is 255", "type": "string" }, "returnUrl": { "description": "return url, max length is 2000", "type": "string" }, "settings": { "description": "Adyen settings json string(Deprecated, please use dropInSettings field) adyen settings docs: https://docs.adyen.com/checkout/web-sdk/customization/settings/", "example": "{\"autoFocusOnLoad\":true,\"consolidateCards\":true,\"initialPMCount\":5,\"translations\":{\"deliveryAddress\":{\"en_US\":\"Shipping Address\",\"nl_NL\":\"Verzendadres\"}},\"paymentMethods\":{\"card\":{\"sfStyles\":{\"base\":{\"color\":\"#000\",\"fontSize\":\"14px\",\"lineHeight\":\"14px\",\"fontSmoothing\":\"antialiased\"},\"error\":{\"color\":\"red\"},\"placeholder\":{\"color\":\"#d8d8d8\"},\"validated\":{\"color\":\"green\"}},\"separateDateInputs\":false,\"placeholders\":{\"encryptedCardNumber\":\"4111 1111 1111 1111\",\"encryptedExpiryDate\":\"08/18\",\"encryptedSecurityCode\":\"737\"}}}}", "type": "string" } }, "type": "object" }, "AliPayConfig": { "description": "A DTO object for updating alipay config.", "properties": { "appId": { "description": "appId", "type": "string" }, "privateKey": { "description": "privateKey", "type": "string" }, "publicKey": { "description": "publicKey", "type": "string" }, "returnUrl": { "description": "returnUrl", "type": "string" } }, "type": "object" }, "AppConfig": { "properties": { "appName": { "description": "extend app name", "type": "string" } }, "required": [ "appName" ], "type": "object" }, "AppEntitlementInfo": { "properties": { "appId": { "description": "appId for APP type entitlement", "type": "string" }, "appType": { "description": "appType for APP type entitlement", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "collectionId": { "description": "collection id", "type": "string" }, "endDate": { "description": "entitlement end date", "format": "date-time", "type": "string", "x-nullable": true }, "grantedAt": { "description": "entitlement granted at", "format": "date-time", "type": "string", "x-nullable": false }, "itemId": { "description": "item id", "type": "string" }, "itemSnapshot": { "$ref": "#/definitions/ItemSnapshot", "description": "itemSnapshot" }, "namespace": { "description": "entitlement namespace", "type": "string" }, "noOrigin": { "description": "Whether entitlement have origin", "type": "boolean", "x-omitempty": false }, "origin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "sku": { "description": "unique sku no for item", "type": "string" }, "startDate": { "description": "entitlement start date", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "entitlement status", "enum": [ "ACTIVE", "CONSUMED", "INACTIVE", "REVOKED", "SOLD" ], "type": "string" }, "storeId": { "description": "item store id, null if published store", "type": "string" }, "userId": { "description": "entitlement owner", "type": "string" } }, "required": [ "grantedAt", "namespace", "status", "userId" ], "type": "object" }, "AppEntitlementPagingSlicedResult": { "properties": { "data": { "items": { "$ref": "#/definitions/AppEntitlementInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "type": "object" }, "AppInfo": { "properties": { "announcement": { "description": "announcement", "type": "string" }, "carousel": { "description": "carousel", "items": { "$ref": "#/definitions/Slide" }, "type": "array" }, "developer": { "description": "developer", "type": "string" }, "forumUrl": { "description": "forum url", "type": "string" }, "genres": { "description": "genres", "items": { "enum": [ "Action", "Adventure", "Casual", "FreeToPlay", "Indie", "MassivelyMultiplayer", "RPG", "Racing", "Simulation", "Sports", "Strategy" ], "type": "string" }, "type": "array" }, "itemId": { "description": "item id", "type": "string" }, "language": { "description": "language", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "platformRequirements": { "additionalProperties": { "items": { "$ref": "#/definitions/Requirement" }, "type": "array" }, "description": "platform requirements", "type": "object" }, "platforms": { "description": "supported platforms", "items": { "enum": [ "Android", "IOS", "Linux", "MacOS", "Windows" ], "type": "string" }, "type": "array" }, "players": { "description": "players", "items": { "enum": [ "Coop", "CrossPlatformMulti", "LocalCoop", "MMO", "Multi", "Single" ], "type": "string" }, "type": "array" }, "primaryGenre": { "description": "primary genre", "enum": [ "Action", "Adventure", "Casual", "FreeToPlay", "Indie", "MassivelyMultiplayer", "RPG", "Racing", "Simulation", "Sports", "Strategy" ], "type": "string" }, "publisher": { "description": "publisher", "type": "string" }, "region": { "description": "region", "type": "string" }, "releaseDate": { "description": "release date", "format": "date-time", "type": "string", "x-nullable": true }, "slogan": { "description": "slogan", "type": "string" }, "websiteUrl": { "description": "website url", "type": "string" } }, "required": [ "itemId", "namespace" ], "type": "object" }, "AppLocalization": { "properties": { "announcement": { "description": "announcement", "type": "string" }, "slogan": { "description": "slogan", "type": "string" } }, "type": "object" }, "AppUpdate": { "properties": { "carousel": { "description": "carousel", "items": { "$ref": "#/definitions/Slide" }, "type": "array" }, "developer": { "description": "developer, it should starts and ends with alphabets uppercase/lowercase or numeric, allowed separators, these symbols ',.-, and white-space, max length is 48", "type": "string" }, "forumUrl": { "description": "forum url, max length 2000", "type": "string" }, "genres": { "description": "genres", "items": { "enum": [ "Action", "Adventure", "Casual", "FreeToPlay", "Indie", "MassivelyMultiplayer", "RPG", "Racing", "Simulation", "Sports", "Strategy" ], "type": "string" }, "type": "array" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/AppLocalization" }, "description": "localizations", "type": "object" }, "platformRequirements": { "additionalProperties": { "items": { "$ref": "#/definitions/Requirement" }, "type": "array" }, "description": "platform requirements", "type": "object" }, "platforms": { "description": "supported platforms", "items": { "enum": [ "Android", "IOS", "Linux", "MacOS", "Windows" ], "type": "string" }, "type": "array" }, "players": { "description": "players", "items": { "enum": [ "Coop", "CrossPlatformMulti", "LocalCoop", "MMO", "Multi", "Single" ], "type": "string" }, "type": "array" }, "primaryGenre": { "description": "primary genre", "enum": [ "Action", "Adventure", "Casual", "FreeToPlay", "Indie", "MassivelyMultiplayer", "RPG", "Racing", "Simulation", "Sports", "Strategy" ], "type": "string" }, "publisher": { "description": "publisher, it should starts and ends with alphabets uppercase/lowercase or numeric, allowed separators, these symbols ',.-, and white-space, max length is 48", "type": "string" }, "releaseDate": { "description": "release date in format yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "format": "date-time", "type": "string", "x-nullable": true }, "websiteUrl": { "description": "website url, max length is 2000", "type": "string" } }, "type": "object" }, "AppleIAPConfigInfo": { "properties": { "appAppleId": { "description": "Apple App Id", "format": "int64", "type": "integer" }, "authKeyFileName": { "description": "auth key file name", "type": "string" }, "bundleId": { "description": "bundleId", "type": "string" }, "issuerId": { "description": "Apple issuer id", "type": "string" }, "keyId": { "description": "Apple key id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "password": { "description": "password", "type": "string" }, "version": { "description": "Apple in app purchase version. v1 don't support subscription.", "enum": [ "V1", "V2" ], "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "AppleIAPConfigRequest": { "properties": { "appAppleId": { "description": "app apple id", "format": "int64", "type": "integer" }, "bundleId": { "description": "bundleId", "type": "string" }, "issuerId": { "description": "issuerId", "type": "string" }, "keyId": { "description": "keyId", "type": "string" }, "password": { "description": "password", "type": "string" }, "version": { "description": "version", "enum": [ "V1", "V2" ], "type": "string" } }, "required": [ "bundleId" ], "type": "object" }, "AppleIAPConfigVersionInfo": { "properties": { "version": { "description": "Apple in app purchase version. v1 don't support subscription.", "enum": [ "V1", "V2" ], "type": "string" } }, "type": "object" }, "AppleIAPReceipt": { "properties": { "excludeOldTransactions": { "description": "Only used for iOS7 style app receipts that contain auto-renewable or non-renewing subscriptions. If value is true, response includes only the latest renewal transaction for any subscriptions.", "type": "boolean", "x-omitempty": false }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "productId": { "description": "The product identifier of the item that was purchased.", "type": "string" }, "receiptData": { "description": "The base64 encoded receipt data", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" }, "transactionId": { "description": "The transaction identifier of the item that was purchased.", "type": "string" } }, "required": [ "productId", "receiptData", "transactionId" ], "type": "object" }, "AppleIAPRequest": { "properties": { "transactionId": { "description": "The transaction identifier of the item that was purchased.", "type": "string" } }, "required": [ "transactionId" ], "type": "object" }, "AvailableComparison": { "description": "available comparison object", "properties": { "comparison": { "description": "available comparison", "enum": [ "excludes", "includes", "is", "isGreaterThan", "isGreaterThanOrEqual", "isLessThan", "isLessThanOrEqual", "isNot" ], "type": "string" }, "text": { "description": "comparison text", "type": "string" } }, "type": "object" }, "AvailablePredicate": { "description": "available predicate object", "properties": { "availableComparisons": { "description": "available comparison list", "items": { "$ref": "#/definitions/AvailableComparison" }, "type": "array" }, "predicateType": { "description": "available predicate type", "enum": [ "EntitlementPredicate", "SeasonPassPredicate", "SeasonTierPredicate", "StatisticCodePredicate" ], "type": "string" }, "showAnyOf": { "description": "whether show any of on config page", "type": "boolean", "x-omitempty": false }, "valueType": { "description": "predicate value type", "enum": [ "List", "Number", "String" ], "type": "string" } }, "type": "object" }, "AvailablePrice": { "properties": { "currencyCode": { "description": "currency code", "type": "string" }, "currencyNamespace": { "description": "currency namespace", "type": "string" }, "discountExpireAt": { "description": "Discount expire date time", "format": "date-time", "type": "string", "x-nullable": true }, "discountPurchaseAt": { "description": "DiscountPurchaseAt", "format": "date-time", "type": "string", "x-nullable": true }, "discountedPrice": { "description": "current available discounted price, only calc total discounted price with un-owned durable items if it's a flexible bundle item.", "format": "int32", "type": "integer" }, "expireAt": { "description": "ExpireAt", "format": "date-time", "type": "string", "x-nullable": true }, "price": { "description": "current full price, only calc total price with un-owned durable items if it's a flexible bundle item.", "format": "int32", "type": "integer" }, "priceDetails": { "description": "only have value when item is flexible bundle and the price is within the effective range", "items": { "$ref": "#/definitions/SubItemAvailablePrice" }, "type": "array" }, "purchaseAt": { "description": "PurchaseAt", "format": "date-time", "type": "string", "x-nullable": true } }, "required": [ "currencyCode", "currencyNamespace", "discountedPrice", "price" ], "type": "object" }, "BaseCustomConfig": { "properties": { "connectionType": { "description": "connect type: INSECURE, TLS, default is INSECURE", "enum": [ "INSECURE", "TLS" ], "type": "string" }, "grpcServerAddress": { "description": "plugin grpc server address: \u003chost\u003e:\u003cport\u003e", "type": "string" } }, "required": [ "connectionType", "grpcServerAddress" ], "type": "object" }, "BaseTLSConfig": { "properties": { "rootCertFileName": { "description": "root cert file name", "type": "string" } }, "type": "object" }, "BasicCategoryInfo": { "properties": { "categoryPath": { "description": "Category path", "type": "string" }, "createdAt": { "description": "Category created time", "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "description": "Category namespace", "type": "string" }, "parentCategoryPath": { "description": "Parent category path", "type": "string" }, "root": { "type": "boolean", "x-omitempty": false }, "updatedAt": { "description": "Category updated time", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "categoryPath", "createdAt", "namespace", "parentCategoryPath", "updatedAt" ], "type": "object" }, "BasicItem": { "properties": { "appId": { "description": "App id, required when itemType is APP", "type": "string" }, "appType": { "description": "App type, required when itemType is APP", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "Base app id", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "entitlementType": { "description": "Entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "features": { "description": "Features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "itemId": { "description": "Item id", "type": "string" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "name": { "description": "Name", "type": "string" }, "namespace": { "description": "Item namespace", "type": "string" }, "seasonType": { "description": "Season type, required while itemType is SEASON", "enum": [ "PASS", "TIER" ], "type": "string" }, "sku": { "description": "Sku", "type": "string" }, "status": { "description": "Item status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "Tags", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "Item use count, required when entitlement type is consumable or itemType is COINS", "format": "int32", "type": "integer" } }, "required": [ "createdAt", "entitlementType", "itemId", "itemType", "name", "namespace", "status", "updatedAt" ], "type": "object" }, "BillingAccount": { "properties": { "additionalData": { "$ref": "#/definitions/AdditionalData", "description": "payment addition data" }, "paymentMethod": { "description": "payment method", "type": "string" }, "paymentProvider": { "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" } }, "type": "object" }, "BillingHistoryInfo": { "properties": { "amount": { "description": "charge amount", "format": "int32", "type": "integer" }, "billingAccount": { "$ref": "#/definitions/BillingAccount", "description": "billing account" }, "changeBillingAccount": { "description": "Is this payment for billing account change", "type": "boolean", "x-omitempty": false }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "currency": { "$ref": "#/definitions/CurrencySummary", "description": "currency" }, "description": { "description": "subscription description", "type": "string" }, "extTxId": { "description": "external transaction id", "type": "string" }, "itemId": { "description": "item id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "paymentOrderNo": { "description": "payment order No", "type": "string" }, "recurringOrderNo": { "description": "Recurring order No for this billing", "type": "string" }, "retryAttempted": { "description": "Already retry attempted No", "format": "int32", "type": "integer" }, "sandbox": { "description": "sandbox", "type": "boolean", "x-omitempty": false }, "sku": { "description": "subscription sku", "type": "string" }, "status": { "description": "billing history status", "enum": [ "CHARGED", "CHARGE_FAILED", "INIT", "REFUNDED", "REFUND_FAILED" ], "type": "string" }, "statusReason": { "description": "status reason", "type": "string" }, "subscriptionId": { "description": "subscription id", "type": "string" }, "subtotalPrice": { "description": "subtotal price", "format": "int32", "type": "integer" }, "title": { "description": "subscription title", "type": "string" }, "totalPrice": { "description": "total price", "format": "int32", "type": "integer" }, "totalTax": { "description": "total tax", "format": "int32", "type": "integer" }, "txEndTime": { "description": "transaction end time", "format": "date-time", "type": "string", "x-nullable": true }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "user id", "type": "string" } }, "required": [ "amount", "createdAt", "currency", "itemId", "namespace", "recurringOrderNo", "sandbox", "status", "subscriptionId", "title", "updatedAt", "userId" ], "type": "object" }, "BillingHistoryPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/BillingHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "BinarySchema": { "type": "object" }, "BoxItem": { "description": "box item", "properties": { "count": { "description": "count", "format": "int32", "type": "integer" }, "duration": { "description": "box item will be expired after this duration (in seconds). Only available for OptionBox. Supported item type(s): COINS", "format": "int32", "type": "integer" }, "endDate": { "description": "box item will be expired after this time. Only available for OptionBox. Supported item type(s): COINS", "format": "date-time", "type": "string", "x-nullable": true }, "itemId": { "description": "item id", "type": "string" }, "itemSku": { "description": "item sku", "type": "string" }, "itemType": { "description": "item type", "type": "string" } }, "type": "object" }, "BulkCreditRequest": { "properties": { "creditRequest": { "$ref": "#/definitions/CreditRequest" }, "currencyCode": { "type": "string" }, "userIds": { "items": { "type": "string" }, "type": "array", "uniqueItems": true } }, "type": "object" }, "BulkCreditResult": { "properties": { "failList": { "items": { "$ref": "#/definitions/CreditResult" }, "type": "array" }, "status": { "enum": [ "FAIL", "PARTIAL_SUCCESS", "SUCCESS" ], "type": "string" }, "successList": { "items": { "$ref": "#/definitions/CreditResult" }, "type": "array" } }, "type": "object" }, "BulkDebitRequest": { "properties": { "currencyCode": { "type": "string" }, "request": { "$ref": "#/definitions/DebitByCurrencyCodeRequest" }, "userIds": { "items": { "type": "string" }, "type": "array", "uniqueItems": true } }, "type": "object" }, "BulkDebitResult": { "properties": { "failList": { "items": { "$ref": "#/definitions/DebitResult" }, "type": "array" }, "status": { "enum": [ "FAIL", "PARTIAL_SUCCESS", "SUCCESS" ], "type": "string" }, "successList": { "items": { "$ref": "#/definitions/DebitResult" }, "type": "array" } }, "type": "object" }, "BulkEntitlementGrantRequest": { "description": "A DTO object for granting entitlement in bulk", "properties": { "entitlementGrantList": { "items": { "$ref": "#/definitions/EntitlementGrant" }, "type": "array" }, "userIds": { "items": { "type": "string" }, "type": "array", "uniqueItems": true } }, "type": "object" }, "BulkEntitlementGrantResult": { "properties": { "failList": { "items": { "$ref": "#/definitions/EntitlementGrantResult" }, "type": "array" }, "status": { "enum": [ "FAIL", "PARTIAL_SUCCESS", "SUCCESS" ], "type": "string" }, "successList": { "items": { "$ref": "#/definitions/EntitlementGrantResult" }, "type": "array" } }, "type": "object" }, "BulkEntitlementRevokeResult": { "properties": { "failList": { "items": { "$ref": "#/definitions/EntitlementRevokeResult" }, "type": "array" }, "status": { "enum": [ "FAIL", "PARTIAL_SUCCESS", "SUCCESS" ], "type": "string" }, "successList": { "items": { "$ref": "#/definitions/EntitlementRevokeResult" }, "type": "array" } }, "type": "object" }, "BulkOperationResult": { "properties": { "affected": { "format": "int32", "type": "integer" } }, "type": "object" }, "BulkRegionDataChangeRequest": { "properties": { "changes": { "items": { "$ref": "#/definitions/RegionDataChange" }, "type": "array" } }, "type": "object" }, "BundledItemInfo": { "properties": { "appId": { "description": "App id, required when itemType is APP", "type": "string" }, "appType": { "description": "App type, required when itemType is APP", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "Base app id", "type": "string" }, "boothName": { "description": "booth name to get tickets while it's item type is CODE", "type": "string" }, "boundItemIds": { "description": "the items which this item being bounded to", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "bundledQty": { "format": "int32", "type": "integer" }, "categoryPath": { "description": "Item category path", "type": "string" }, "clazz": { "description": "customized item clazz", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "description": { "description": "description info", "type": "string" }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "entitlementType": { "description": "Entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "ext": { "additionalProperties": { "type": "object" }, "description": "customized item properties", "type": "object" }, "features": { "description": "Features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "flexible": { "description": "whether flexible pricing applied, only applied if itemType is BUNDLE", "type": "boolean", "x-omitempty": false }, "fresh": { "description": "fresh", "type": "boolean", "x-omitempty": false }, "images": { "description": "images", "items": { "$ref": "#/definitions/Image" }, "type": "array" }, "inventoryConfig": { "$ref": "#/definitions/InventoryConfig", "description": "inventory config" }, "itemId": { "description": "Item id", "type": "string" }, "itemIds": { "description": "itemIds, should be empty if item type is not \"BUNDLE\"", "items": { "type": "string" }, "type": "array" }, "itemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "itemQty, the quantity of item in itemIds, default 1, should be empty if item type is not \"BUNDLE\"", "type": "object" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "language": { "description": "language", "type": "string" }, "listable": { "description": "Whether can be visible in Store for public user", "type": "boolean", "x-omitempty": false }, "localExt": { "additionalProperties": { "type": "object" }, "type": "object" }, "longDescription": { "description": "long description info", "type": "string" }, "lootBoxConfig": { "$ref": "#/definitions/LootBoxConfig", "description": "loot box config" }, "maxCount": { "description": "Max count, -1 means UNLIMITED, unset when itemType is CODE", "format": "int32", "type": "integer" }, "maxCountPerUser": { "description": "Max count per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "Name", "type": "string" }, "namespace": { "description": "Item namespace", "type": "string" }, "optionBoxConfig": { "$ref": "#/definitions/OptionBoxConfig", "description": "option box config" }, "purchasable": { "description": "Whether can be purchased", "type": "boolean", "x-omitempty": false }, "purchaseCondition": { "$ref": "#/definitions/PurchaseCondition", "description": "purchase condition" }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring for subscription" }, "region": { "description": "region", "type": "string" }, "regionData": { "description": "Region data", "items": { "$ref": "#/definitions/RegionDataItem" }, "type": "array" }, "saleConfig": { "$ref": "#/definitions/SaleConfig", "description": "sale config" }, "seasonType": { "description": "Season type, required while itemType is SEASON", "enum": [ "PASS", "TIER" ], "type": "string" }, "sectionExclusive": { "description": "whether it is sold in section only", "type": "boolean", "x-omitempty": false }, "sellable": { "description": "whether allow to sell back to store", "type": "boolean", "x-omitempty": false }, "sku": { "description": "Sku", "type": "string" }, "stackable": { "description": "Whether stack the CONSUMABLE entitlement", "type": "boolean", "x-omitempty": false }, "status": { "description": "Item status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "Tags", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "targetCurrencyCode": { "description": "Target currency code of coin item", "type": "string" }, "targetItemId": { "description": "[Going to deprecate]Target item id if this item is mapping from game namespace.", "type": "string" }, "targetNamespace": { "description": "The target namespace of a cross namespace item", "type": "string" }, "thumbnailUrl": { "description": "thumbnail url", "type": "string" }, "title": { "description": "title info", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "Item use count, required when entitlement type is consumable or itemType is COINS", "format": "int32", "type": "integer" } }, "required": [ "categoryPath", "createdAt", "entitlementType", "itemId", "itemType", "language", "name", "namespace", "region", "status", "title", "updatedAt" ], "type": "object" }, "CampaignBatchNameChange": { "description": "A DTO object for changing campaign batch name.", "properties": { "newName": { "description": "new batch name, can contain special character, should not start or end with whitespaces, min. 3, max. 60 characters", "type": "string" }, "oldName": { "description": "old batch name", "type": "string" } }, "type": "object" }, "CampaignBatchNameInfo": { "properties": { "batchName": { "description": "batch name", "type": "string" }, "batchNos": { "description": "list of batch numbers", "items": { "format": "int32", "type": "integer" }, "type": "array" } }, "required": [ "batchName", "batchNos" ], "type": "object" }, "CampaignCreate": { "description": "A DTO object for creating campaign API call.", "properties": { "description": { "description": "The description of the campaign, max length is 1024 characters", "type": "string" }, "discountConfig": { "$ref": "#/definitions/DiscountConfig", "description": "Discount Config" }, "items": { "description": "Redeemable items", "items": { "$ref": "#/definitions/RedeemableItem" }, "type": "array" }, "maxRedeemCountPerCampaignPerUser": { "description": "The maximum redeem count per campaign per user, must equal or greater than -1, -1 means UNLIMITED, default is 1", "format": "int32", "type": "integer" }, "maxRedeemCountPerCode": { "description": "The maximum redeem count per code, must equal or greater than -1, -1 means UNLIMITED, default is 1", "format": "int32", "type": "integer" }, "maxRedeemCountPerCodePerUser": { "description": "The maximum redeem count per code per user, must equal or greater than -1, -1 means UNLIMITED, default is 1", "format": "int32", "type": "integer" }, "maxSaleCount": { "description": "Max sale count, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "The name of the campaign, it should starts and ends with alphabets uppercase/lowercase or numeric\nAllowed separators ',.- and white-space, max length is 48", "type": "string" }, "redeemEnd": { "description": "redeem end time in yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "format": "date-time", "type": "string", "x-nullable": true }, "redeemStart": { "description": "redeem start time in yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "format": "date-time", "type": "string", "x-nullable": true }, "redeemType": { "description": "Redeem Type. Allowed values: ITEM. ITEM for default", "enum": [ "DISCOUNT", "ITEM" ], "type": "string" }, "status": { "description": "The status of the campaign, default ACTIVE", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "The tags of the campaign", "items": { "type": "string" }, "type": "array" }, "type": { "description": "Campaign type. Allowed values: REDEMPTION. REDEMPTION for default", "enum": [ "REDEMPTION" ], "type": "string" } }, "required": [ "name" ], "type": "object" }, "CampaignDynamicInfo": { "properties": { "availableSaleCount": { "description": "The available sale count, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "lastBatchNo": { "description": "The batch number marks the manually code generation", "format": "int32", "type": "integer" }, "quantity": { "description": "The total quantity of this campaign has", "format": "int32", "type": "integer" }, "remainder": { "description": "The remainder quantity of codes not been redeemed out", "format": "int32", "type": "integer" }, "saleCount": { "description": "The sale count", "format": "int32", "type": "integer" } }, "required": [ "availableSaleCount", "lastBatchNo", "quantity", "remainder", "saleCount" ], "type": "object" }, "CampaignIfc": { "properties": { "id": { "type": "string" }, "items": { "items": { "$ref": "#/definitions/RedeemableItem" }, "type": "array" }, "name": { "type": "string" }, "namespace": { "type": "string" } }, "type": "object" }, "CampaignInfo": { "properties": { "boothName": { "description": "booth name", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "description": { "description": "campaign description", "type": "string" }, "discountConfig": { "$ref": "#/definitions/DiscountConfig", "description": "discount config" }, "id": { "description": "campaign id", "type": "string" }, "items": { "description": "redeem items", "items": { "$ref": "#/definitions/RedeemableItem" }, "type": "array" }, "maxRedeemCountPerCampaignPerUser": { "description": "The maximum redeem count of a campaign per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "maxRedeemCountPerCode": { "description": "The maximum redeem count of a code, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "maxRedeemCountPerCodePerUser": { "description": "The maximum redeem count of a code per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "maxSaleCount": { "description": "The maximum sale count, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "campaign name", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "redeemEnd": { "description": "redeem end", "format": "date-time", "type": "string", "x-nullable": true }, "redeemStart": { "description": "redeem start", "format": "date-time", "type": "string", "x-nullable": true }, "redeemType": { "description": "redeem type", "enum": [ "DISCOUNT", "ITEM" ], "type": "string" }, "status": { "description": "campaign status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "campaign tags", "items": { "type": "string" }, "type": "array" }, "type": { "description": "campaign type", "enum": [ "REDEMPTION" ], "type": "string" }, "updatedAt": { "description": "update at", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "boothName", "createdAt", "id", "maxRedeemCountPerCampaignPerUser", "maxRedeemCountPerCode", "maxRedeemCountPerCodePerUser", "maxSaleCount", "name", "namespace", "redeemType", "status", "type", "updatedAt" ], "type": "object" }, "CampaignPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/CampaignInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "CampaignUpdate": { "description": "A DTO object for updating campaign API call.", "properties": { "description": { "description": "The description of the campaign, max length is 1024 characters", "type": "string" }, "discountConfig": { "$ref": "#/definitions/DiscountConfig", "description": "Discount Config" }, "items": { "description": "Redeemable Items", "items": { "$ref": "#/definitions/RedeemableItem" }, "type": "array" }, "maxRedeemCountPerCampaignPerUser": { "description": "The maximum redeem count per campaign per user, must equal or greater than -1, -1 means UNLIMITED, default is 1", "format": "int32", "type": "integer" }, "maxRedeemCountPerCode": { "description": "The maximum redeems count per code, must equal or greater than -1, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "maxRedeemCountPerCodePerUser": { "description": "The maximum redeem count per code per user, must equal or greater than -1, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "maxSaleCount": { "description": "Max sale count, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "The name of the campaign, it should starts and ends with alphabets uppercase/lowercase or numeric\nAllowed separators ',.- and white-space, max length is 48", "type": "string" }, "redeemEnd": { "description": "redeem end time in yyyy-MM-dd'T'HH:mm:ss.SSS'Z', will delete this value if pass null or not pass this field", "format": "date-time", "type": "string", "x-nullable": true }, "redeemStart": { "description": "redeem start time in yyyy-MM-dd'T'HH:mm:ss.SSS'Z', will delete this value if pass null or not pass this field", "format": "date-time", "type": "string", "x-nullable": true }, "redeemType": { "description": "Redeem Type. Allowed values: ITEM", "enum": [ "DISCOUNT", "ITEM" ], "type": "string" }, "status": { "description": "The status of the campaign", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "The tags of the campaign", "items": { "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" }, "CancelRequest": { "properties": { "immediate": { "description": "immediate, default false", "type": "boolean", "x-omitempty": false }, "reason": { "description": "cancel reason", "type": "string" } }, "type": "object" }, "CatalogChangeInfo": { "properties": { "action": { "description": "change action", "enum": [ "CREATE", "DELETE", "UPDATE" ], "type": "string" }, "categoryPath": { "description": "category path id type Category", "type": "string" }, "changeId": { "description": "change id", "type": "string" }, "createdAt": { "description": "created time", "format": "date-time", "type": "string", "x-nullable": false }, "description": { "description": "a description if this change is not directly caused by user action. eg: bundle item", "type": "string" }, "itemId": { "description": "item id", "type": "string" }, "itemType": { "description": "item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "publishedAt": { "description": "publish time", "format": "date-time", "type": "string", "x-nullable": true }, "sectionId": { "description": "section id, only exists when change type is section", "type": "string" }, "selected": { "description": "if it is selected for partial publish", "type": "boolean", "x-omitempty": false }, "sku": { "description": "item sku", "type": "string" }, "status": { "description": "change status", "enum": [ "PUBLISHED", "UNPUBLISHED" ], "type": "string" }, "storeId": { "description": "store id", "type": "string" }, "title": { "description": "store title or item's name", "type": "string" }, "type": { "description": "change type", "enum": [ "CATEGORY", "ITEM", "SECTION", "STORE", "VIEW" ], "type": "string" }, "updatedAt": { "description": "updated time", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id, only exists when change type is view", "type": "string" } }, "required": [ "action", "changeId", "createdAt", "namespace", "selected", "status", "storeId", "updatedAt" ], "type": "object" }, "CatalogChangePagingResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/CatalogChangeInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" }, "total": { "format": "int64", "type": "integer" } }, "required": [ "data" ], "type": "object" }, "CatalogChangeStatistics": { "properties": { "count": { "description": "all change count", "format": "int64", "type": "integer" }, "selectedCount": { "description": "selected change count", "format": "int64", "type": "integer" } }, "required": [ "count", "selectedCount" ], "type": "object" }, "CatalogConfigInfo": { "properties": { "enableInventoryCheck": { "description": "enable inventory check", "type": "boolean", "x-omitempty": false }, "itemDeletionCheckConfig": { "description": "item deletion check configuration", "items": { "enum": [ "CAMPAIGN", "CATALOG", "DLC", "ENTITLEMENT", "IAP", "REWARD" ], "type": "string" }, "type": "array", "uniqueItems": true } }, "required": [ "enableInventoryCheck" ], "type": "object" }, "CatalogConfigUpdate": { "properties": { "enableInventoryCheck": { "description": "enable inventory check", "type": "boolean", "x-omitempty": false }, "itemDeletionCheckConfig": { "description": "item deletion check configuration", "items": { "enum": [ "CAMPAIGN", "CATALOG", "DLC", "ENTITLEMENT", "IAP", "REWARD" ], "type": "string" }, "type": "array", "uniqueItems": true } }, "required": [ "enableInventoryCheck" ], "type": "object" }, "CatalogDefinitionInfo": { "properties": { "field": { "description": "actual field name", "type": "string" }, "itemType": { "description": "item type, not empty if requesting item and the field is for a specified item type only", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "name": { "description": "field name", "type": "string" }, "required": { "description": "whether this is a mandatory field", "type": "boolean", "x-omitempty": false } }, "required": [ "field", "name", "required" ], "type": "object" }, "CategoryCreate": { "description": "A DTO object for creating category API call.", "properties": { "categoryPath": { "description": "Category Path, A path separated by \"/\", start with \"/\" and end with combination of case of letters, numbers and hyphens, max length is 255, min length is 2", "example": "/games", "type": "string" }, "localizationDisplayNames": { "additionalProperties": { "type": "string" }, "description": "Display name, key is language, value is display name, value max length is 255", "type": "object" } }, "required": [ "categoryPath", "localizationDisplayNames" ], "type": "object" }, "CategoryInfo": { "properties": { "categoryPath": { "description": "Category path", "type": "string" }, "createdAt": { "description": "Category created time", "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "description": "Category display name", "type": "string" }, "namespace": { "description": "Category namespace", "type": "string" }, "parentCategoryPath": { "description": "Parent category path", "type": "string" }, "root": { "type": "boolean", "x-omitempty": false }, "updatedAt": { "description": "Category updated time", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "categoryPath", "createdAt", "displayName", "namespace", "parentCategoryPath", "updatedAt" ], "type": "object" }, "CategoryUpdate": { "description": "A DTO object for updating category API call.", "properties": { "localizationDisplayNames": { "additionalProperties": { "type": "string" }, "description": "Display name, key is language, value is display name, value max length is 255", "type": "object" } }, "required": [ "localizationDisplayNames" ], "type": "object" }, "ChangeStatusItemRequest": { "properties": { "featuresToCheck": { "description": "feature reference to check", "items": { "enum": [ "CAMPAIGN", "CATALOG", "DLC", "ENTITLEMENT", "IAP", "REWARD" ], "type": "string" }, "type": "array", "uniqueItems": true } }, "type": "object" }, "CheckoutConfig": { "description": "A DTO object for updating checkout.com config.", "properties": { "publicKey": { "description": "public key, max length is 4096", "type": "string" }, "secretKey": { "description": "secret key, max length is 4096", "type": "string" } }, "type": "object" }, "ClawbackInfo": { "properties": { "createdAt": { "description": "created at time", "format": "date-time", "type": "string", "x-nullable": true }, "dryRun": { "description": "Whether or not test event", "type": "boolean", "x-omitempty": false }, "eventContent": { "description": "Source event content", "type": "object" }, "eventId": { "description": "third-party Event id / notification id", "type": "string" }, "eventType": { "description": "Event type", "type": "string" }, "externalOrderId": { "description": "third-party order id", "type": "string" }, "feedbackContent": { "description": "Feedback Content to third-party platform", "type": "object" }, "feedbackStatus": { "description": "Feedback status", "enum": [ "FAIL", "INIT", "SUCCESS" ], "type": "string" }, "feedbackStatusReason": { "description": "Feedback status reason", "type": "string" }, "id": { "description": "id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "platform": { "description": "third party platform name, currently only support PLAYSTATION", "type": "string" }, "processId": { "description": "processId is fulfillment history id if event type is CHARGEBACK REVERSAL, and processId is revocation history id if event type is CHARGEBACK/REFUND", "type": "string" }, "status": { "description": "Process status", "enum": [ "FAIL", "IGNORED", "INIT", "SUCCESS" ], "type": "string" }, "statusReason": { "description": "Process status reason", "type": "string" }, "updatedAt": { "description": "updated at time", "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "description": "AGS user id", "type": "string" } }, "required": [ "id", "namespace" ], "type": "object" }, "ClientRequestParameter": { "properties": { "currencyCode": { "type": "string" }, "language": { "type": "string" }, "price": { "format": "double", "type": "number" }, "region": { "type": "string" } }, "type": "object" }, "ClientTransaction": { "properties": { "amountConsumed": { "format": "int32", "type": "integer" }, "clientTransactionId": { "type": "string" } }, "type": "object" }, "CodeCreate": { "description": "A DTO object for creating codes API call.", "properties": { "batchName": { "description": "batch name, can contain special character, should not start or end with whitespaces, min. 3, max. 60 characters", "type": "string" }, "codeValue": { "description": "custom code value, allowed characters alpha numeric with length range from 6 to 20, only generate one custom code value if this codeValue is not null", "type": "string" }, "quantity": { "description": "The quantity of codes to generate when not set custom code value.", "format": "int32", "type": "integer" } }, "type": "object" }, "CodeCreateResult": { "properties": { "numCreated": { "description": "number created", "format": "int32", "type": "integer" } }, "required": [ "numCreated" ], "type": "object" }, "CodeInfo": { "properties": { "acquireOrderNo": { "description": "order No. that grant this code", "type": "string" }, "acquireUserId": { "description": "user Id who get this code", "type": "string" }, "batchName": { "description": "batch name", "type": "string" }, "batchNo": { "description": "batch No.", "format": "int32", "type": "integer" }, "campaign": { "$ref": "#/definitions/CampaignIfc", "description": "Campaign short info" }, "campaignId": { "description": "campaign id", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "discountConfig": { "$ref": "#/definitions/DiscountConfig", "description": "discount config" }, "id": { "description": "code id", "type": "string" }, "items": { "description": "redeem items", "items": { "$ref": "#/definitions/RedeemableItem" }, "type": "array" }, "maxRedeemCountPerCampaignPerUser": { "description": "The maximum redeem count of a campaign per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "maxRedeemCountPerCode": { "description": "The maximum redeem count of a code, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "maxRedeemCountPerCodePerUser": { "description": "The maximum redeem count of a code per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "namespace": { "description": "namespace", "type": "string" }, "redeemEnd": { "description": "redeem end", "format": "date-time", "type": "string", "x-nullable": true }, "redeemStart": { "description": "redeem start", "format": "date-time", "type": "string", "x-nullable": true }, "redeemType": { "description": "redeem type", "enum": [ "DISCOUNT", "ITEM" ], "type": "string" }, "redeemedCount": { "description": "The total count of this code has been redeemed", "format": "int32", "type": "integer" }, "remainder": { "description": "Redemption remainder, -1 means unlimited", "format": "int32", "type": "integer" }, "status": { "description": "code status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "type": { "description": "campaign type", "enum": [ "REDEMPTION" ], "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "value": { "description": "code value", "type": "string" } }, "required": [ "batchNo", "campaignId", "createdAt", "id", "maxRedeemCountPerCampaignPerUser", "maxRedeemCountPerCode", "maxRedeemCountPerCodePerUser", "namespace", "redeemType", "redeemedCount", "remainder", "status", "type", "updatedAt", "value" ], "type": "object" }, "CodeInfoPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/CodeInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "ConditionGroup": { "properties": { "operator": { "description": "predicate operator, default is and", "enum": [ "and", "or" ], "type": "string" }, "predicates": { "description": "predicate list", "items": { "$ref": "#/definitions/Predicate" }, "type": "array" } }, "type": "object" }, "ConditionGroupValidateResult": { "properties": { "predicateValidateResults": { "description": "predicate validate details, list of predicate validate results", "items": { "$ref": "#/definitions/PredicateValidateResult" }, "type": "array" } }, "type": "object" }, "ConditionMatchResult": { "properties": { "matched": { "type": "boolean", "x-omitempty": false }, "matchedConditions": { "items": { "type": "object" }, "type": "array" }, "notMatchReason": { "type": "string" } }, "type": "object" }, "ConsumableEntitlementRevocationConfig": { "properties": { "enabled": { "description": "will do revocation if enabled, otherwise will skip do revocation.", "type": "boolean", "x-omitempty": false }, "strategy": { "description": "consumable entitlement revocation strategy", "enum": [ "CUSTOM", "REVOKE_OR_REPORT" ], "type": "string" } }, "type": "object" }, "ConsumeItem": { "properties": { "extItemDefId": { "description": "third party item sku or def", "type": "string" }, "extItemId": { "description": "third party item/entitlement id", "type": "string" }, "itemIdentity": { "description": "AB item identity", "type": "string" }, "itemIdentityType": { "description": "AB item identity type", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" } }, "type": "object" }, "CreditPayload": { "properties": { "balanceOrigin": { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "count": { "format": "int64", "type": "integer" }, "currencyCode": { "type": "string" }, "expireAt": { "format": "date-time", "type": "string", "x-nullable": true } }, "required": [ "count", "currencyCode" ], "type": "object" }, "CreditRequest": { "description": "A DTO for wallet's credit", "properties": { "amount": { "description": "amount", "format": "int64", "minimum": 1, "type": "integer" }, "expireAt": { "description": "this amount expire time, using ISO 8601 format e.g. yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "format": "date-time", "type": "string", "x-nullable": true }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata for additional information", "type": "object" }, "origin": { "description": "origin, balance origin decided on the type of wallet, default is System", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "reason": { "description": "reason, max length is 127", "type": "string" }, "source": { "description": "source, default is OTHER", "enum": [ "ACHIEVEMENT", "CONSUME_ENTITLEMENT", "DLC", "GIFT", "IAP", "IAP_CHARGEBACK_REVERSED", "OTHER", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REFUND", "REWARD", "SELL_BACK", "TRADE" ], "type": "string" } }, "required": [ "amount" ], "type": "object" }, "CreditResult": { "properties": { "creditRequest": { "$ref": "#/definitions/CreditRequest" }, "currencyCode": { "type": "string" }, "reason": { "type": "string" }, "userId": { "type": "string" } }, "type": "object" }, "CreditRevocation": { "properties": { "amount": { "format": "int64", "type": "integer" }, "balanceOrigin": { "type": "string" }, "currencyCode": { "type": "string" }, "customRevocation": { "type": "object" }, "reason": { "type": "string" }, "revocationStrategy": { "type": "string" }, "skipped": { "type": "boolean", "x-omitempty": false }, "status": { "enum": [ "FAIL", "SUCCESS" ], "type": "string" }, "walletId": { "type": "string" } }, "type": "object" }, "CreditSummary": { "properties": { "amount": { "description": "amount", "format": "int64", "type": "integer" }, "currencyCode": { "description": "currency code", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "userId": { "description": "user id", "type": "string" }, "walletId": { "description": "wallet id", "type": "string" } }, "required": [ "amount", "namespace", "userId", "walletId" ], "type": "object" }, "CurrencyConfig": { "description": "currency config", "properties": { "currencySymbol": { "description": "currency symbol", "type": "string" } }, "required": [ "currencySymbol" ], "type": "object" }, "CurrencyCreate": { "description": "A DTO for creating currency", "properties": { "currencyCode": { "description": "currency code, accept alphabet uppercase, number, underscore and dash, must starts with alphabet uppercase and end with alphabet uppercase or numeric", "type": "string" }, "currencySymbol": { "description": "currency symbol, max length is 8", "type": "string" }, "currencyType": { "enum": [ "REAL", "VIRTUAL" ], "type": "string" }, "decimals": { "description": "decimals, commonly set 2 if real currency or 0 if virtual currency", "format": "int32", "type": "integer", "x-omitempty": false }, "localizationDescriptions": { "additionalProperties": { "type": "string" }, "description": "Description, key is language, value is description max length is 255", "type": "object" } }, "required": [ "currencyCode" ], "type": "object" }, "CurrencyInfo": { "properties": { "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "currencyCode": { "description": "currency code, accept alphabet uppercase and number, must start with alphabet uppercase", "type": "string" }, "currencySymbol": { "description": "currency symbol, max length is 8", "type": "string" }, "currencyType": { "description": "currency type", "enum": [ "REAL", "VIRTUAL" ], "type": "string" }, "decimals": { "description": "decimals", "format": "int32", "type": "integer" }, "localizationDescriptions": { "additionalProperties": { "type": "string" }, "description": "Description, key is language, value is description max length is 255", "type": "object" }, "namespace": { "description": "namespace", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "createdAt", "currencyCode", "currencySymbol", "currencyType", "decimals", "namespace", "updatedAt" ], "type": "object" }, "CurrencySummary": { "properties": { "currencyCode": { "description": "currency code, accept alphabet uppercase and number, must start with alphabet uppercase", "type": "string" }, "currencySymbol": { "description": "currency symbol, max length is 8", "type": "string" }, "currencyType": { "description": "currency type", "enum": [ "REAL", "VIRTUAL" ], "type": "string" }, "decimals": { "description": "decimals", "format": "int32", "type": "integer" }, "namespace": { "description": "namespace", "type": "string" } }, "required": [ "currencyCode", "currencySymbol", "currencyType", "decimals", "namespace" ], "type": "object" }, "CurrencyUpdate": { "description": "A DTO for update currency", "properties": { "localizationDescriptions": { "additionalProperties": { "type": "string" }, "description": "Description, key is language, value is description max length is 255", "type": "object" } }, "type": "object" }, "CurrencyWallet": { "properties": { "balance": { "description": "total balance, include time-limited balance", "format": "int64", "type": "integer" }, "currencyCode": { "description": "currency code", "type": "string" }, "currencySymbol": { "description": "currency symbol", "type": "string" }, "namespace": { "description": "wallet namespace", "type": "string" }, "totalPermanentBalance": { "description": "total permanent balance", "format": "int64", "type": "integer" }, "totalTimeLimitedBalance": { "description": "total time limited balance", "format": "int64", "type": "integer" }, "userId": { "description": "user id", "type": "string" }, "walletInfos": { "description": "wallets balances info", "items": { "$ref": "#/definitions/WalletInfo" }, "type": "array" } }, "required": [ "balance", "currencyCode", "currencySymbol", "namespace", "userId" ], "type": "object" }, "Customization": { "properties": { "settings": { "description": "settings", "type": "string" } }, "type": "object" }, "DLCConfigRewardShortInfo": { "properties": { "data": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "reward map, key is third-party platform DLC id, value is specific item sets", "type": "object" }, "dlcType": { "description": "dlc type", "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "type": "string" } }, "type": "object" }, "DLCItem": { "properties": { "autoUpdate": { "description": "auto update entitlement when dlc has an update, will be set as false when not included in the request", "type": "boolean", "x-omitempty": false }, "enableRevocation": { "description": "enable or disable revocation when autoUpdate enabled, will be set as false when not included in the request", "type": "boolean", "x-omitempty": false }, "id": { "description": "dlc id", "type": "string" }, "rewards": { "description": "reward list", "items": { "$ref": "#/definitions/PlatformReward" }, "type": "array" }, "rvn": { "format": "int32", "type": "integer" } }, "type": "object" }, "DLCItemConfigHistoryInfo": { "properties": { "autoUpdate": { "type": "boolean", "x-omitempty": false }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "dlcId": { "type": "string" }, "enableRevocation": { "type": "boolean", "x-omitempty": false }, "id": { "type": "string" }, "namespace": { "type": "string" }, "rewards": { "items": { "$ref": "#/definitions/PlatformReward" }, "type": "array" }, "rvn": { "format": "int32", "type": "integer" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true } }, "type": "object" }, "DLCItemConfigHistoryResult": { "properties": { "data": { "items": { "$ref": "#/definitions/DLCItemConfigHistoryInfo" }, "type": "array" } }, "type": "object" }, "DLCItemConfigInfo": { "properties": { "data": { "items": { "$ref": "#/definitions/DLCItem" }, "type": "array" } }, "type": "object" }, "DLCItemConfigUpdate": { "properties": { "data": { "items": { "$ref": "#/definitions/DLCItem" }, "type": "array" } }, "type": "object" }, "DLCRecord": { "properties": { "dlcRewardVersion": { "format": "int32", "type": "integer" }, "entitlementOriginSyncResult": { "items": { "$ref": "#/definitions/EntitlementOriginSyncResult" }, "type": "array" }, "entitlementOriginSyncStatus": { "enum": [ "NOT_SYNCED", "SYNCED", "SYNCED_FAILED" ], "type": "string" }, "entitlementSummaries": { "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "type": "object" }, "obtainedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "revocationResult": { "$ref": "#/definitions/RevocationResult" }, "revokeResults": { "items": { "$ref": "#/definitions/RevokeResult" }, "type": "array" }, "revokedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "rewards": { "items": { "$ref": "#/definitions/PlatformReward" }, "type": "array" }, "sources": { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "status": { "enum": [ "FULFILLED", "REVOKED", "REVOKE_FAILED" ], "type": "string" }, "transactionId": { "type": "string" }, "version": { "format": "int32", "type": "integer" } }, "type": "object" }, "DebitByCurrencyCodeRequest": { "description": "A DTO for wallet's debit", "properties": { "allowOverdraft": { "description": "allow to debit wallet balance to negative value", "type": "boolean", "x-omitempty": false }, "amount": { "description": "amount", "format": "int64", "minimum": 1, "type": "integer" }, "balanceOrigin": { "description": "balance origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "balanceSource": { "description": "balance source, default is OTHER", "enum": [ "DLC_REVOCATION", "EXPIRATION", "IAP_REVOCATION", "ORDER_REVOCATION", "OTHER", "PAYMENT", "TRADE" ], "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata for additional wallet transaction detail", "type": "object" }, "reason": { "description": "reason", "type": "string" } }, "required": [ "amount" ], "type": "object" }, "DebitByWalletPlatformRequest": { "properties": { "amount": { "description": "amount", "format": "int64", "minimum": 1, "type": "integer" }, "debitBalanceSource": { "description": "debitBalanceSource, default is OTHER", "enum": [ "DLC_REVOCATION", "EXPIRATION", "IAP_REVOCATION", "ORDER_REVOCATION", "OTHER", "PAYMENT", "TRADE" ], "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata for additional wallet transaction detail", "type": "object" }, "reason": { "description": "reason", "type": "string" }, "walletPlatform": { "description": "walletPlatform source, default is OTHER", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "type": "string" } }, "required": [ "amount" ], "type": "object" }, "DebitPayload": { "properties": { "count": { "format": "int64", "type": "integer" }, "currencyCode": { "type": "string" }, "walletPlatform": { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "type": "string" } }, "required": [ "count", "currencyCode", "walletPlatform" ], "type": "object" }, "DebitRequest": { "description": "A DTO for wallet's debit", "properties": { "amount": { "description": "amount", "format": "int64", "minimum": 1, "type": "integer" }, "balanceSource": { "description": "balance source, default is OTHER", "enum": [ "DLC_REVOCATION", "EXPIRATION", "IAP_REVOCATION", "ORDER_REVOCATION", "OTHER", "PAYMENT", "TRADE" ], "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata for additional wallet transaction detail", "type": "object" }, "reason": { "description": "reason", "type": "string" } }, "required": [ "amount" ], "type": "object" }, "DebitResult": { "properties": { "currencyCode": { "type": "string" }, "reason": { "type": "string" }, "request": { "$ref": "#/definitions/DebitByCurrencyCodeRequest" }, "userId": { "type": "string" } }, "type": "object" }, "DeductionDetail": { "properties": { "deductionType": { "description": "Deduction type, currently only support discount code", "enum": [ "DISCOUNT_CODE", "PAYMENT_DISCOUNT_CODE" ], "type": "string" }, "discountCodeDeductionDetail": { "$ref": "#/definitions/DiscountCodeDeductionDetail", "description": "Discount code deduction details" }, "discountProviderName": { "description": "Discount provider name", "type": "string" } }, "type": "object" }, "DeleteRewardConditionRequest": { "properties": { "conditionName": { "type": "string" }, "userId": { "type": "string" } }, "type": "object" }, "DetailedWalletTransactionInfo": { "properties": { "amount": { "description": "Transaction amount, it is absolute value.", "format": "int64", "type": "integer" }, "balanceSource": { "description": "The source of credit", "type": "string" }, "createdAt": { "description": "Transaction created time", "format": "date-time", "type": "string", "x-nullable": false }, "currencyCode": { "description": "Transaction currency code", "type": "string" }, "namespace": { "description": "Wallet namespace", "type": "string" }, "operator": { "description": "Operator userId or ClientId", "type": "string" }, "reason": { "description": "Reason of the transaction", "type": "string" }, "updatedAt": { "description": "Transaction updated time", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "Wallet owner's userId", "type": "string" }, "walletAction": { "description": "Action type, remove expired limited time balance will not have wallet action.", "enum": [ "CREDIT", "DEBIT", "PAYMENT" ], "type": "string" }, "walletId": { "description": "wallet id", "type": "string" } }, "required": [ "amount", "createdAt", "currencyCode", "namespace", "operator", "updatedAt", "userId", "walletId" ], "type": "object" }, "DetailedWalletTransactionPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/DetailedWalletTransactionInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "DiscountCategory": { "properties": { "categoryPath": { "description": "The discount category path", "type": "string" }, "includeSubCategories": { "description": "Whether include sub categories, default is false", "type": "boolean", "x-omitempty": false } }, "required": [ "categoryPath" ], "type": "object" }, "DiscountCodeDeductionDetail": { "properties": { "discountAmountCodes": { "description": "used discount amount codes", "items": { "$ref": "#/definitions/DiscountCodeInfo" }, "type": "array" }, "discountPercentageCodes": { "description": "used discount percentage codes", "items": { "$ref": "#/definitions/DiscountCodeInfo" }, "type": "array" }, "totalAmountDeduction": { "description": "total deduction by amount", "format": "int32", "type": "integer" }, "totalDeduction": { "description": "total deduction", "format": "int32", "type": "integer" }, "totalPercentageDeduction": { "description": "total deduction by percentage", "format": "int32", "type": "integer" } }, "type": "object" }, "DiscountCodeInfo": { "properties": { "campaignId": { "description": "Campaign id", "type": "string" }, "campaignName": { "description": "Campaign name", "type": "string" }, "code": { "description": "Code value.", "type": "string" }, "deduction": { "description": "actual deduction", "format": "int32", "type": "integer" }, "discountConfig": { "$ref": "#/definitions/DiscountConfig", "description": "Discount config" } }, "type": "object" }, "DiscountConfig": { "properties": { "categories": { "description": "applicable category path, it will be ignored if restrictType is None.", "items": { "$ref": "#/definitions/DiscountCategory" }, "type": "array" }, "currencyCode": { "description": "currency code", "type": "string" }, "currencyNamespace": { "description": "currency namespace", "type": "string" }, "discountAmount": { "description": "discount percentage", "format": "int32", "type": "integer" }, "discountPercentage": { "description": "discount percentage", "format": "int32", "type": "integer" }, "discountType": { "description": "discount type", "enum": [ "AMOUNT", "PERCENTAGE" ], "type": "string" }, "items": { "description": "applicable items, it will be ignored if restrictType is None.", "items": { "$ref": "#/definitions/DiscountItem" }, "type": "array" }, "restrictType": { "description": "restrict type, default is no restrict", "enum": [ "ITEMS_AND_CATEGORIES", "NONE" ], "type": "string" }, "stackable": { "description": "stackable, whether can it be used in combination with other discount code, default is false.", "type": "boolean", "x-omitempty": false } }, "type": "object" }, "DiscountItem": { "properties": { "itemId": { "description": "The discount item id", "type": "string" }, "itemName": { "description": "The discount item name", "type": "string" } }, "required": [ "itemId", "itemName" ], "type": "object" }, "DurableEntitlementRevocationConfig": { "properties": { "enabled": { "description": "will do revocation if enabled, otherwise will skip do revocation.", "type": "boolean", "x-omitempty": false }, "strategy": { "description": "durable entitlement revocation strategy", "enum": [ "CUSTOM", "REVOKE_OR_REPORT" ], "type": "string" } }, "type": "object" }, "EntitlementConfigInfo": { "properties": { "enableEntitlementOriginFeature": { "type": "boolean", "x-omitempty": false }, "namespace": { "type": "string" } }, "type": "object" }, "EntitlementDecrementResult": { "properties": { "appId": { "description": "appId if entitlement is an app", "type": "string" }, "appType": { "description": "appType if entitlement is an app", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "clazz": { "description": "entitlement class", "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "type": "string" }, "collectionId": { "description": "entitlement collection id", "type": "string" }, "createdAt": { "description": "entitlement created at", "format": "date-time", "type": "string", "x-nullable": false }, "endDate": { "description": "entitlement end date", "format": "date-time", "type": "string", "x-nullable": true }, "features": { "description": "entitlement features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "grantedAt": { "description": "entitlement granted at", "format": "date-time", "type": "string", "x-nullable": true }, "grantedCode": { "description": "grantedCode, the granted code", "type": "string" }, "id": { "description": "entitlement id", "type": "string" }, "itemId": { "description": "itemId of the entitlement", "type": "string" }, "itemNamespace": { "description": "itemNamespace for the purchased item", "type": "string" }, "itemSnapshot": { "$ref": "#/definitions/ItemSnapshot", "description": "itemSnapshot" }, "name": { "description": "entitlement name", "type": "string" }, "namespace": { "description": "entitlement namespace", "type": "string" }, "noOrigin": { "description": "Whether entitlement have origin", "type": "boolean", "x-omitempty": false }, "origin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "platformAvailable": { "description": "platform available", "type": "boolean", "x-omitempty": false }, "replayed": { "description": "replayed, if true,the response is original successful response. This will not be included in response if client have not pass request id.", "type": "boolean", "x-omitempty": false }, "requestId": { "description": "request id", "type": "string" }, "rewards": { "description": "loot reward, only return when consume a loot box entitlement", "items": { "$ref": "#/definitions/EntitlementLootBoxReward" }, "type": "array" }, "sku": { "description": "sku for purchased item", "type": "string" }, "source": { "description": "entitlement source", "enum": [ "ACHIEVEMENT", "GIFT", "IAP", "OTHER", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REWARD" ], "type": "string" }, "stackable": { "description": "Whether the CONSUMABLE entitlement is stackable", "type": "boolean", "x-omitempty": false }, "startDate": { "description": "entitlement start date", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "entitlement status", "enum": [ "ACTIVE", "CONSUMED", "INACTIVE", "REVOKED", "SOLD" ], "type": "string" }, "storeId": { "description": "storeId of the item, published store if omitted", "type": "string" }, "type": { "description": "entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "updatedAt": { "description": "entitlement updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "useCount for entitlement", "format": "int32", "type": "integer" }, "userId": { "description": "userId for this entitlement", "type": "string" } }, "required": [ "clazz", "createdAt", "id", "itemId", "itemNamespace", "namespace", "status", "updatedAt" ], "type": "object" }, "EntitlementGrant": { "description": "A DTO object for granting entitlement API call.", "properties": { "collectionId": { "description": "entitlement collection id, length 1-128", "type": "string" }, "endDate": { "description": "entitlement end date time", "format": "date-time", "type": "string", "x-nullable": true }, "grantedCode": { "description": "grantedCode, the granted code", "type": "string" }, "itemId": { "description": "itemId", "type": "string" }, "itemNamespace": { "description": "itemNamespace", "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata, It is not stored in the database, only forwarded to AGS event", "type": "object" }, "origin": { "description": "entitlement Origin, The platform of the entitlement.", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" }, "region": { "description": "country value from ISO countries", "type": "string" }, "source": { "description": "source", "enum": [ "ACHIEVEMENT", "GIFT", "IAP", "OTHER", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REWARD" ], "type": "string" }, "startDate": { "description": "entitlement start date time", "format": "date-time", "type": "string", "x-nullable": true }, "storeId": { "description": "storeId", "type": "string" } }, "required": [ "itemId", "itemNamespace", "quantity" ], "type": "object" }, "EntitlementGrantResult": { "properties": { "entitlementGrants": { "$ref": "#/definitions/EntitlementGrant" }, "reason": { "type": "string" }, "userId": { "type": "string" } }, "type": "object" }, "EntitlementHistoryInfo": { "properties": { "action": { "description": "The action of entitlement, like GRANT, REVOKE", "enum": [ "DECREMENT", "DISABLE", "ENABLE", "GRANT", "REVOKE", "SELL_BACK", "UPDATE" ], "type": "string" }, "clazz": { "description": "The clazz of entitlement", "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "type": "string" }, "createdAt": { "description": "History create time", "format": "date-time", "type": "string", "x-nullable": false }, "entitlementId": { "description": "The id of entitlement", "type": "string" }, "itemId": { "description": "The item id of entitlement", "type": "string" }, "namespace": { "description": "The namespace of entitlement", "type": "string" }, "operator": { "description": "The operator", "type": "string" }, "origin": { "description": "The origin where the entitlement is granted", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "reason": { "description": "reason", "type": "string" }, "sku": { "description": "The sku of entitlement", "type": "string" }, "updatedAt": { "description": "History update time", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "The reminder use count of a consumable entitlement.", "format": "int32", "type": "integer" }, "useCountChange": { "description": "changed use count.", "format": "int32", "type": "integer" }, "userId": { "description": "The owner id of entitlement", "type": "string" } }, "required": [ "action", "createdAt", "entitlementId", "namespace", "operator", "updatedAt", "userId" ], "type": "object" }, "EntitlementIfc": { "properties": { "appId": { "type": "string" }, "appType": { "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "clazz": { "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "type": "string" }, "collectionId": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "endDate": { "format": "date-time", "type": "string", "x-nullable": true }, "features": { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "grantedCode": { "type": "string" }, "id": { "type": "string" }, "itemId": { "type": "string" }, "itemNamespace": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "noOrigin": { "type": "boolean", "x-omitempty": false }, "origin": { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "sku": { "type": "string" }, "startDate": { "format": "date-time", "type": "string", "x-nullable": true }, "status": { "enum": [ "ACTIVE", "CONSUMED", "INACTIVE", "REVOKED", "SOLD" ], "type": "string" }, "storeId": { "type": "string" }, "type": { "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "useCount": { "format": "int32", "type": "integer" }, "userId": { "type": "string" } }, "type": "object" }, "EntitlementInfo": { "properties": { "appId": { "description": "appId if entitlement is an app", "type": "string" }, "appType": { "description": "appType if entitlement is an app", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "clazz": { "description": "entitlement class", "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "type": "string" }, "collectionId": { "description": "entitlement collection id", "type": "string" }, "createdAt": { "description": "entitlement created at", "format": "date-time", "type": "string", "x-nullable": false }, "endDate": { "description": "entitlement end date", "format": "date-time", "type": "string", "x-nullable": true }, "features": { "description": "entitlement features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "grantedAt": { "description": "entitlement granted at", "format": "date-time", "type": "string", "x-nullable": true }, "grantedCode": { "description": "grantedCode, the granted code", "type": "string" }, "id": { "description": "entitlement id", "type": "string" }, "itemId": { "description": "itemId of the entitlement", "type": "string" }, "itemNamespace": { "description": "itemNamespace for the purchased item", "type": "string" }, "itemSnapshot": { "$ref": "#/definitions/ItemSnapshot", "description": "itemSnapshot" }, "name": { "description": "entitlement name", "type": "string" }, "namespace": { "description": "entitlement namespace", "type": "string" }, "noOrigin": { "description": "Whether entitlement have origin", "type": "boolean", "x-omitempty": false }, "origin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "platformAvailable": { "description": "platform available", "type": "boolean", "x-omitempty": false }, "sku": { "description": "sku for purchased item", "type": "string" }, "source": { "description": "entitlement source", "enum": [ "ACHIEVEMENT", "GIFT", "IAP", "OTHER", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REWARD" ], "type": "string" }, "stackable": { "description": "Whether the CONSUMABLE entitlement is stackable", "type": "boolean", "x-omitempty": false }, "startDate": { "description": "entitlement start date", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "entitlement status", "enum": [ "ACTIVE", "CONSUMED", "INACTIVE", "REVOKED", "SOLD" ], "type": "string" }, "storeId": { "description": "storeId of the item, published store if omitted", "type": "string" }, "type": { "description": "entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "updatedAt": { "description": "entitlement updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "useCount for entitlement", "format": "int32", "type": "integer" }, "userId": { "description": "userId for this entitlement", "type": "string" } }, "required": [ "clazz", "createdAt", "id", "itemId", "itemNamespace", "namespace", "status", "updatedAt" ], "type": "object" }, "EntitlementLootBoxReward": { "properties": { "count": { "description": "count", "format": "int32", "type": "integer" }, "itemId": { "description": "item id", "type": "string" }, "itemSku": { "description": "item sku", "type": "string" } }, "type": "object" }, "EntitlementOriginSyncResult": { "description": "entitlement origin sync result", "properties": { "reason": { "description": "failed reason ,only record when call item endpoint failed", "type": "string" }, "reward": { "$ref": "#/definitions/PlatformReward", "description": "DLC Reward" }, "summary": { "description": "Entitlement Origin Sync and compensation result", "items": { "$ref": "#/definitions/RewardMigrationResult" }, "type": "array" } }, "type": "object" }, "EntitlementOwnership": { "properties": { "itemId": { "description": "item id", "type": "string" }, "owned": { "description": "ownership", "type": "boolean", "x-omitempty": false } }, "required": [ "owned" ], "type": "object" }, "EntitlementPagingSlicedResult": { "properties": { "data": { "items": { "$ref": "#/definitions/EntitlementInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "type": "object" }, "EntitlementPlatformConfigInfo": { "properties": { "allowedPlatformOrigins": { "description": "allowed entitlement origins", "items": { "type": "string" }, "type": "array" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": true }, "id": { "description": "config id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "platform": { "description": "platform", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": true } }, "required": [ "allowedPlatformOrigins", "namespace", "platform" ], "type": "object" }, "EntitlementPlatformConfigUpdate": { "description": "A DTO object for updating entitlement platform config API call.", "properties": { "allowedPlatformOrigins": { "items": { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "type": "array" } }, "type": "object" }, "EntitlementPrechekResult": { "properties": { "isRevokePossible": { "type": "boolean", "x-omitempty": false } }, "type": "object" }, "EntitlementRevocation": { "properties": { "customRevocation": { "type": "object" }, "entitlementId": { "type": "string" }, "itemId": { "type": "string" }, "itemSku": { "type": "string" }, "quantity": { "format": "int64", "type": "integer" }, "reason": { "type": "string" }, "revocationStrategy": { "type": "string" }, "skipped": { "type": "boolean", "x-omitempty": false }, "status": { "enum": [ "FAIL", "SUCCESS" ], "type": "string" } }, "type": "object" }, "EntitlementRevocationConfig": { "properties": { "consumable": { "$ref": "#/definitions/ConsumableEntitlementRevocationConfig", "description": "consumable entitlement revocation config" }, "durable": { "$ref": "#/definitions/DurableEntitlementRevocationConfig", "description": "durable entitlement revocation config" } }, "type": "object" }, "EntitlementRevokeRequest": { "description": "A DTO object for revoke entitlement API call.", "properties": { "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata, It is not stored in the database, only forwarded to AGS event", "type": "object" } }, "type": "object" }, "EntitlementRevokeResult": { "properties": { "entitlementId": { "type": "string" }, "reason": { "type": "string" }, "userId": { "type": "string" } }, "type": "object" }, "EntitlementSoldRequest": { "description": "A DTO object for sell entitlement.", "properties": { "requestId": { "description": "Request id(Optional), client should provide a unique request id to perform at most once execution, When a request id is resubmitted, it will return original successful response", "type": "string" }, "useCount": { "description": "the use count to sell, 1 for default, durable entitlement only allow 1", "format": "int32", "type": "integer" } }, "type": "object" }, "EntitlementSoldResult": { "properties": { "creditSummaries": { "description": "creditSummaries, The money from the sale", "items": { "$ref": "#/definitions/CreditSummary" }, "type": "array" }, "entitlementInfo": { "$ref": "#/definitions/EntitlementInfo", "description": "The entitlement information after the sale" }, "replayed": { "description": "replayed, if true,the response is original successful response. This will not be included in response if client have not pass request id.", "type": "boolean", "x-omitempty": false }, "requestId": { "description": "request id", "type": "string" } }, "type": "object" }, "EntitlementSplitRequest": { "properties": { "metadata": { "$ref": "#/definitions/PublicEntitlementMetadata", "description": "split metadata, It is not stored in the database, only forwarded to AGS event" }, "useCount": { "description": "use count", "format": "int32", "type": "integer" } }, "type": "object" }, "EntitlementSplitResult": { "properties": { "source": { "$ref": "#/definitions/EntitlementInfo", "description": "Source entitlement info after split" }, "target": { "$ref": "#/definitions/EntitlementInfo", "description": "Target entitlement info after split" } }, "type": "object" }, "EntitlementSummary": { "properties": { "clazz": { "description": "entitlement class", "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "type": "string" }, "collectionId": { "description": "collection id", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "endDate": { "description": "end date time", "format": "date-time", "type": "string", "x-nullable": true }, "grantedCode": { "description": "granted code", "type": "string" }, "id": { "description": "entitlement id", "type": "string" }, "itemId": { "description": "item id", "type": "string" }, "name": { "description": "entitlement name. Most of the time entitlement name is the same as the item name.", "type": "string" }, "namespace": { "description": "entitlement namespace", "type": "string" }, "noOrigin": { "description": "Whether entitlement have origin", "type": "boolean", "x-omitempty": false }, "origin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "stackable": { "description": "Whether the CONSUMABLE entitlement is stackable", "type": "boolean", "x-omitempty": false }, "stackedUseCount": { "description": "CONSUMABLE entitlement stacked use count", "format": "int32", "type": "integer" }, "startDate": { "description": "start date time", "format": "date-time", "type": "string", "x-nullable": true }, "storeId": { "description": "item store id, null if published store", "type": "string" }, "type": { "description": "entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "userId for this entitlement", "type": "string" } }, "required": [ "clazz", "createdAt", "id", "namespace", "type", "updatedAt", "userId" ], "type": "object" }, "EntitlementTransferRequest": { "properties": { "entitlementId": { "description": "entitlement id", "type": "string" }, "metadata": { "$ref": "#/definitions/PublicEntitlementMetadata", "description": "transfer metadata, It is not stored in the database, only forwarded to AGS event" }, "useCount": { "description": "useCount(optional). means transfer all of use count to target entitlement id if not pass.", "format": "int32", "type": "integer" } }, "type": "object" }, "EntitlementTransferResult": { "properties": { "source": { "$ref": "#/definitions/EntitlementInfo", "description": "Source entitlement info after transfer" }, "target": { "$ref": "#/definitions/EntitlementInfo", "description": "Target entitlement info after transfer" } }, "type": "object" }, "EntitlementUpdate": { "description": "A DTO object for updating entitlement API call. Leave the field empty if don't want to update.", "properties": { "collectionId": { "description": "entitlement collection id, length 1-128", "type": "string" }, "endDate": { "description": "end date of the entitlement. yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "format": "date-time", "type": "string", "x-nullable": true }, "nullFieldList": { "description": "nullFieldList", "items": { "type": "string" }, "type": "array" }, "origin": { "description": "origin of the entitlement", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "reason": { "description": "update reason", "type": "string" }, "startDate": { "description": "start date of the entitlement. yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "status", "enum": [ "ACTIVE", "CONSUMED", "INACTIVE", "REVOKED", "SOLD" ], "type": "string" }, "useCount": { "description": "useCount of a consumable entitlement", "format": "int32", "type": "integer" } }, "type": "object" }, "EpicGamesDLCSyncRequest": { "properties": { "epicGamesJwtToken": { "description": "epicGamesJwtToken", "type": "string" } }, "type": "object" }, "EpicGamesIAPConfigInfo": { "properties": { "namespace": { "description": "namespace", "type": "string" }, "sandboxId": { "description": "epic games sandbox id", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "EpicGamesIAPConfigRequest": { "properties": { "sandboxId": { "description": "sandboxId", "type": "string" } }, "required": [ "sandboxId" ], "type": "object" }, "EpicGamesReconcileRequest": { "properties": { "epicGamesJwtToken": { "description": "epicGamesJwtToken", "type": "string" } }, "type": "object" }, "EpicGamesReconcileResult": { "properties": { "epicGamesItemId": { "type": "string" }, "itemId": { "type": "string" }, "sku": { "type": "string" }, "status": { "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "type": "string" }, "transactionId": { "type": "string" } }, "type": "object" }, "ErrorEntity": { "properties": { "devStackTrace": { "description": "internal server error stack trace in configured environment", "type": "string" }, "errorCode": { "description": "numeric error code", "format": "int32", "type": "integer" }, "errorMessage": { "description": "error message", "type": "string" }, "messageVariables": { "additionalProperties": { "type": "string" }, "description": "message variables", "type": "object" }, "requiredPermission": { "$ref": "#/definitions/Permission" } }, "required": [ "errorCode", "errorMessage" ], "type": "object" }, "EstimatedPriceInfo": { "properties": { "estimatedPrices": { "description": "estimated prices in different currency under region, this field maybe null or empty if have not any available price at this time, Possible reason: This item is not yet for sale, or miss set correct region currency for flexible bundle item.", "items": { "$ref": "#/definitions/AvailablePrice" }, "type": "array" }, "itemId": { "description": "item Id", "type": "string" }, "region": { "description": "price region", "type": "string" } }, "required": [ "itemId" ], "type": "object" }, "EventAdditionalData": { "properties": { "entitlement": { "items": { "$ref": "#/definitions/AdditionalDataEntitlement" }, "type": "array" }, "purpose": { "type": "string" } }, "type": "object" }, "EventPayload": { "properties": { "payload": { "additionalProperties": { "type": "object" }, "type": "object" } }, "type": "object" }, "ExportStoreRequest": { "properties": { "itemIds": { "description": "item ids", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "ExportStoreToCSVRequest": { "properties": { "catalogType": { "description": "catalog type", "enum": [ "APP", "CATEGORY", "ITEM", "SECTION", "VIEW" ], "type": "string" }, "fieldsToBeIncluded": { "description": "fields to be included, return all fields if empty", "items": { "type": "string" }, "type": "array" }, "idsToBeExported": { "description": "ids according to catalog type to be exported, return all result of a catalogType if empty", "items": { "type": "string" }, "type": "array" }, "storeId": { "description": "target store id to be exported, default using published store Id", "type": "string" } }, "required": [ "catalogType" ], "type": "object" }, "ExtensionFulfillmentSummary": { "properties": { "grantedAt": { "description": "grantedAt", "format": "date-time", "type": "string", "x-nullable": true }, "itemClazz": { "description": "customized item sub type", "type": "string" }, "itemExt": { "additionalProperties": { "type": "object" }, "description": "customized item properties", "type": "object" }, "itemId": { "description": "itemId", "type": "string" }, "itemType": { "description": "item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "customized external fulfillment results", "type": "object" }, "namespace": { "description": "namespace", "type": "string" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" }, "userId": { "description": "userId", "type": "string" } }, "required": [ "quantity" ], "type": "object" }, "ExternalPaymentOrderCreate": { "properties": { "currencyCode": { "description": "currency code, default is USD", "type": "string" }, "currencyNamespace": { "description": "currency namespace, default is publisher namespace", "type": "string" }, "customParameters": { "additionalProperties": { "type": "object" }, "description": "custom parameters", "type": "object" }, "description": { "description": "Order desc, max length 2000", "type": "string" }, "extOrderNo": { "description": "External order id", "type": "string" }, "extUserId": { "description": "optional, external user id, can be the character id", "type": "string" }, "itemType": { "description": "item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "description": "metadata", "type": "object" }, "notifyUrl": { "description": "custom notify url for real payment, send notification to this url once payment action is finished", "type": "string" }, "omitNotification": { "description": "TEST PURPOSE, if set it will not send async notification to the API invoker, only can set true while this payment is sandbox", "type": "boolean", "x-omitempty": false }, "platform": { "description": "platform", "type": "string" }, "price": { "description": "Price of order", "format": "int32", "type": "integer" }, "recurringPaymentOrderNo": { "description": "recurring payment order which has recurring token, will do recurring payment if present, otherwise start normal payment flow", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" }, "returnUrl": { "description": "custom return url for real payment, user will be redirected to this url once payment is finished", "type": "string" }, "sandbox": { "description": "TEST PURPOSE, sandbox(Active in real currency mode), default is false", "type": "boolean", "x-omitempty": false }, "sku": { "description": "optional, unique identity for the item", "type": "string" }, "subscriptionId": { "description": "subscriptionId, payment token will be saved for recurring payment", "type": "string" }, "targetNamespace": { "description": "The game namespace", "type": "string" }, "targetUserId": { "description": "The user id in game namespace", "type": "string" }, "title": { "description": "Order title", "type": "string" } }, "required": [ "description", "extOrderNo", "price", "targetNamespace", "targetUserId", "title" ], "type": "object" }, "FeatureReference": { "properties": { "feature": { "enum": [ "CAMPAIGN", "CATALOG", "DLC", "ENTITLEMENT", "IAP", "REWARD" ], "type": "string" }, "references": { "items": { "$ref": "#/definitions/ModuleReference" }, "type": "array" } }, "type": "object" }, "FieldValidationError": { "properties": { "errorCode": { "type": "string" }, "errorField": { "type": "string" }, "errorMessage": { "type": "string" }, "errorValue": { "type": "string" }, "messageVariables": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "FixedPeriodRotationConfig": { "properties": { "backfillType": { "description": "backfill type: NONE/CUSTOM, default is NONE", "enum": [ "CUSTOM", "NONE" ], "type": "string" }, "duration": { "description": "duration: rotation duration, unit is minutes, min duration is 1", "format": "int32", "type": "integer" }, "itemCount": { "description": "returned item count, min is 1, default is 1", "format": "int32", "type": "integer" }, "rule": { "description": "item rotation rule: SEQUENCE/LOOP. default is SEQUENCE", "enum": [ "LOOP", "SEQUENCE" ], "type": "string" } }, "type": "object" }, "FulFillItemPayload": { "properties": { "count": { "format": "int32", "type": "integer" }, "entitlementCollectionId": { "description": "entitlement collection id, length 1-128", "type": "string" }, "entitlementOrigin": { "description": "Entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "itemIdentity": { "type": "string" }, "itemIdentityType": { "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" } }, "required": [ "count", "itemIdentity", "itemIdentityType" ], "type": "object" }, "FulfillBundledItemResult": { "properties": { "error": { "type": "string" }, "itemId": { "type": "string" }, "itemSku": { "type": "string" }, "quantity": { "format": "int32", "type": "integer" } }, "type": "object" }, "FulfillCodeRequest": { "properties": { "code": { "description": "campaign code", "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" } }, "required": [ "code" ], "type": "object" }, "FulfillItemResult": { "properties": { "error": { "type": "string" }, "itemId": { "type": "string" }, "itemSku": { "type": "string" }, "items": { "items": { "$ref": "#/definitions/FulfillBundledItemResult" }, "type": "array" } }, "type": "object" }, "FulfillmentActionHistory": { "properties": { "action": { "enum": [ "FULFILLMENT", "REVOKE_FULFILLMENT" ], "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "fulfillmentHistoryId": { "type": "string" }, "revocationHistoryId": { "type": "string" }, "state": { "enum": [ "FULFILLED", "FULFILL_FAILED", "REVOKED", "REVOKE_FAILED" ], "type": "string" } }, "type": "object" }, "FulfillmentError": { "properties": { "code": { "description": "error code", "format": "int32", "type": "integer" }, "httpStatus": { "description": "http status", "format": "int32", "type": "integer" }, "message": { "description": "error message", "type": "string" } }, "type": "object" }, "FulfillmentHistoryInfo": { "properties": { "code": { "description": "redeemed code", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "creditSummaries": { "description": "credit granted", "items": { "$ref": "#/definitions/CreditSummary" }, "type": "array" }, "entitlementOrigin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "entitlementSummaries": { "description": "entitlement granted", "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" }, "extensionFulfillmentSummaries": { "description": "extension fulfillment granted", "items": { "$ref": "#/definitions/ExtensionFulfillmentSummary" }, "type": "array" }, "fulfillItems": { "description": "items should do fulfillment", "items": { "$ref": "#/definitions/FulfillmentItem" }, "type": "array" }, "fulfillmentError": { "$ref": "#/definitions/FulfillmentError", "description": "fulfillment error detail" }, "grantedItemIds": { "description": "item ids already granted", "items": { "type": "string" }, "type": "array" }, "id": { "description": "id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "orderNo": { "description": "orderNo", "type": "string" }, "status": { "description": "fulfillment status", "enum": [ "FAIL", "SUCCESS" ], "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "userId", "type": "string" } }, "required": [ "createdAt", "id", "namespace", "status", "updatedAt", "userId" ], "type": "object" }, "FulfillmentHistoryPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/FulfillmentHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "FulfillmentInfo": { "properties": { "actions": { "description": "actions history", "items": { "$ref": "#/definitions/FulfillmentActionHistory" }, "type": "array" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "id": { "description": "id", "type": "string" }, "items": { "description": "items should do fulfillment", "items": { "$ref": "#/definitions/FulfillmentItem" }, "type": "array" }, "namespace": { "description": "namespace", "type": "string" }, "state": { "description": "state", "enum": [ "FULFILLED", "FULFILL_FAILED", "REVOKED", "REVOKE_FAILED" ], "type": "string" }, "stateInfo": { "$ref": "#/definitions/FulfillmentStateInfo", "description": "state info" }, "transactionId": { "description": "transactionId", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "userId", "type": "string" } }, "required": [ "createdAt", "id", "namespace", "updatedAt", "userId" ], "type": "object" }, "FulfillmentItem": { "properties": { "extraSubscriptionDays": { "description": "extra subscription days", "format": "int32", "type": "integer" }, "itemId": { "description": "item id", "type": "string" }, "itemName": { "description": "item name", "type": "string" }, "itemSku": { "description": "item sku", "type": "string" }, "itemType": { "description": "item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" }, "storeId": { "description": "draft store id, published store if omitted", "type": "string" } }, "required": [ "quantity" ], "type": "object" }, "FulfillmentPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/FulfillmentInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "FulfillmentRequest": { "description": "A DTO object for fulfillment request API call.", "properties": { "duration": { "description": "duration in seconds, ignored if the endDate is present", "format": "int32", "type": "integer" }, "endDate": { "description": "end date time", "format": "date-time", "type": "string", "x-nullable": true }, "entitlementCollectionId": { "description": "entitlement collection id, length 1-128", "type": "string" }, "entitlementOrigin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "itemId": { "description": "itemId", "type": "string" }, "itemSku": { "description": "itemSku", "type": "string" }, "language": { "description": "language", "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata", "type": "object" }, "order": { "$ref": "#/definitions/OrderSummary", "description": "order summary for fulfillment scripts" }, "orderNo": { "description": "orderNo", "type": "string" }, "origin": { "description": "origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "overrideBundleItemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "overrideBundleItemQty", "type": "object" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" }, "region": { "description": "region", "type": "string" }, "source": { "description": "source", "enum": [ "ACHIEVEMENT", "CONSUME_ENTITLEMENT", "DLC", "EXPIRATION", "GIFT", "IAP", "IAP_CHARGEBACK_REVERSED", "ORDER_REVOCATION", "OTHER", "PAYMENT", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REWARD", "SELL_BACK" ], "type": "string" }, "startDate": { "description": "start date time", "format": "date-time", "type": "string", "x-nullable": true }, "storeId": { "description": "storeId", "type": "string" } }, "required": [ "quantity" ], "type": "object" }, "FulfillmentResult": { "properties": { "creditSummaries": { "description": "credit granted", "items": { "$ref": "#/definitions/CreditSummary" }, "type": "array" }, "entitlementSummaries": { "description": "entitlement granted", "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" }, "id": { "description": "fulfillment history id, only fulfill rewards will return this filed currently.", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "subscriptionSummaries": { "description": "affected subscriptions", "items": { "$ref": "#/definitions/SubscriptionSummary" }, "type": "array" }, "userId": { "description": "userId", "type": "string" } }, "required": [ "namespace", "userId" ], "type": "object" }, "FulfillmentScriptCreate": { "properties": { "grantDays": { "description": "javascript script for grant days, expression expected to return integer, -1 means unlimited. It only execute while there's no endDate specified while do fulfillment", "type": "string" } }, "type": "object" }, "FulfillmentScriptInfo": { "properties": { "grantDays": { "description": "javascript script for grant days, expression expected to return integer, -1 means unlimited. It only execute while there's no endDate specified while do fulfillment", "type": "string" }, "id": { "description": "id", "type": "string" } }, "type": "object" }, "FulfillmentScriptUpdate": { "properties": { "grantDays": { "description": "javascript script for grant days, expression expected to return integer, -1 means unlimited. It only execute while there's no endDate specified while do fulfillment", "type": "string" } }, "type": "object" }, "FulfillmentStateInfo": { "properties": { "failedList": { "items": { "$ref": "#/definitions/FulfillItemResult" }, "type": "array" }, "successList": { "items": { "$ref": "#/definitions/FulfillItemResult" }, "type": "array" } }, "type": "object" }, "FulfillmentV2Request": { "description": "A DTO object for fulfillment v2 request API call.", "properties": { "items": { "description": "items", "items": { "$ref": "#/definitions/FulfillmentV2RequestItem" }, "type": "array" } }, "type": "object" }, "FulfillmentV2RequestItem": { "description": "A DTO object for fulfillment v2 request item.", "properties": { "duration": { "description": "duration in seconds, ignored if the endDate is present", "format": "int32", "type": "integer" }, "endDate": { "description": "end date time", "format": "date-time", "type": "string", "x-nullable": true }, "entitlementCollectionId": { "description": "entitlement collection id, length 1-128", "type": "string" }, "entitlementOrigin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "itemId": { "description": "itemId", "type": "string" }, "itemSku": { "description": "itemSku", "type": "string" }, "language": { "description": "language", "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata", "type": "object" }, "orderNo": { "description": "orderNo", "type": "string" }, "origin": { "description": "origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" }, "region": { "description": "region", "type": "string" }, "source": { "description": "source", "enum": [ "ACHIEVEMENT", "CONSUME_ENTITLEMENT", "DLC", "EXPIRATION", "GIFT", "IAP", "IAP_CHARGEBACK_REVERSED", "ORDER_REVOCATION", "OTHER", "PAYMENT", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REWARD", "SELL_BACK" ], "type": "string" }, "startDate": { "description": "start date time", "format": "date-time", "type": "string", "x-nullable": true }, "storeId": { "description": "storeId", "type": "string" } }, "required": [ "quantity" ], "type": "object" }, "FulfillmentV2Result": { "properties": { "creditSummaries": { "description": "credit granted", "items": { "$ref": "#/definitions/CreditSummary" }, "type": "array" }, "entitlementSummaries": { "description": "entitlement granted", "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" }, "id": { "description": "fulfillment id", "type": "string" }, "items": { "description": "item", "items": { "$ref": "#/definitions/FulfillmentItem" }, "type": "array" }, "namespace": { "description": "namespace", "type": "string" }, "state": { "description": "state", "enum": [ "FULFILLED", "FULFILL_FAILED", "REVOKED", "REVOKE_FAILED" ], "type": "string" }, "stateInfo": { "$ref": "#/definitions/FulfillmentStateInfo", "description": "stateInfo" }, "subscriptionSummaries": { "description": "affected subscriptions", "items": { "$ref": "#/definitions/SubscriptionSummary" }, "type": "array" }, "transactionId": { "description": "transactionId", "type": "string" }, "userId": { "description": "userId", "type": "string" } }, "required": [ "items", "namespace", "state", "stateInfo", "transactionId", "userId" ], "type": "object" }, "FullAppInfo": { "properties": { "carousel": { "description": "carousel", "items": { "$ref": "#/definitions/Slide" }, "type": "array" }, "developer": { "description": "developer", "type": "string" }, "forumUrl": { "description": "forum url", "type": "string" }, "genres": { "description": "genres", "items": { "enum": [ "Action", "Adventure", "Casual", "FreeToPlay", "Indie", "MassivelyMultiplayer", "RPG", "Racing", "Simulation", "Sports", "Strategy" ], "type": "string" }, "type": "array" }, "itemId": { "description": "item id", "type": "string" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/AppLocalization" }, "description": "localizations", "type": "object" }, "namespace": { "description": "namespace", "type": "string" }, "platformRequirements": { "additionalProperties": { "items": { "$ref": "#/definitions/Requirement" }, "type": "array" }, "description": "platform requirements", "type": "object" }, "platforms": { "description": "supported platforms", "items": { "enum": [ "Android", "IOS", "Linux", "MacOS", "Windows" ], "type": "string" }, "type": "array" }, "players": { "description": "players", "items": { "enum": [ "Coop", "CrossPlatformMulti", "LocalCoop", "MMO", "Multi", "Single" ], "type": "string" }, "type": "array" }, "primaryGenre": { "description": "primary genre", "enum": [ "Action", "Adventure", "Casual", "FreeToPlay", "Indie", "MassivelyMultiplayer", "RPG", "Racing", "Simulation", "Sports", "Strategy" ], "type": "string" }, "publisher": { "description": "publisher", "type": "string" }, "releaseDate": { "description": "release date", "format": "date-time", "type": "string", "x-nullable": true }, "websiteUrl": { "description": "website url", "type": "string" } }, "required": [ "itemId", "namespace" ], "type": "object" }, "FullCategoryInfo": { "properties": { "categoryPath": { "description": "Category path", "type": "string" }, "createdAt": { "description": "Category created time", "format": "date-time", "type": "string", "x-nullable": false }, "localizationDisplayNames": { "additionalProperties": { "type": "string" }, "description": "Category localization display name", "type": "object" }, "namespace": { "description": "Category namespace", "type": "string" }, "parentCategoryPath": { "description": "Parent category path", "type": "string" }, "root": { "type": "boolean", "x-omitempty": false }, "updatedAt": { "description": "Category updated time", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "categoryPath", "createdAt", "localizationDisplayNames", "namespace", "parentCategoryPath", "updatedAt" ], "type": "object" }, "FullItemInfo": { "properties": { "appId": { "description": "App id, required when itemType is APP", "type": "string" }, "appType": { "description": "App type, required when itemType is APP", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "Base app id", "type": "string" }, "boothName": { "description": "booth name to get tickets while it's item type is CODE", "type": "string" }, "boundItemIds": { "description": "the items which this item being bounded to", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "categoryPath": { "description": "Item category path", "type": "string" }, "clazz": { "description": "customized item clazz", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "entitlementType": { "description": "Entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "ext": { "additionalProperties": { "type": "object" }, "description": "customized item properties", "type": "object" }, "features": { "description": "Features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "flexible": { "description": "whether it supported flexible pricing", "type": "boolean", "x-omitempty": false }, "images": { "description": "images", "items": { "$ref": "#/definitions/Image" }, "type": "array" }, "inventoryConfig": { "$ref": "#/definitions/InventoryConfig", "description": "inventory config" }, "itemId": { "description": "Item id", "type": "string" }, "itemIds": { "description": "Bundle item's item ids", "items": { "type": "string" }, "type": "array" }, "itemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "itemQty, the quantity of item in itemIds, default 1, should be empty if item type is not \"BUNDLE\"", "type": "object" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "listable": { "description": "Whether can be visible in Store for public user", "type": "boolean", "x-omitempty": false }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Item localizations", "type": "object" }, "lootBoxConfig": { "$ref": "#/definitions/LootBoxConfig", "description": "loot box config" }, "maxCount": { "description": "Max count, -1 means UNLIMITED, unset when itemType is CODE", "format": "int32", "type": "integer" }, "maxCountPerUser": { "description": "Max count per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "Name", "type": "string" }, "namespace": { "description": "Item namespace", "type": "string" }, "optionBoxConfig": { "$ref": "#/definitions/OptionBoxConfig", "description": "option box config" }, "purchasable": { "description": "Whether can be purchased", "type": "boolean", "x-omitempty": false }, "purchaseCondition": { "$ref": "#/definitions/PurchaseCondition", "description": "purchase condition" }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring for subscription" }, "regionData": { "additionalProperties": { "items": { "$ref": "#/definitions/RegionDataItem" }, "type": "array" }, "description": "Item region data", "type": "object" }, "saleConfig": { "$ref": "#/definitions/SaleConfig", "description": "saleConfig" }, "seasonType": { "description": "Season type, required while itemType is SEASON", "enum": [ "PASS", "TIER" ], "type": "string" }, "sectionExclusive": { "description": "whether it is sold in section only", "type": "boolean", "x-omitempty": false }, "sellable": { "description": "sellable", "type": "boolean", "x-omitempty": false }, "sku": { "description": "Sku", "type": "string" }, "stackable": { "description": "Whether stack the CONSUMABLE entitlement", "type": "boolean", "x-omitempty": false }, "status": { "description": "Item status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "Tags", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "targetCurrencyCode": { "description": "The target currency code of coin Item", "type": "string" }, "targetItemId": { "description": "[Going to deprecate]Target item id if this item is mapping from game namespace", "type": "string" }, "targetNamespace": { "description": "The target namespace of a cross namespace item", "type": "string" }, "thumbnailUrl": { "description": "thumbnail url", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "Item use count, required when entitlement type is consumable or itemType is COINS", "format": "int32", "type": "integer" } }, "required": [ "createdAt", "entitlementType", "itemId", "itemType", "localizations", "name", "namespace", "regionData", "status", "updatedAt" ], "type": "object" }, "FullItemPagingResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/FullItemInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" }, "total": { "format": "int64", "type": "integer" } }, "required": [ "data" ], "type": "object" }, "FullItemPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/FullItemInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "FullSectionInfo": { "properties": { "active": { "description": "active", "type": "boolean", "x-omitempty": false }, "createdAt": { "description": "view created time", "format": "date-time", "type": "string", "x-nullable": false }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "endDate": { "description": "end date", "format": "date-time", "type": "string", "x-nullable": false }, "ext": { "additionalProperties": { "type": "object" }, "description": "section extension", "type": "object" }, "fixedPeriodRotationConfig": { "$ref": "#/definitions/FixedPeriodRotationConfig", "description": "fix period rotation config, don't allow null when rotation type is FIXED_PERIOD" }, "itemNamings": { "description": "section item namings", "items": { "$ref": "#/definitions/ItemNaming" }, "type": "array" }, "items": { "description": "section items", "items": { "$ref": "#/definitions/SectionItem" }, "type": "array" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "name": { "description": "name", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "rotationType": { "description": "rotation type, default is NONE", "enum": [ "CUSTOM", "FIXED_PERIOD", "NONE" ], "type": "string" }, "sectionId": { "description": "id", "type": "string" }, "startDate": { "description": "start date", "format": "date-time", "type": "string", "x-nullable": false }, "updatedAt": { "description": "view updated time", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id", "type": "string" }, "viewName": { "description": "view name", "type": "string" } }, "required": [ "active", "createdAt", "endDate", "localizations", "name", "namespace", "sectionId", "startDate", "updatedAt" ], "type": "object" }, "FullViewInfo": { "properties": { "createdAt": { "description": "view created time", "format": "date-time", "type": "string", "x-nullable": false }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "name": { "description": "view name", "type": "string" }, "namespace": { "description": "view namespace", "type": "string" }, "updatedAt": { "description": "view updated time", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id", "type": "string" } }, "required": [ "createdAt", "displayOrder", "localizations", "name", "namespace", "updatedAt", "viewId" ], "type": "object" }, "GoogleIAPConfigInfo": { "properties": { "applicationName": { "description": "applicationName", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "notificationTokenAudience": { "description": "notificationTokenAudience, it's used to verify the aud in the notification jwt token, empty will skip to validate aud", "type": "string" }, "notificationTokenEmail": { "description": "notificationTokenEmail, it's used to verify the email in the notification jwt token,empty will skip to validate email", "type": "string" }, "p12FileName": { "description": "p12 file", "type": "string" }, "packageName": { "description": "package name", "type": "string" }, "serviceAccountId": { "description": "serviceAccountId", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "GoogleIAPConfigRequest": { "properties": { "applicationName": { "description": "applicationName", "type": "string" }, "notificationTokenAudience": { "description": "notificationTokenAudience, it's used to verify the aud in the notification jwt token, empty will skip to validate aud", "type": "string" }, "notificationTokenEmail": { "description": "notificationTokenEmail, it's used to verify the email in the notification jwt token,empty will skip to validate email", "type": "string" }, "packageName": { "description": "package", "type": "string" }, "serviceAccountId": { "description": "serviceAccountId", "type": "string" } }, "required": [ "applicationName", "packageName", "serviceAccountId" ], "type": "object" }, "GoogleIAPReceipt": { "properties": { "autoAck": { "description": "If invoke Google play's Acknowledge after sync \u0026 fulfill item, default: false.", "type": "boolean", "x-omitempty": false }, "autoConsume": { "description": "If invoke Google play's Consume after sync \u0026 fulfill item, default: false.", "type": "boolean", "x-omitempty": false }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "orderId": { "description": "OrderId returned from google play", "type": "string" }, "packageName": { "description": "App package name", "type": "string" }, "productId": { "description": "Product id (SKU), required when purchase in-app product, subscription product is optional", "type": "string" }, "purchaseTime": { "description": "Purchase time returned from google play, required when purchase in-app product, subscription product is optional", "format": "int64", "type": "integer" }, "purchaseToken": { "description": "Google play purchase token returned from google play", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" }, "subscriptionPurchase": { "description": "is subscription product", "type": "boolean", "x-omitempty": false } }, "required": [ "orderId", "packageName", "purchaseToken" ], "type": "object" }, "GoogleReceiptResolveResult": { "properties": { "needConsume": { "description": "if client side need consume this receipt's product by invoke Google Billing client's consumeAsync", "type": "boolean", "x-omitempty": false } }, "type": "object" }, "GrantSubscriptionDaysRequest": { "properties": { "grantDays": { "description": "grant days", "format": "int32", "type": "integer" }, "reason": { "description": "grant reason", "type": "string" } }, "required": [ "grantDays" ], "type": "object" }, "GrpcServerInfo": { "properties": { "address": { "type": "string" }, "connectionTypeEnum": { "enum": [ "INSECURE", "TLS" ], "type": "string" }, "status": { "type": "string" }, "tlsConfig": { "$ref": "#/definitions/TLSConfig" } }, "type": "object" }, "HierarchicalCategoryInfo": { "properties": { "categoryPath": { "description": "Category path", "type": "string" }, "childCategories": { "description": "Child category list", "items": { "$ref": "#/definitions/HierarchicalCategoryInfo" }, "type": "array" }, "createdAt": { "description": "Category created time", "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "description": "Category display name", "type": "string" }, "namespace": { "description": "Category namespace", "type": "string" }, "parentCategoryPath": { "description": "Parent category path", "type": "string" }, "root": { "type": "boolean", "x-omitempty": false }, "updatedAt": { "description": "Category updated time", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "categoryPath", "childCategories", "createdAt", "displayName", "namespace", "parentCategoryPath", "updatedAt" ], "type": "object" }, "IAPClawbackPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/ClawbackInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "IAPConsumeHistoryInfo": { "properties": { "clientRequestParameter": { "$ref": "#/definitions/ClientRequestParameter" }, "consumeItems": { "items": { "$ref": "#/definitions/ConsumeItem" }, "type": "array" }, "iapType": { "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "type": "string" }, "id": { "type": "string" }, "namespace": { "type": "string" }, "requestBody": { "type": "object" }, "requestHistories": { "items": { "$ref": "#/definitions/RequestHistory" }, "type": "array" }, "requestUrl": { "type": "string" }, "status": { "enum": [ "FAIL", "PENDING", "SUCCESS" ], "type": "string" }, "userId": { "type": "string" } }, "type": "object" }, "IAPConsumeHistoryPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/IAPConsumeHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "IAPItemConfigInfo": { "properties": { "data": { "items": { "$ref": "#/definitions/IAPItemEntry" }, "type": "array" } }, "type": "object" }, "IAPItemConfigUpdate": { "properties": { "data": { "items": { "$ref": "#/definitions/IAPItemEntry" }, "type": "array" } }, "type": "object" }, "IAPItemEntry": { "properties": { "itemIdentity": { "description": "item id or sku", "type": "string" }, "itemIdentityType": { "description": "item identity type", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "platformProductIdMap": { "additionalProperties": { "type": "string" }, "description": "IAP Platform production ids related item id", "type": "object" } }, "type": "object" }, "IAPItemFlatEntry": { "properties": { "itemIdentity": { "description": "item id or sku", "type": "string" }, "itemIdentityType": { "description": "item identity type", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "platform": { "description": "iap platform", "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "type": "string" }, "platformProductId": { "description": "IAP Platform production id related item id", "type": "string" } }, "type": "object" }, "IAPItemMappingInfo": { "properties": { "data": { "items": { "$ref": "#/definitions/IAPItemFlatEntry" }, "type": "array" } }, "type": "object" }, "IAPOrderConsumeDetailInfo": { "properties": { "correlationId": { "description": "correlationId", "type": "string" }, "iapOrderNo": { "description": "iapOrderNo", "type": "string" }, "id": { "description": "id", "type": "string" }, "itemId": { "description": "itemId", "type": "string" }, "itemSku": { "description": "itemSku", "type": "string" }, "lineItemOrderId": { "description": "lineItemOrderId", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "orderId": { "description": "orderId", "type": "string" }, "platform": { "description": "platform", "type": "string" }, "productId": { "description": "productId", "type": "string" }, "quantityConsumed": { "description": "quantityConsumed", "format": "int32", "type": "integer" }, "quantityRevoked": { "description": "quantityRevoked", "format": "int32", "type": "integer" }, "status": { "description": "status", "enum": [ "FULFILLED", "RECONNECTED", "REVOKED" ], "type": "string" }, "userId": { "description": "userId", "type": "string" } }, "type": "object" }, "IAPOrderInfo": { "properties": { "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "credits": { "description": "credit summary", "items": { "$ref": "#/definitions/CreditSummary" }, "type": "array" }, "currencyCode": { "description": "currency code", "type": "string" }, "entitlements": { "description": "entitlement summary", "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" }, "fulfilledTime": { "description": "fulfill time if fulfilled", "format": "date-time", "type": "string", "x-nullable": true }, "iapOrderNo": { "description": "iap order No", "type": "string" }, "language": { "description": "language", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "price": { "description": "price", "format": "double", "type": "number" }, "productId": { "description": "product id", "type": "string" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" }, "receiptData": { "description": "receipt data", "type": "string" }, "region": { "description": "region", "type": "string" }, "retryCount": { "description": "retry count", "format": "int32", "type": "integer" }, "sandbox": { "description": "sandbox", "type": "boolean", "x-omitempty": false }, "status": { "description": "status", "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "type": "string" }, "statusReason": { "description": "status reason", "type": "string" }, "syncMode": { "description": "sync mode, only steam have this value currently.", "enum": [ "INVENTORY", "TRANSACTION" ], "type": "string" }, "transactionId": { "description": "transaction id", "type": "string" }, "type": { "description": "IAP type", "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "user id", "type": "string" } }, "required": [ "createdAt", "iapOrderNo", "namespace", "status", "type", "updatedAt", "userId" ], "type": "object" }, "IAPOrderLineItemInfo": { "properties": { "amount": { "description": "The total cost of the item to the user excluding VAT (in cents).", "format": "int64", "type": "integer" }, "iapOrderNo": { "description": "The AGS In-App Purchase (IAP) order number.", "type": "string" }, "id": { "description": "The unique identifier for the order.", "type": "string" }, "itemIdentity": { "description": "The AGS item identifier for the order.", "type": "string" }, "itemIdentityType": { "description": "The type of item identity (e.g., SKU, product ID).", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "lastFulfillmentV2Result": { "$ref": "#/definitions/FulfillmentV2Result", "description": "The result of the last fulfillment attempt." }, "lastRevokeFulfillmentV2Result": { "$ref": "#/definitions/RevokeFulfillmentV2Result", "description": "The result of the last attempt to revoke fulfillment." }, "lineItemId": { "description": "The unique identifier for the item within the order, for steam, it's array index", "type": "string" }, "namespace": { "description": "The namespace representing the AGS namespace.", "type": "string" }, "platform": { "description": "The platform on which the order was placed (STEAM, etc.)", "enum": [ "STEAM" ], "type": "string" }, "qty": { "description": "The quantity of the item ordered.", "format": "int64", "type": "integer" }, "sandbox": { "description": "Flag to determine if the order is placed in a sandbox (test) environment.", "type": "boolean", "x-omitempty": false }, "status": { "description": "The status of the order.", "enum": [ "FULFILLED", "VERIFIED" ], "type": "string" }, "statusReason": { "description": "A reason or explanation for the current status of the order.", "type": "string" }, "thirdPartyItemId": { "description": "The third-party item identifier related to the order.", "type": "string" }, "thirdPartyOrderId": { "description": "The third-party order identifier related to the IAP (In-App Purchase) transaction.", "type": "string" }, "userId": { "description": "The unique identifier of the AGS user.", "type": "string" }, "vat": { "description": "The VAT or tax amount (in cents).", "format": "int64", "type": "integer" } }, "type": "object" }, "IAPOrderPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/IAPOrderInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "IAPOrderShortInfo": { "properties": { "iapOrderNo": { "type": "string" }, "status": { "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "type": "string" } }, "type": "object" }, "Image": { "properties": { "as": { "description": "image for", "type": "string" }, "caption": { "description": "image caption", "type": "string" }, "height": { "description": "height", "format": "int32", "type": "integer" }, "imageUrl": { "description": "imageUrl", "type": "string" }, "smallImageUrl": { "description": "smallImageUrl", "type": "string" }, "width": { "description": "width", "format": "int32", "type": "integer" } }, "required": [ "height", "imageUrl", "smallImageUrl", "width" ], "type": "object" }, "ImportErrorDetails": { "properties": { "errorCode": { "description": "error code", "format": "int32", "type": "integer" }, "errorField": { "description": "error field, exists if constraint violated exception", "type": "string" }, "errorMessage": { "description": "error message", "type": "string" }, "errorValue": { "description": "error value, exists if constraint violated exception", "type": "string" }, "messageVariables": { "additionalProperties": { "type": "string" }, "description": "message variables", "type": "object" } }, "type": "object" }, "ImportStoreAppInfo": { "properties": { "itemId": { "description": "Item id", "type": "string" } }, "type": "object" }, "ImportStoreCategoryInfo": { "properties": { "categoryId": { "description": "category id", "type": "string" }, "categoryPath": { "description": "category path", "type": "string" }, "namespace": { "description": "namespace", "type": "string" } }, "type": "object" }, "ImportStoreError": { "properties": { "app": { "$ref": "#/definitions/ImportStoreAppInfo", "description": "app info" }, "category": { "$ref": "#/definitions/ImportStoreCategoryInfo", "description": "category info" }, "errors": { "description": "errors", "items": { "$ref": "#/definitions/ImportErrorDetails" }, "type": "array" }, "item": { "$ref": "#/definitions/ImportStoreItemInfo", "description": "item info" }, "section": { "$ref": "#/definitions/ImportStoreSectionInfo", "description": "section info" }, "type": { "description": "type", "enum": [ "APP", "CATEGORY", "ITEM", "SECTION", "STORE", "VIEW" ], "type": "string" }, "view": { "$ref": "#/definitions/ImportStoreViewInfo", "description": "view info" } }, "type": "object" }, "ImportStoreHistoryInfo": { "properties": { "createdAt": { "description": "created At", "format": "date-time", "type": "string", "x-nullable": false }, "errors": { "description": "a list of errors if failed", "items": { "$ref": "#/definitions/ImportStoreError" }, "type": "array" }, "id": { "description": "history id", "type": "string" }, "importFileFormat": { "description": "import file format", "enum": [ "CSV", "JSON" ], "type": "string" }, "initiatedBy": { "description": "who create this history", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "note": { "description": "optional note", "type": "string" }, "storeId": { "description": "store id", "type": "string" }, "success": { "description": "whether the request is success", "type": "boolean", "x-omitempty": false } }, "required": [ "createdAt", "id", "importFileFormat", "initiatedBy", "namespace", "storeId", "success" ], "type": "object" }, "ImportStoreHistoryPagingResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/ImportStoreHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" }, "total": { "format": "int64", "type": "integer" } }, "required": [ "data" ], "type": "object" }, "ImportStoreItemInfo": { "properties": { "categoryPath": { "description": "Item category path", "type": "string" }, "itemId": { "description": "Item id", "type": "string" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Item localizations", "type": "object" }, "name": { "description": "Name", "type": "string" }, "sku": { "description": "Sku", "type": "string" } }, "required": [ "itemType" ], "type": "object" }, "ImportStoreResult": { "properties": { "errors": { "description": "errors", "items": { "$ref": "#/definitions/ImportStoreError" }, "type": "array" }, "storeInfo": { "$ref": "#/definitions/StoreInfo", "description": "store info" }, "success": { "description": "import result", "type": "boolean", "x-omitempty": false } }, "type": "object" }, "ImportStoreSectionInfo": { "properties": { "name": { "description": "Name", "type": "string" }, "sectionId": { "description": "section id", "type": "string" } }, "type": "object" }, "ImportStoreViewInfo": { "properties": { "name": { "description": "Name", "type": "string" }, "viewId": { "description": "view id", "type": "string" } }, "type": "object" }, "InGameItemSync": { "properties": { "categoryPath": { "description": "the new category path for the synced item, A path separated by \"/\", will not show in store if it set to blank", "example": "/games", "type": "string" }, "targetItemId": { "description": "[Going to deprecate] Item id in game namespace", "type": "string" }, "targetNamespace": { "description": "game namespace", "type": "string" } }, "required": [ "categoryPath", "targetItemId", "targetNamespace" ], "type": "object" }, "InventoryConfig": { "properties": { "customAttributes": { "additionalProperties": { "type": "object" }, "description": "predefined custom additional attributes", "type": "object" }, "serverCustomAttributes": { "additionalProperties": { "type": "object" }, "description": "predefined server custom additional attributes", "type": "object" }, "slotUsed": { "description": "number of slot being taken for this item", "format": "int32", "type": "integer" } }, "type": "object" }, "InvoiceCurrencySummary": { "properties": { "currency": { "$ref": "#/definitions/CurrencySummary", "description": "currency" }, "salesVolume": { "description": "sales volume", "format": "int64", "type": "integer" }, "subtotalPrice": { "description": "subtotal price", "format": "int64", "type": "integer" }, "totalPrice": { "description": "total price", "format": "int64", "type": "integer" }, "totalTax": { "description": "total tax", "format": "int64", "type": "integer" } }, "required": [ "currency", "salesVolume", "subtotalPrice", "totalPrice", "totalTax" ], "type": "object" }, "InvoiceSummary": { "properties": { "invoiceCurrencySummary": { "description": "invoice currency summary", "items": { "$ref": "#/definitions/InvoiceCurrencySummary" }, "type": "array" }, "totalSalesVolume": { "description": "total sales volume", "format": "int64", "type": "integer" } }, "required": [ "invoiceCurrencySummary", "totalSalesVolume" ], "type": "object" }, "ItemAcquireRequest": { "properties": { "count": { "description": "acquire count", "format": "int32", "type": "integer" }, "orderNo": { "description": "order no", "type": "string" } }, "required": [ "count", "orderNo" ], "type": "object" }, "ItemAcquireResult": { "properties": { "maxCount": { "description": "max count", "format": "int32", "type": "integer" }, "success": { "description": "acquire result", "type": "boolean", "x-omitempty": false } }, "required": [ "maxCount", "success" ], "type": "object" }, "ItemCreate": { "description": "A DTO object for creating item API call.", "properties": { "appId": { "description": "appId, required if appType is present, alpha numeric, max length is 255", "type": "string" }, "appType": { "description": "appType", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "baseAppId, can set value of game appId if want to link to a game", "type": "string" }, "boothName": { "description": "booth name to get tickets while ItemType is CODE, Campaign or KeyGroup should located in targetNamespace if targetNamespace not null", "type": "string" }, "categoryPath": { "description": "Category Path, A path separated by \"/\", will not show in store if it set to blank, max length is 255", "example": "/games", "type": "string" }, "clazz": { "description": "customized item clazz", "type": "string" }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "entitlementType": { "description": "Entitlement Type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "ext": { "additionalProperties": { "type": "object" }, "description": "customized item properties", "type": "object" }, "features": { "description": "Features, allowed characters from a-zA-Z0-9_:- and start/end in alphanumeric with length range from 1 to 127", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "flexible": { "description": "whether flexible pricing applied, only applied if itemType is BUNDLE", "type": "boolean", "x-omitempty": false }, "images": { "description": "images", "items": { "$ref": "#/definitions/Image" }, "type": "array" }, "inventoryConfig": { "$ref": "#/definitions/InventoryConfig", "description": "inventory config" }, "itemId": { "description": "Item ID (optional). UUID V4 without hyphen format", "type": "string" }, "itemIds": { "description": "itemIds, should be empty if item type is not \"BUNDLE\"", "items": { "type": "string" }, "type": "array" }, "itemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "itemQty, the quantity of item in itemIds, default 1, should be empty if item type is not \"BUNDLE\"", "type": "object" }, "itemType": { "description": "Item Type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "listable": { "description": "Whether can be visible in Store for public user", "type": "boolean", "x-omitempty": false }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "lootBoxConfig": { "$ref": "#/definitions/LootBoxConfig", "description": "loot box config, should be empty if item type is not \"LOOTBOX\"" }, "maxCount": { "description": "Max count, -1 means UNLIMITED, unset when itemType is CODE", "format": "int32", "type": "integer" }, "maxCountPerUser": { "description": "Max count per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "Name, max length is 127", "type": "string" }, "optionBoxConfig": { "$ref": "#/definitions/OptionBoxConfig", "description": "option box config, should be empty if item type is not \"OPTIONBOX\"" }, "purchasable": { "description": "Whether can be purchased", "type": "boolean", "x-omitempty": false }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring for subscription" }, "regionData": { "additionalProperties": { "items": { "$ref": "#/definitions/RegionDataItemDTO" }, "type": "array" }, "description": "region data map, key is region, value is region data list", "type": "object" }, "saleConfig": { "$ref": "#/definitions/SaleConfig", "description": "sale config, required if sellable is true" }, "seasonType": { "description": "seasonType", "enum": [ "PASS", "TIER" ], "type": "string" }, "sectionExclusive": { "description": "Whether this item is sold in section only", "type": "boolean", "x-omitempty": false }, "sellable": { "description": "sellable, whether allow to sell back to store", "type": "boolean", "x-omitempty": false }, "sku": { "description": "sku, allowed characters from a-zA-Z0-9_:- and start/end in alphanumeric, max length is 127", "type": "string" }, "stackable": { "description": "Whether to stack the entitlement when entitlement type is \"CONSUMABLE\"", "type": "boolean", "x-omitempty": false }, "status": { "description": "status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "Tags, allowed characters from a-zA-Z0-9:_- with length range from 1 to 30, should start and end in upper/lowercase/number, an item has max 20 tags.", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "targetCurrencyCode": { "description": "target currency code, required if item type is \"COINS\"", "type": "string" }, "targetNamespace": { "description": "target namespace, require when sell a game's item on the publisher namespace", "type": "string" }, "thumbnailUrl": { "description": "thumbnail Url", "type": "string" }, "useCount": { "description": "Represent entitlement count when entitlement type is \"CONSUMABLE\", and represent coin count when itemType is \"COINS\"", "format": "int32", "type": "integer" } }, "required": [ "categoryPath", "entitlementType", "itemType", "localizations", "name", "regionData", "status" ], "type": "object" }, "ItemDependency": { "properties": { "references": { "items": { "$ref": "#/definitions/FeatureReference" }, "type": "array" } }, "type": "object" }, "ItemDynamicDataInfo": { "properties": { "availableCount": { "description": "the available count of this item, -1 means UNLIMITED, corresponding to maxCount", "format": "int32", "type": "integer" }, "itemId": { "description": "item id", "type": "string" }, "namespace": { "description": "item namespace", "type": "string" }, "userAvailableCount": { "description": "the available count of this item for current user, -1 means UNLIMITED, corresponding to maxCountPerUser", "format": "int64", "type": "integer" }, "userPurchaseLimit": { "description": "the max count that user can do purchase, -1 means UNLIMITED", "format": "int64", "type": "integer" } }, "required": [ "availableCount", "itemId", "namespace", "userAvailableCount", "userPurchaseLimit" ], "type": "object" }, "ItemId": { "properties": { "itemId": { "description": "itemId", "type": "string" }, "sku": { "description": "sku", "type": "string" }, "status": { "description": "status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" } }, "required": [ "itemId" ], "type": "object" }, "ItemInfo": { "properties": { "appId": { "description": "App id, required when itemType is APP", "type": "string" }, "appType": { "description": "App type, required when itemType is APP", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "Base app id", "type": "string" }, "boothName": { "description": "booth name to get tickets while it's item type is CODE", "type": "string" }, "boundItemIds": { "description": "the items which this item being bounded to", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "categoryPath": { "description": "Item category path", "type": "string" }, "clazz": { "description": "customized item clazz", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "description": { "description": "description info", "type": "string" }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "entitlementType": { "description": "Entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "ext": { "additionalProperties": { "type": "object" }, "description": "customized item properties", "type": "object" }, "features": { "description": "Features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "flexible": { "description": "whether flexible pricing applied, only applied if itemType is BUNDLE", "type": "boolean", "x-omitempty": false }, "fresh": { "description": "fresh", "type": "boolean", "x-omitempty": false }, "images": { "description": "images", "items": { "$ref": "#/definitions/Image" }, "type": "array" }, "inventoryConfig": { "$ref": "#/definitions/InventoryConfig", "description": "inventory config" }, "itemId": { "description": "Item id", "type": "string" }, "itemIds": { "description": "itemIds, should be empty if item type is not \"BUNDLE\"", "items": { "type": "string" }, "type": "array" }, "itemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "itemQty, the quantity of item in itemIds, default 1, should be empty if item type is not \"BUNDLE\"", "type": "object" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "language": { "description": "language", "type": "string" }, "listable": { "description": "Whether can be visible in Store for public user", "type": "boolean", "x-omitempty": false }, "localExt": { "additionalProperties": { "type": "object" }, "type": "object" }, "longDescription": { "description": "long description info", "type": "string" }, "lootBoxConfig": { "$ref": "#/definitions/LootBoxConfig", "description": "loot box config" }, "maxCount": { "description": "Max count, -1 means UNLIMITED, unset when itemType is CODE", "format": "int32", "type": "integer" }, "maxCountPerUser": { "description": "Max count per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "Name", "type": "string" }, "namespace": { "description": "Item namespace", "type": "string" }, "optionBoxConfig": { "$ref": "#/definitions/OptionBoxConfig", "description": "option box config" }, "purchasable": { "description": "Whether can be purchased", "type": "boolean", "x-omitempty": false }, "purchaseCondition": { "$ref": "#/definitions/PurchaseCondition", "description": "purchase condition" }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring for subscription" }, "region": { "description": "region", "type": "string" }, "regionData": { "description": "Region data", "items": { "$ref": "#/definitions/RegionDataItem" }, "type": "array" }, "saleConfig": { "$ref": "#/definitions/SaleConfig", "description": "sale config" }, "seasonType": { "description": "Season type, required while itemType is SEASON", "enum": [ "PASS", "TIER" ], "type": "string" }, "sectionExclusive": { "description": "whether it is sold in section only", "type": "boolean", "x-omitempty": false }, "sellable": { "description": "whether allow to sell back to store", "type": "boolean", "x-omitempty": false }, "sku": { "description": "Sku", "type": "string" }, "stackable": { "description": "Whether stack the CONSUMABLE entitlement", "type": "boolean", "x-omitempty": false }, "status": { "description": "Item status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "Tags", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "targetCurrencyCode": { "description": "Target currency code of coin item", "type": "string" }, "targetItemId": { "description": "[Going to deprecate]Target item id if this item is mapping from game namespace.", "type": "string" }, "targetNamespace": { "description": "The target namespace of a cross namespace item", "type": "string" }, "thumbnailUrl": { "description": "thumbnail url", "type": "string" }, "title": { "description": "title info", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "Item use count, required when entitlement type is consumable or itemType is COINS", "format": "int32", "type": "integer" } }, "required": [ "categoryPath", "createdAt", "entitlementType", "itemId", "itemType", "language", "name", "namespace", "region", "status", "title", "updatedAt" ], "type": "object" }, "ItemNaming": { "properties": { "categoryPath": { "description": "Category Path", "type": "string" }, "itemId": { "description": "Item id", "type": "string" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "name": { "description": "Name", "type": "string" }, "namespace": { "description": "Item namespace", "type": "string" }, "seasonType": { "description": "season type", "enum": [ "PASS", "TIER" ], "type": "string" }, "sku": { "description": "Sku", "type": "string" }, "status": { "description": "status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" } }, "required": [ "itemId", "itemType", "name", "namespace" ], "type": "object" }, "ItemPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/ItemInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "ItemPurchaseConditionValidateRequest": { "properties": { "itemIds": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "ItemPurchaseConditionValidateResult": { "properties": { "itemId": { "description": "item id", "type": "string" }, "purchasable": { "description": "purchasable", "type": "boolean", "x-omitempty": false }, "sku": { "description": "item sku", "type": "string" }, "validateDetails": { "description": "validate details: list of condition group validate result. index is same as purchase condition group.", "items": { "$ref": "#/definitions/ConditionGroupValidateResult" }, "type": "array" } }, "type": "object" }, "ItemReference": { "properties": { "codeRedemptionId": { "type": "string" }, "conditionName": { "type": "string" }, "dlcId": { "type": "string" }, "itemId": { "type": "string" }, "namespace": { "type": "string" }, "platform": { "type": "string" }, "platformProductId": { "type": "string" }, "referenceId": { "type": "string" }, "rewardCode": { "type": "string" }, "storeId": { "type": "string" } }, "type": "object" }, "ItemReturnRequest": { "properties": { "orderNo": { "description": "orderNo", "type": "string" } }, "required": [ "orderNo" ], "type": "object" }, "ItemRevocation": { "properties": { "creditRevocations": { "items": { "$ref": "#/definitions/CreditRevocation" }, "type": "array" }, "customRevocation": { "type": "object" }, "entitlementOrigin": { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "entitlementRevocations": { "items": { "$ref": "#/definitions/EntitlementRevocation" }, "type": "array" }, "itemId": { "type": "string" }, "itemRevocations": { "items": { "$ref": "#/definitions/ItemRevocation" }, "type": "array" }, "itemSku": { "type": "string" }, "itemType": { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "quantity": { "format": "int64", "type": "integer" }, "reason": { "type": "string" }, "skipped": { "type": "boolean", "x-omitempty": false }, "status": { "enum": [ "FAIL", "SUCCESS" ], "type": "string" }, "strategy": { "type": "string" } }, "type": "object" }, "ItemSnapshot": { "properties": { "appId": { "description": "App id, required when itemType is APP", "type": "string" }, "appType": { "description": "App type, required when itemType is APP", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "Base app Id", "type": "string" }, "boothName": { "description": "booth name to get tickets while it's item type is CODE", "type": "string" }, "createdAt": { "description": "createdAt", "format": "date-time", "type": "string", "x-nullable": true }, "description": { "description": "description", "type": "string" }, "entitlementType": { "description": "Entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "features": { "description": "supported features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "flexible": { "description": "whether flexible pricing applied, only applied if itemType is BUNDLE", "type": "boolean", "x-omitempty": false }, "inventoryConfig": { "$ref": "#/definitions/InventoryConfig", "description": "inventory config" }, "itemId": { "description": "Item id", "type": "string" }, "itemIds": { "description": "itemIds, should be empty if item type is not \"BUNDLE\"", "items": { "type": "string" }, "type": "array" }, "itemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "itemQty, the quantity of item in itemIds, default 1, should be empty if item type is not \"BUNDLE\"", "type": "object" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "language": { "description": "language", "type": "string" }, "listable": { "description": "Whether can be visible in Store for public user", "type": "boolean", "x-omitempty": false }, "lootBoxConfig": { "$ref": "#/definitions/LootBoxConfig", "description": "loot box config" }, "maxCount": { "description": "Max count, -1 means UNLIMITED, unset when itemType is CODE", "format": "int32", "type": "integer" }, "maxCountPerUser": { "description": "Max count per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "Name", "type": "string" }, "namespace": { "description": "Item's namespace", "type": "string" }, "optionBoxConfig": { "$ref": "#/definitions/OptionBoxConfig", "description": "option box config" }, "purchasable": { "description": "Whether can be purchased", "type": "boolean", "x-omitempty": false }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring for subscription" }, "region": { "description": "region", "type": "string" }, "regionDataItem": { "$ref": "#/definitions/RegionDataItem", "description": "Region data" }, "saleConfig": { "$ref": "#/definitions/SaleConfig", "description": "sale config" }, "seasonType": { "description": "Season type, required while itemType is SEASON", "enum": [ "PASS", "TIER" ], "type": "string" }, "sectionExclusive": { "description": "whether it is sold in section only", "type": "boolean", "x-omitempty": false }, "sellable": { "description": "whether allow to sell back to store", "type": "boolean", "x-omitempty": false }, "sku": { "description": "Sku", "type": "string" }, "stackable": { "description": "Whether stack the CONSUMABLE entitlement", "type": "boolean", "x-omitempty": false }, "targetCurrencyCode": { "description": "Target currency code of coin item", "type": "string" }, "targetItemId": { "description": "[Going to deprecate]Target item id of mapping from game namespace to publisher namespace", "type": "string" }, "targetNamespace": { "description": "The target namespace of a cross namespace item", "type": "string" }, "thumbnailUrl": { "description": "thumbnail url", "type": "string" }, "title": { "description": "title info", "type": "string" }, "updatedAt": { "description": "updatedAt", "format": "date-time", "type": "string", "x-nullable": true }, "useCount": { "description": "Item use count, required when entitlement type is consumable or itemType is COINS", "format": "int32", "type": "integer" } }, "required": [ "entitlementType", "itemId", "itemType", "language", "name", "namespace", "region", "title" ], "type": "object" }, "ItemTypeConfigCreate": { "description": "A DTO object for creating item type config API call.", "properties": { "clazz": { "description": "customized item clazz", "type": "string" }, "dryRun": { "description": "mock workflow while set true, default false", "type": "boolean", "x-omitempty": false }, "fulfillmentUrl": { "description": "url to send the fulfillment notification", "type": "string" }, "itemType": { "description": "Item Type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "purchaseConditionUrl": { "description": "url to check if the item is purchasable", "type": "string" } }, "required": [ "fulfillmentUrl", "itemType" ], "type": "object" }, "ItemTypeConfigInfo": { "properties": { "clazz": { "description": "customized item clazz", "type": "string" }, "createdAt": { "description": "created time", "format": "date-time", "type": "string", "x-nullable": false }, "dryRun": { "description": "mock workflow while set true, default false", "type": "boolean", "x-omitempty": false }, "fulfillmentUrl": { "description": "url to send the fulfillment notification", "type": "string" }, "id": { "description": "Item type config id", "type": "string" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "purchaseConditionUrl": { "description": "url to check if the item is purchasable", "type": "string" }, "updatedAt": { "description": "updated time", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "createdAt", "fulfillmentUrl", "id", "itemType", "updatedAt" ], "type": "object" }, "ItemTypeConfigUpdate": { "description": "A DTO object for updating item API call.", "properties": { "clazz": { "description": "customized item clazz", "type": "string" }, "dryRun": { "description": "mock workflow while set true, default false", "type": "boolean", "x-omitempty": false }, "fulfillmentUrl": { "description": "url to send the fulfillment notification", "type": "string" }, "purchaseConditionUrl": { "description": "url to check if the item is purchasable", "type": "string" } }, "required": [ "fulfillmentUrl" ], "type": "object" }, "ItemUpdate": { "description": "A DTO object for updating item API call.", "properties": { "appId": { "description": "appId, required if appType is present, alpha numeric, max length is 255", "type": "string" }, "appType": { "description": "appType", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "baseAppId, can set value of game appId if want to link to a game", "type": "string" }, "boothName": { "description": "booth name to get tickets while ItemType is CODE, Campaign or KeyGroup should located in targetNamespace if targetNamespace not null", "type": "string" }, "categoryPath": { "description": "Category Path, A path separated by \"/\", will not show in store if it set to blank, max length is 255", "example": "/games", "type": "string" }, "clazz": { "description": "customized item clazz", "type": "string" }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "entitlementType": { "description": "Entitlement Type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "ext": { "additionalProperties": { "type": "object" }, "description": "customized item properties", "type": "object" }, "features": { "description": "Features, allowed characters from a-zA-Z0-9_:- and start/end in alphanumeric with length range from 1 to 127", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "flexible": { "description": "whether flexible pricing applied, only applied if itemType is BUNDLE", "type": "boolean", "x-omitempty": false }, "images": { "description": "images", "items": { "$ref": "#/definitions/Image" }, "type": "array" }, "inventoryConfig": { "$ref": "#/definitions/InventoryConfig", "description": "inventory config" }, "itemIds": { "description": "itemIds, should be empty if item type is not \"BUNDLE\"", "items": { "type": "string" }, "type": "array" }, "itemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "itemQty, the quantity of item in itemIds, default 1, should be empty if item type is not \"BUNDLE\"", "type": "object" }, "itemType": { "description": "Item Type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "listable": { "description": "Whether can be visible in Store for public user", "type": "boolean", "x-omitempty": false }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "lootBoxConfig": { "$ref": "#/definitions/LootBoxConfig", "description": "loot box config, should be empty if item type is not \"LOOTBOX\"" }, "maxCount": { "description": "Max count, -1 means UNLIMITED, new value should \u003e= old value if both old value and new value is limited, unset when itemType is CODE", "format": "int32", "type": "integer" }, "maxCountPerUser": { "description": "Max count per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "Name", "type": "string" }, "optionBoxConfig": { "$ref": "#/definitions/OptionBoxConfig", "description": "option box config, should be empty if item type is not \"OPTIONBOX\"" }, "purchasable": { "description": "Whether can be purchased", "type": "boolean", "x-omitempty": false }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring for subscription" }, "regionData": { "additionalProperties": { "items": { "$ref": "#/definitions/RegionDataItemDTO" }, "type": "array" }, "description": "region data map, key is region, value is region data list", "type": "object" }, "saleConfig": { "$ref": "#/definitions/SaleConfig", "description": "sale config, required if sellable is true" }, "seasonType": { "description": "seasonType", "enum": [ "PASS", "TIER" ], "type": "string" }, "sectionExclusive": { "description": "Whether this item is sold in section only", "type": "boolean", "x-omitempty": false }, "sellable": { "description": "sellable, whether allow to sell back to store", "type": "boolean", "x-omitempty": false }, "sku": { "description": "sku, allowed characters from a-zA-Z0-9_:- and start/end in alphanumeric, max length is 127", "type": "string" }, "stackable": { "description": "Whether to stack the entitlement when entitlement type is \"CONSUMABLE\"", "type": "boolean", "x-omitempty": false }, "status": { "description": "status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "Tags, allowed characters from a-zA-Z0-9:_- with length range from 1 to 30, should start and end in upper/lowercase/number, an item has max 20 tags.", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "targetCurrencyCode": { "description": "target currency code, required if item type is \"COINS\"", "type": "string" }, "targetNamespace": { "description": "target namespace, require when sell a game's item on the publisher namespace", "type": "string" }, "thumbnailUrl": { "description": "thumbnail Url", "type": "string" }, "useCount": { "description": "Represent entitlement count when entitlement type is \"CONSUMABLE\", and represent coin count when itemType is \"COINS\"", "format": "int32", "type": "integer" } }, "required": [ "entitlementType", "itemType" ], "type": "object" }, "KeyGroupCreate": { "description": "A DTO object for creating KeyGroup API call.", "properties": { "description": { "description": "The description of the KeyGroup, max length is 1024 characters", "type": "string" }, "name": { "description": "The name of the KeyGroup, a-z0-9_ 120 max length", "type": "string" }, "status": { "description": "The status of the KeyGroup, default ACTIVE", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "The tags of the KeyGroup", "items": { "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" }, "KeyGroupDynamicInfo": { "properties": { "availableSaleCount": { "description": "The available sale count, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "quantity": { "description": "The total quantity of this key group has", "format": "int32", "type": "integer" }, "saleCount": { "description": "The sale count", "format": "int32", "type": "integer" } }, "required": [ "availableSaleCount", "quantity", "saleCount" ], "type": "object" }, "KeyGroupInfo": { "properties": { "boothName": { "description": "booth name", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "description": { "description": "description", "type": "string" }, "id": { "description": "id", "type": "string" }, "name": { "description": "name", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "status": { "description": "status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "tags", "items": { "type": "string" }, "type": "array" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "boothName", "createdAt", "id", "name", "namespace", "status", "updatedAt" ], "type": "object" }, "KeyGroupPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/KeyGroupInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "KeyGroupUpdate": { "description": "A DTO object for creating KeyGroup API call.", "properties": { "description": { "description": "The description of the KeyGroup, max length is 1024 characters", "type": "string" }, "name": { "description": "The name of the KeyGroup, a-z0-9_ 120 max length", "type": "string" }, "status": { "description": "The status of the KeyGroup", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "The tags of the KeyGroup", "items": { "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" }, "KeyInfo": { "properties": { "acquireOrderNo": { "description": "order No. that grant this key", "type": "string" }, "acquireUserId": { "description": "user Id who get this key", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "id": { "description": "key id", "type": "string" }, "keyFile": { "description": "key upload file", "type": "string" }, "keyGroupId": { "description": "key group id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "status": { "description": "status", "enum": [ "ACQUIRED", "ACTIVE" ], "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "value": { "description": "key value", "type": "string" } }, "required": [ "createdAt", "id", "keyFile", "keyGroupId", "namespace", "status", "updatedAt", "value" ], "type": "object" }, "KeyPagingSliceResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/KeyInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "ListViewInfo": { "properties": { "createdAt": { "description": "view created time", "format": "date-time", "type": "string", "x-nullable": false }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "name": { "description": "view name", "type": "string" }, "namespace": { "description": "view namespace", "type": "string" }, "updatedAt": { "description": "view updated time", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id", "type": "string" } }, "required": [ "createdAt", "displayOrder", "name", "namespace", "updatedAt", "viewId" ], "type": "object" }, "Localization": { "properties": { "description": { "description": "description info", "type": "string" }, "localExt": { "additionalProperties": { "type": "object" }, "type": "object" }, "longDescription": { "description": "long description info", "type": "string" }, "title": { "description": "title info", "type": "string" } }, "required": [ "title" ], "type": "object" }, "LootBoxConfig": { "properties": { "rewardCount": { "description": "reward count, default is 1", "format": "int32", "type": "integer" }, "rewards": { "description": "rewards", "items": { "$ref": "#/definitions/LootBoxReward" }, "type": "array" }, "rollFunction": { "description": "roll function", "enum": [ "CUSTOM", "DEFAULT" ], "type": "string" } }, "type": "object" }, "LootBoxPluginConfigInfo": { "properties": { "appConfig": { "$ref": "#/definitions/AppConfig", "description": "app config" }, "customConfig": { "$ref": "#/definitions/PublicCustomConfigInfo", "description": "custom config" }, "extendType": { "description": "extend type", "enum": [ "APP", "CUSTOM" ], "type": "string" }, "namespace": { "description": "namespace", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "LootBoxPluginConfigUpdate": { "properties": { "appConfig": { "$ref": "#/definitions/AppConfig", "description": "app config" }, "customConfig": { "$ref": "#/definitions/BaseCustomConfig", "description": "custom config" }, "extendType": { "description": "extend type", "enum": [ "APP", "CUSTOM" ], "type": "string" } }, "required": [ "extendType" ], "type": "object" }, "LootBoxReward": { "properties": { "lootBoxItems": { "description": "reward items, if type is PROBABILITY_GROUP, will random get one of items in it, if type is REWARD, will grant all items to user when roll this reward", "items": { "$ref": "#/definitions/BoxItem" }, "type": "array" }, "name": { "description": "reward name", "type": "string" }, "odds": { "description": "odds, automatic calculation based on weights.", "format": "double", "type": "number" }, "type": { "description": "reward type", "enum": [ "PROBABILITY_GROUP", "REWARD", "REWARD_GROUP" ], "type": "string" }, "weight": { "description": "reward weight", "format": "int32", "type": "integer" } }, "type": "object" }, "MockIAPReceipt": { "properties": { "itemIdentityType": { "description": "The item identity type", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "productId": { "description": "The product identifier of the item that was purchased.", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" }, "transactionId": { "description": "transactionId", "type": "string" }, "type": { "description": "The IAP type.", "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "type": "string" } }, "required": [ "productId", "type" ], "type": "object" }, "ModuleReference": { "properties": { "module": { "enum": [ "CAMPAIGN", "CHALLENGE_CONFIGURATIONS", "DLC_CONFIGURATION", "ENTITLEMENT", "ITEM", "ITEM_MAPPING", "REWARD_CONFIGURATION", "SEASON_PASS_CODE", "SEASON_PASS_REWARD", "SEASON_PASS_TIER", "SECTION" ], "type": "string" }, "references": { "items": { "$ref": "#/definitions/ItemReference" }, "type": "array" } }, "type": "object" }, "NeonPayConfig": { "description": "A DTO object for updating Neon Pay config.", "properties": { "apiKey": { "description": "api key", "type": "string" }, "webhookSecretKey": { "description": "webhook secret key", "type": "string" } }, "type": "object" }, "NotificationPagingSlicedResult": { "type": "object" }, "NotificationProcessResult": { "properties": { "code": { "type": "string" }, "customParam": { "type": "object" }, "severity": { "format": "int32", "type": "integer" }, "status": { "enum": [ "ERROR", "IGNORED", "PROCESSED", "WARN" ], "type": "string" } }, "type": "object" }, "OculusIAPConfigInfo": { "properties": { "appId": { "description": "oculus api app id", "type": "string" }, "appSecret": { "description": "oculus api app secret", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "webhookVerifyToken": { "description": "oculus webhook verify token", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "OculusIAPConfigRequest": { "properties": { "appId": { "description": "oculus api app id, don't allow white space and *", "type": "string" }, "appSecret": { "description": "oculus api app secret, don't allow white space and *", "type": "string" }, "webhookVerifyToken": { "description": "oculus webhook verify token, please refer this link: https://developers.meta.com/horizon/documentation/unity/ps-webhooks-getting-started", "type": "string" } }, "required": [ "appId" ], "type": "object" }, "OculusReconcileResult": { "properties": { "iapOrderStatus": { "description": "AGS In App Purchase order status", "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "type": "string" }, "itemIdentity": { "description": "AGS item identity", "type": "string" }, "itemIdentityType": { "description": "AGS item identity type", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "oculusItemSku": { "description": "Oculus item sku", "type": "string" }, "transactionId": { "description": "AGS transaction id", "type": "string" } }, "type": "object" }, "OculusSubscriptionSyncRequest": { "properties": { "skus": { "description": "Meta Quest Subscription, if pass an empty list or null, will fetch all of subscription sku which config in AGS subscription config.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "Operation": { "properties": { "creditPayload": { "$ref": "#/definitions/CreditPayload" }, "debitPayload": { "$ref": "#/definitions/DebitPayload" }, "fulFillItemPayload": { "$ref": "#/definitions/FulFillItemPayload" }, "resultId": { "type": "string" }, "revokeEntitlementPayload": { "$ref": "#/definitions/RevokeEntitlementPayload" }, "status": { "enum": [ "FAILED", "INIT", "SKIPPED", "SUCCESS" ], "type": "string" }, "statusReason": { "type": "string" }, "type": { "enum": [ "CREDIT_WALLET", "DEBIT_WALLET", "FULFILL_ITEM", "REVOKE_ENTITLEMENT" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "OperationRequest": { "description": "Represents a single operation request.", "properties": { "creditPayload": { "$ref": "#/definitions/CreditPayload" }, "debitPayload": { "$ref": "#/definitions/DebitPayload" }, "fulFillItemPayload": { "$ref": "#/definitions/FulFillItemPayload" }, "revokeEntitlementPayload": { "$ref": "#/definitions/RevokeEntitlementPayload" }, "type": { "enum": [ "CREDIT_WALLET", "DEBIT_WALLET", "FULFILL_ITEM", "REVOKE_ENTITLEMENT" ], "type": "string" } }, "type": "object" }, "OptionBoxConfig": { "description": "Option box config.", "properties": { "boxItems": { "description": "Option box items", "items": { "$ref": "#/definitions/BoxItem" }, "type": "array" } }, "type": "object" }, "Order": { "properties": { "chargebackReversedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "chargebackTime": { "format": "date-time", "type": "string", "x-nullable": true }, "charged": { "type": "boolean", "x-omitempty": false }, "chargedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "countItemId": { "type": "string" }, "countNamespace": { "type": "string" }, "countUserId": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "createdTime": { "format": "date-time", "type": "string", "x-nullable": true }, "creationOptions": { "$ref": "#/definitions/OrderCreationOptions" }, "currency": { "$ref": "#/definitions/CurrencySummary" }, "deduction": { "format": "int32", "type": "integer" }, "deductionDetails": { "items": { "$ref": "#/definitions/DeductionDetail" }, "type": "array" }, "discountedPrice": { "format": "int32", "type": "integer" }, "expireTime": { "format": "date-time", "type": "string", "x-nullable": true }, "ext": { "additionalProperties": { "type": "object" }, "type": "object" }, "finalPrice": { "format": "int32", "type": "integer" }, "free": { "type": "boolean", "x-omitempty": false }, "fulfilledTime": { "format": "date-time", "type": "string", "x-nullable": true }, "itemId": { "type": "string" }, "itemSnapshot": { "$ref": "#/definitions/ItemSnapshot" }, "language": { "type": "string" }, "namespace": { "type": "string" }, "orderBundleItemInfos": { "items": { "$ref": "#/definitions/OrderBundleItemInfo" }, "type": "array" }, "orderNo": { "type": "string" }, "paymentData": { "$ref": "#/definitions/PaymentData" }, "paymentMethod": { "type": "string" }, "paymentMethodFee": { "format": "int32", "type": "integer" }, "paymentOrderNo": { "type": "string" }, "paymentProvider": { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "paymentProviderFee": { "format": "int32", "type": "integer" }, "paymentRemainSeconds": { "format": "int32", "type": "integer" }, "paymentStationUrl": { "type": "string" }, "price": { "format": "int32", "type": "integer" }, "quantity": { "format": "int32", "type": "integer" }, "refundedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "region": { "type": "string" }, "returnUrl": { "type": "string" }, "rvn": { "format": "int32", "type": "integer" }, "salesTax": { "format": "int32", "type": "integer" }, "sandbox": { "type": "boolean", "x-omitempty": false }, "status": { "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CLOSED", "DELETED", "FULFILLED", "FULFILL_FAILED", "INIT", "REFUNDED", "REFUNDING", "REFUND_FAILED" ], "type": "string" }, "statusReason": { "type": "string" }, "subtotalPrice": { "format": "int32", "type": "integer" }, "tax": { "format": "int32", "type": "integer" }, "totalPrice": { "format": "int32", "type": "integer" }, "totalTax": { "format": "int32", "type": "integer" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "type": "string" }, "vat": { "format": "int32", "type": "integer" } }, "type": "object" }, "OrderBundleItemInfo": { "properties": { "discountedPrice": { "description": "current available discounted price per item", "format": "int32", "type": "integer" }, "itemId": { "description": "item id", "type": "string" }, "itemName": { "description": "item name", "type": "string" }, "itemSku": { "description": "item sku", "type": "string" }, "price": { "description": "current available price per item", "format": "int32", "type": "integer" }, "purchased": { "description": "Whether the item has been purchased in this order", "type": "boolean", "x-omitempty": false }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" } }, "required": [ "discountedPrice", "itemId", "itemName", "itemSku", "price" ], "type": "object" }, "OrderCreate": { "properties": { "currencyCode": { "description": "currency code, should match currency code in item region data", "type": "string" }, "discountCodes": { "description": "Discount codes, min size is 1, max size is 10notes: The same data will be auto merged, for example input discount code [111, 111] in request body, final discount code list should be 111", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "discountedPrice": { "description": "Discounted price of order, this should match (item_discounted_price * quantity) ifitem discounted price is available, otherwise it should equal to (item_price * quantity) if item is not flexible bundle, if item is flexible bundle, item discounted price should equal estimate discounted price.", "format": "int32", "type": "integer" }, "ext": { "additionalProperties": { "type": "object" }, "description": "extra field to store external order information", "type": "object" }, "itemId": { "description": "item id", "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "price": { "description": "Price of order, should match (item_price * quantity) if item is not flexible bundle, should use flexible estimate price if item is flexible bundle", "format": "int32", "type": "integer" }, "quantity": { "description": "Quantity of item, min is 1, and will default use 1 and ignore this quantity field if item is flexible bundle", "format": "int32", "type": "integer" }, "region": { "description": "country value from ISO countries", "type": "string" }, "returnUrl": { "description": "custom return url for real payment, user will be redirected to this url once payment is finished", "type": "string" }, "sectionId": { "description": "section Id, required if order consists of section item", "type": "string" } }, "required": [ "currencyCode", "discountedPrice", "itemId", "quantity" ], "type": "object" }, "OrderCreationOptions": { "description": "A DTO object for order creation options", "properties": { "skipPriceValidation": { "description": "skip price validation", "type": "boolean", "x-omitempty": false } }, "type": "object" }, "OrderDiscountPreviewRequest": { "properties": { "currencyCode": { "description": "currency code, should match currency code in item region data", "type": "string" }, "discountCodes": { "description": "Discount codes, min size is 1, max size is 10notes: The same data will be auto merged, for example input discount code [111, 111] in request body, final discount code list should be 111", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "discountedPrice": { "description": "Discounted price of order, this should match (item_discounted_price * quantity) if\" +\n \"item discounted price is available, otherwise it should equal to (item_price * quantity) if item is not flexible bundle, \" +\n \"if item is flexible bundle, item discounted price should equal estimate discounted price.", "format": "int32", "type": "integer" }, "itemId": { "description": "item id", "type": "string" }, "price": { "description": "Price of order, should match (item_price * quantity) if item is not flexible bundle, should use flexible estimate price if item is flexible bundle", "format": "int32", "type": "integer" }, "quantity": { "description": "Quantity of item, min is 1, and will default use 1 and ignore this quantity field if item is flexible bundle", "format": "int32", "type": "integer" } }, "required": [ "currencyCode", "discountedPrice", "itemId", "quantity" ], "type": "object" }, "OrderDiscountPreviewResponse": { "properties": { "deduction": { "description": "Total of deduction, Order final price should be discounted price - deduction.", "format": "int32", "type": "integer" }, "deductionDetails": { "description": "Deduction details, include every discount code actual deducted value", "items": { "$ref": "#/definitions/DeductionDetail" }, "type": "array" }, "discountedPrice": { "description": "Discounted price of order.", "format": "int32", "type": "integer" }, "finalPrice": { "description": "Final price.", "format": "int32", "type": "integer" }, "itemId": { "description": "item id", "type": "string" }, "price": { "description": "Price of order, should match (item_price * quantity) if item is not flexible bundle, should use flexible estimate price if item is flexible bundle", "format": "int32", "type": "integer" }, "quantity": { "description": "Quantity of item, min is 1, and will default use 1 and ignore this quantity field if item is flexible bundle", "format": "int32", "type": "integer" } }, "required": [ "deduction", "discountedPrice", "itemId", "quantity" ], "type": "object" }, "OrderGrantInfo": { "properties": { "credits": { "description": "Order credit list", "items": { "$ref": "#/definitions/CreditSummary" }, "type": "array" }, "entitlements": { "description": "Order entitlement list", "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" } }, "type": "object" }, "OrderHistoryInfo": { "properties": { "action": { "description": "The action of the order", "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CLOSE", "DELETED", "FULFILLED", "FULFILL_FAILED", "INIT", "REFUNDED", "REFUNDING", "REFUND_FAILED", "SET_STATUS" ], "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "description": "The namespace of this order", "type": "string" }, "operator": { "description": "The operator to this order", "type": "string" }, "orderNo": { "description": "The Order number", "type": "string" }, "reason": { "description": "The reason of this operation", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "The owner of the order", "type": "string" } }, "required": [ "action", "createdAt", "namespace", "operator", "orderNo", "updatedAt", "userId" ], "type": "object" }, "OrderInfo": { "properties": { "chargebackReversedTime": { "description": "The time of the order chargeback reversed", "format": "date-time", "type": "string", "x-nullable": true }, "chargebackTime": { "description": "The time of the order chargeback", "format": "date-time", "type": "string", "x-nullable": true }, "chargedTime": { "description": "The time of the order charged", "format": "date-time", "type": "string", "x-nullable": true }, "createdAt": { "description": "createdAt", "format": "date-time", "type": "string", "x-nullable": false }, "createdTime": { "description": "The time of the order created", "format": "date-time", "type": "string", "x-nullable": true }, "creationOptions": { "$ref": "#/definitions/OrderCreationOptions", "description": "The creation options of this order" }, "currency": { "$ref": "#/definitions/CurrencySummary", "description": "Order currency info" }, "deduction": { "description": "Total of deduction, Order final price should be discounted price - deduction.", "format": "int32", "type": "integer" }, "deductionDetails": { "description": "Deduction details, include every discount code actual deducted value", "items": { "$ref": "#/definitions/DeductionDetail" }, "type": "array" }, "discountedPrice": { "description": "Order discounted price", "format": "int32", "type": "integer" }, "expireTime": { "description": "payment expire time", "format": "date-time", "type": "string", "x-nullable": true }, "ext": { "additionalProperties": { "type": "object" }, "description": "extra field to store external order information", "type": "object" }, "fulfilledTime": { "description": "The time of the order fulfilled", "format": "date-time", "type": "string", "x-nullable": true }, "itemId": { "description": "Item id", "type": "string" }, "itemSnapshot": { "$ref": "#/definitions/ItemSnapshot", "description": "Item snapshot" }, "language": { "description": "Order created language", "type": "string" }, "namespace": { "description": "Order namespace", "type": "string" }, "orderBundleItemInfos": { "description": "order information of flexible bundle item price details, include item owned info.", "items": { "$ref": "#/definitions/OrderBundleItemInfo" }, "type": "array" }, "orderNo": { "description": "Order number", "type": "string" }, "paymentMethod": { "description": "Payment method", "type": "string" }, "paymentMethodFee": { "description": "Payment method fee", "format": "int32", "type": "integer" }, "paymentOrderNo": { "description": "Payment order number", "type": "string" }, "paymentProvider": { "description": "Payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "paymentProviderFee": { "description": "Payment provider fee", "format": "int32", "type": "integer" }, "paymentRemainSeconds": { "description": "payment remain seconds", "format": "int32", "type": "integer" }, "paymentStationUrl": { "description": "Payment url info", "type": "string" }, "price": { "description": "Order price", "format": "int32", "type": "integer" }, "quantity": { "description": "Order quantity", "format": "int32", "type": "integer" }, "refundedTime": { "description": "The time of the order refunded", "format": "date-time", "type": "string", "x-nullable": true }, "region": { "description": "Order created region", "type": "string" }, "salesTax": { "description": "Order sales tax", "format": "int32", "type": "integer" }, "sandbox": { "description": "isSandbox, indicate if order is sandbox", "type": "boolean", "x-omitempty": false }, "status": { "description": "Order status", "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CLOSED", "DELETED", "FULFILLED", "FULFILL_FAILED", "INIT", "REFUNDED", "REFUNDING", "REFUND_FAILED" ], "type": "string" }, "statusReason": { "description": "Order status reason", "type": "string" }, "subtotalPrice": { "description": "subtotal price", "format": "int32", "type": "integer" }, "tax": { "description": "Order total tax", "format": "int32", "type": "integer" }, "totalPrice": { "description": "total price", "format": "int32", "type": "integer" }, "totalTax": { "description": "total tax", "format": "int32", "type": "integer" }, "updatedAt": { "description": "updatedAt", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "User id", "type": "string" }, "vat": { "description": "Order VAT", "format": "int32", "type": "integer" } }, "required": [ "createdAt", "currency", "deduction", "discountedPrice", "itemId", "namespace", "orderNo", "paymentRemainSeconds", "price", "quantity", "sandbox", "status", "updatedAt", "userId" ], "type": "object" }, "OrderPagingResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/OrderInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" }, "total": { "format": "int64", "type": "integer" } }, "required": [ "data" ], "type": "object" }, "OrderPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/OrderInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "OrderRefundCreate": { "properties": { "description": { "description": "order refund description", "type": "string" } }, "required": [ "description" ], "type": "object" }, "OrderStatistics": { "properties": { "statusCount": { "additionalProperties": { "format": "int64", "type": "integer" }, "description": "Status count", "type": "object" }, "total": { "description": "Total", "format": "int64", "type": "integer" } }, "required": [ "statusCount", "total" ], "type": "object" }, "OrderSummary": { "properties": { "currency": { "$ref": "#/definitions/CurrencySummary", "description": "purchase currency" }, "ext": { "additionalProperties": { "type": "object" }, "description": "order custom properties", "type": "object" }, "free": { "type": "boolean", "x-omitempty": false } }, "type": "object" }, "OrderSyncResult": { "properties": { "nextEvaluatedKey": { "type": "string" }, "orders": { "items": { "$ref": "#/definitions/Order" }, "type": "array" } }, "type": "object" }, "OrderUpdate": { "description": "A DTO object for updating order API call.", "properties": { "status": { "description": "status", "enum": [ "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CLOSED", "DELETED", "FULFILLED", "FULFILL_FAILED", "INIT", "REFUNDED", "REFUNDING", "REFUND_FAILED" ], "type": "string" }, "statusReason": { "description": "update status reason", "type": "string" } }, "required": [ "status", "statusReason" ], "type": "object" }, "Ownership": { "properties": { "owned": { "description": "ownership", "type": "boolean", "x-omitempty": false } }, "required": [ "owned" ], "type": "object" }, "OwnershipToken": { "properties": { "ownershipToken": { "type": "string" } }, "type": "object" }, "Paging": { "properties": { "next": { "type": "string" }, "previous": { "type": "string" } }, "type": "object" }, "PayPalConfig": { "description": "A DTO object for updating PayPal config.", "properties": { "clientID": { "description": "client id", "type": "string" }, "clientSecret": { "description": "client secret, max length is 4096", "type": "string" }, "returnUrl": { "description": "return url, max length is 2048", "type": "string" }, "webHookId": { "description": "web hook id", "type": "string" } }, "type": "object" }, "PaymentAccount": { "properties": { "id": { "description": "Payment account id", "type": "string" }, "name": { "description": "Payment account name, generally mask credit card number", "type": "string" }, "type": { "description": "Payment account type", "enum": [ "card", "paypal" ], "type": "string" } }, "required": [ "id", "name", "type" ], "type": "object" }, "PaymentCallbackConfigInfo": { "properties": { "dryRun": { "description": "mock workflow while set true, default false", "type": "boolean", "x-omitempty": false }, "namespace": { "description": "namespace", "type": "string" }, "notifyUrl": { "description": "notify url for ECommerce payment notification", "type": "string" }, "privateKey": { "description": "private key to encode/decode ECommerce payload", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "PaymentCallbackConfigUpdate": { "properties": { "dryRun": { "description": "mock workflow while set true, default false", "type": "boolean", "x-omitempty": false }, "notifyUrl": { "description": "notify url for ECommerce payment notification", "type": "string" }, "privateKey": { "description": "private key to encode/decode ECommerce payload", "type": "string" } }, "type": "object" }, "PaymentData": { "properties": { "discountAmount": { "format": "int32", "type": "integer" }, "discountCode": { "type": "string" }, "subtotalPrice": { "format": "int32", "type": "integer" }, "tax": { "format": "int32", "type": "integer" }, "totalPrice": { "format": "int32", "type": "integer" } }, "type": "object" }, "PaymentDomainWhitelistConfigEdit": { "description": "A DTO object for updating payment domain whitelist config", "properties": { "domains": { "description": "domains", "items": { "type": "string" }, "type": "array" } }, "required": [ "domains" ], "type": "object" }, "PaymentDomainWhitelistConfigInfo": { "properties": { "domains": { "description": "domains", "items": { "type": "string" }, "type": "array" }, "namespace": { "description": "namespace", "type": "string" } }, "required": [ "domains", "namespace" ], "type": "object" }, "PaymentMerchantConfigInfo": { "properties": { "adyenConfig": { "$ref": "#/definitions/AdyenConfig", "description": "adyenConfig" }, "adyenSandboxConfig": { "$ref": "#/definitions/AdyenConfig", "description": "adyenSandboxConfig" }, "aliPayConfig": { "$ref": "#/definitions/AliPayConfig", "description": "aliPayConfig" }, "aliPaySandboxConfig": { "$ref": "#/definitions/AliPayConfig", "description": "aliPaySandboxConfig" }, "checkoutConfig": { "$ref": "#/definitions/CheckoutConfig", "description": "checkoutConfig" }, "checkoutSandboxConfig": { "$ref": "#/definitions/CheckoutConfig", "description": "checkoutSandboxConfig" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "id": { "description": "id", "type": "string" }, "neonPayConfig": { "$ref": "#/definitions/NeonPayConfig", "description": "neonPayConfig" }, "neonPaySandboxConfig": { "$ref": "#/definitions/NeonPayConfig", "description": "neonPaySandboxConfig" }, "payPalConfig": { "$ref": "#/definitions/PayPalConfig", "description": "payPalConfig" }, "payPalSandboxConfig": { "$ref": "#/definitions/PayPalConfig", "description": "payPalSandboxConfig" }, "stripeConfig": { "$ref": "#/definitions/StripeConfig", "description": "stripeConfig" }, "stripeSandboxConfig": { "$ref": "#/definitions/StripeConfig", "description": "stripeSandboxConfig" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "wxPayConfig": { "$ref": "#/definitions/WxPayConfigInfo", "description": "wxPayConfig" }, "xsollaConfig": { "$ref": "#/definitions/XsollaConfig", "description": "xsollaConfig" }, "xsollaPaywallConfig": { "$ref": "#/definitions/XsollaPaywallConfig", "description": "xsollaPaywallConfig" } }, "required": [ "createdAt", "id", "updatedAt" ], "type": "object" }, "PaymentMethod": { "properties": { "name": { "description": "name", "type": "string" }, "paymentProvider": { "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" } }, "required": [ "name", "paymentProvider" ], "type": "object" }, "PaymentNotificationInfo": { "properties": { "createdAt": { "description": "createdAt", "format": "date-time", "type": "string", "x-nullable": false }, "externalId": { "description": "external id", "type": "string" }, "id": { "description": "id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "notification": { "description": "notification payload", "type": "object" }, "notificationSource": { "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "notificationType": { "description": "notification type", "type": "string" }, "paymentOrderNo": { "description": "payment order No", "type": "string" }, "status": { "description": "status", "enum": [ "ERROR", "IGNORED", "PROCESSED", "WARN" ], "type": "string" }, "statusReason": { "description": "status reason", "type": "string" }, "updatedAt": { "description": "updatedAt", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "createdAt", "id", "namespace", "notification", "notificationSource", "notificationType", "paymentOrderNo", "status", "updatedAt" ], "type": "object" }, "PaymentNotificationPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/PaymentNotificationInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "PaymentOrder": { "properties": { "authorisedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "channel": { "enum": [ "EXTERNAL", "INTERNAL" ], "type": "string" }, "chargebackReversedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "chargebackTime": { "format": "date-time", "type": "string", "x-nullable": true }, "chargedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "charging": { "type": "boolean", "x-omitempty": false }, "checkoutUrl": { "type": "string" }, "checkoutUrlExpiredAt": { "format": "date-time", "type": "string", "x-nullable": true }, "checkoutUrlValid": { "type": "boolean", "x-omitempty": false }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "createdTime": { "format": "date-time", "type": "string", "x-nullable": true }, "currency": { "$ref": "#/definitions/CurrencySummary" }, "customParameters": { "additionalProperties": { "type": "object" }, "type": "object" }, "description": { "type": "string" }, "extOrderNo": { "type": "string" }, "extUserId": { "type": "string" }, "itemType": { "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "language": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "namespace": { "type": "string" }, "neonPayConfig": { "$ref": "#/definitions/PaymentOrderNeonPayConfig" }, "notifyUrl": { "type": "string" }, "omitNotification": { "type": "boolean", "x-omitempty": false }, "paymentData": { "$ref": "#/definitions/PaymentData" }, "paymentMethod": { "type": "string" }, "paymentMethodFee": { "format": "int32", "type": "integer" }, "paymentOrderNo": { "type": "string" }, "paymentProvider": { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "paymentProviderFee": { "format": "int32", "type": "integer" }, "paymentStationUrl": { "type": "string" }, "platform": { "type": "string" }, "price": { "format": "int32", "type": "integer" }, "recurringPaymentOrderNo": { "type": "string" }, "refundedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "region": { "type": "string" }, "returnUrl": { "type": "string" }, "rvn": { "format": "int32", "type": "integer" }, "salesTax": { "format": "int32", "type": "integer" }, "sandbox": { "type": "boolean", "x-omitempty": false }, "sku": { "type": "string" }, "state": { "type": "string" }, "status": { "enum": [ "AUTHORISED", "AUTHORISE_FAILED", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CHARGE_FAILED", "DELETED", "INIT", "NOTIFICATION_OF_CHARGEBACK", "REFUNDED", "REFUNDING", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "type": "string" }, "statusReason": { "type": "string" }, "subscriptionId": { "type": "string" }, "subtotalPrice": { "format": "int32", "type": "integer" }, "targetNamespace": { "type": "string" }, "targetUserId": { "type": "string" }, "tax": { "format": "int32", "type": "integer" }, "title": { "type": "string" }, "totalPrice": { "format": "int32", "type": "integer" }, "totalTax": { "format": "int32", "type": "integer" }, "transactions": { "items": { "$ref": "#/definitions/Transaction" }, "type": "array" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "type": "string" }, "vat": { "format": "int32", "type": "integer" }, "zipCode": { "type": "string" } }, "type": "object" }, "PaymentOrderChargeRequest": { "properties": { "extTxId": { "description": "external transaction id", "type": "string" }, "paymentMethod": { "description": "payment method", "type": "string" }, "paymentProvider": { "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" } }, "required": [ "paymentProvider" ], "type": "object" }, "PaymentOrderChargeStatus": { "properties": { "charging": { "type": "boolean", "x-omitempty": false }, "status": { "enum": [ "AUTHORISED", "AUTHORISE_FAILED", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CHARGE_FAILED", "DELETED", "INIT", "NOTIFICATION_OF_CHARGEBACK", "REFUNDED", "REFUNDING", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "type": "string" } }, "type": "object" }, "PaymentOrderCreate": { "properties": { "currencyCode": { "description": "currency code, default is USD", "type": "string" }, "currencyNamespace": { "description": "currency namespace, default is publisher namespace", "type": "string" }, "customParameters": { "additionalProperties": { "type": "object" }, "description": "custom parameters", "type": "object" }, "description": { "description": "Order desc, max length 2000", "type": "string" }, "extOrderNo": { "description": "External order id", "type": "string" }, "extUserId": { "description": "optional, external user id, can be the character id", "type": "string" }, "itemType": { "description": "item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "description": "metadata", "type": "object" }, "notifyUrl": { "description": "custom notify url for real payment, send notification to this url once payment action is finished", "type": "string" }, "omitNotification": { "description": "TEST PURPOSE, if set it will not send async notification to the API invoker, only can set true while this payment is sandbox", "type": "boolean", "x-omitempty": false }, "platform": { "description": "platform", "type": "string" }, "price": { "description": "Price of order", "format": "int32", "type": "integer" }, "recurringPaymentOrderNo": { "description": "recurring payment order which has recurring token, will do recurring payment if present, otherwise start normal payment flow", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" }, "returnUrl": { "description": "custom return url for real payment, user will be redirected to this url once payment is finished", "type": "string" }, "sandbox": { "description": "TEST PURPOSE, sandbox(Active in real currency mode), default is false", "type": "boolean", "x-omitempty": false }, "sku": { "description": "optional, unique identity for the item", "type": "string" }, "subscriptionId": { "description": "subscriptionId, payment token will be saved for recurring payment", "type": "string" }, "title": { "description": "Order title", "type": "string" } }, "required": [ "description", "extOrderNo", "price", "title" ], "type": "object" }, "PaymentOrderCreateResult": { "properties": { "createdTime": { "description": "The time of the order created", "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "description": "Payment order namespace", "type": "string" }, "paymentOrderNo": { "description": "Payment order number", "type": "string" }, "paymentStationUrl": { "description": "Payment url", "type": "string" }, "status": { "description": "Payment order status", "enum": [ "AUTHORISED", "AUTHORISE_FAILED", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CHARGE_FAILED", "DELETED", "INIT", "NOTIFICATION_OF_CHARGEBACK", "REFUNDED", "REFUNDING", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "type": "string" }, "targetNamespace": { "description": "Game namespace", "type": "string" }, "targetUserId": { "description": "User id in game namespace", "type": "string" } }, "required": [ "createdTime", "namespace", "paymentOrderNo", "status" ], "type": "object" }, "PaymentOrderDetails": { "properties": { "charging": { "description": "charging", "type": "boolean", "x-omitempty": false }, "currencyCode": { "description": "currency code", "type": "string" }, "currencySymbol": { "description": "currency symbol", "type": "string" }, "description": { "description": "Order description", "type": "string" }, "displayName": { "description": "Payment user display name", "type": "string" }, "price": { "description": "Payment order price", "type": "string" }, "region": { "description": "Payment user region", "type": "string" }, "sandbox": { "description": "isSandbox, indicate if order is sandbox", "type": "boolean", "x-omitempty": false }, "title": { "description": "Order title", "type": "string" } }, "required": [ "charging", "currencyCode", "currencySymbol", "price", "sandbox", "title" ], "type": "object" }, "PaymentOrderInfo": { "properties": { "authorisedTime": { "description": "The time of the order authorised", "format": "date-time", "type": "string", "x-nullable": true }, "channel": { "description": "Payment order channel: EXTERNAL or INTERNAL", "enum": [ "EXTERNAL", "INTERNAL" ], "type": "string" }, "chargebackReversedTime": { "description": "The time of the order chargeback reversed time", "format": "date-time", "type": "string", "x-nullable": true }, "chargebackTime": { "description": "The time of the order chargeback time", "format": "date-time", "type": "string", "x-nullable": true }, "chargedTime": { "description": "The time of the order charged", "format": "date-time", "type": "string", "x-nullable": true }, "charging": { "description": "if charging is true, means user have finished transaction, platform is waiting for payment notification", "type": "boolean", "x-omitempty": false }, "createdAt": { "description": "createdAt", "format": "date-time", "type": "string", "x-nullable": false }, "createdTime": { "description": "The time of the order created", "format": "date-time", "type": "string", "x-nullable": true }, "currency": { "$ref": "#/definitions/CurrencySummary", "description": "Payment order currency info" }, "customParameters": { "additionalProperties": { "type": "object" }, "description": "User custom parameters", "type": "object" }, "description": { "description": "Order description", "type": "string" }, "extOrderNo": { "description": "External order number", "type": "string" }, "extUserId": { "description": "optional, external user id, can be the character id", "type": "string" }, "itemType": { "description": "Order item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "language": { "description": "Payment user language", "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "description": "metadata", "type": "object" }, "namespace": { "description": "Payment order namespace", "type": "string" }, "notifyUrl": { "description": "The notify url if customized", "type": "string" }, "omitNotification": { "description": "TEST PURPOSE, if set it will not send async notification to the API invoker, only can set true while this payment is sandbox", "type": "boolean", "x-omitempty": false }, "paymentMethod": { "description": "Payment method", "type": "string" }, "paymentMethodFee": { "description": "Payment method fee", "format": "int32", "type": "integer" }, "paymentOrderNo": { "description": "Payment order number", "type": "string" }, "paymentProvider": { "description": "Payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "paymentProviderFee": { "description": "Payment provider fee", "format": "int32", "type": "integer" }, "paymentStationUrl": { "description": "Payment url", "type": "string" }, "price": { "description": "Payment order price", "format": "int32", "type": "integer" }, "recurringPaymentOrderNo": { "description": "recurring payment order which has recurring token, will do recurring payment if present, otherwise start normal payment flow", "type": "string" }, "refundedTime": { "description": "The time of the order refunded", "format": "date-time", "type": "string", "x-nullable": true }, "region": { "description": "Payment user region", "type": "string" }, "returnUrl": { "description": "The return url if customized", "type": "string" }, "salesTax": { "description": "Payment order sales tax", "format": "int32", "type": "integer" }, "sandbox": { "description": "isSandbox, indicate if order is sandbox", "type": "boolean", "x-omitempty": false }, "sku": { "description": "optional, unique identity for the item", "type": "string" }, "status": { "description": "Payment order status", "enum": [ "AUTHORISED", "AUTHORISE_FAILED", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CHARGE_FAILED", "DELETED", "INIT", "NOTIFICATION_OF_CHARGEBACK", "REFUNDED", "REFUNDING", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "type": "string" }, "statusReason": { "description": "Payment order status reason", "type": "string" }, "subscriptionId": { "description": "subscriptionId, payment token will be saved for recurring payment", "type": "string" }, "subtotalPrice": { "description": "subtotal price", "format": "int32", "type": "integer" }, "targetNamespace": { "description": "The game namespace if it's an external in-game-purchase that resides in publisher namespace", "type": "string" }, "targetUserId": { "description": "The user id in game namespace if it's an external in-game-purchase that resides in publisher namespace", "type": "string" }, "tax": { "description": "Payment total tax", "format": "int32", "type": "integer" }, "title": { "description": "Order title", "type": "string" }, "totalPrice": { "description": "total price", "format": "int32", "type": "integer" }, "totalTax": { "description": "total tax", "format": "int32", "type": "integer" }, "transactions": { "description": "Payment order transactions", "items": { "$ref": "#/definitions/Transaction" }, "type": "array" }, "updatedAt": { "description": "updatedAt", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "User id", "type": "string" }, "vat": { "description": "Payment order VAT", "format": "int32", "type": "integer" } }, "required": [ "channel", "createdAt", "currency", "extOrderNo", "namespace", "paymentOrderNo", "price", "sandbox", "status", "title", "updatedAt", "userId" ], "type": "object" }, "PaymentOrderNeonPayConfig": { "properties": { "cancelUrl": { "description": "cancelUrl", "type": "string" }, "successUrl": { "description": "successUrl", "type": "string" } }, "required": [ "cancelUrl", "successUrl" ], "type": "object" }, "PaymentOrderNotifySimulation": { "properties": { "amount": { "description": "amount", "format": "int32", "type": "integer" }, "currencyCode": { "description": "currency code", "type": "string" }, "notifyType": { "description": "notify type", "enum": [ "CHARGE", "REFUND" ], "type": "string" }, "paymentProvider": { "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "salesTax": { "description": "salesTax for xsolla", "format": "int32", "type": "integer" }, "vat": { "description": "vat for xsolla", "format": "int32", "type": "integer" } }, "required": [ "currencyCode", "notifyType", "paymentProvider" ], "type": "object" }, "PaymentOrderPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/PaymentOrderInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "PaymentOrderPaidResult": { "properties": { "charging": { "description": "charging", "type": "boolean", "x-omitempty": false }, "success": { "description": "success", "type": "boolean", "x-omitempty": false } }, "required": [ "charging", "success" ], "type": "object" }, "PaymentOrderRefund": { "properties": { "description": { "description": "order refund description", "type": "string" } }, "required": [ "description" ], "type": "object" }, "PaymentOrderRefundResult": { "properties": { "createdTime": { "description": "The time of the order created", "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "description": "Payment order namespace", "type": "string" }, "paymentOrderNo": { "description": "Payment order number", "type": "string" }, "refundedTime": { "description": "The time of the order refunded", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "Payment order status", "enum": [ "AUTHORISED", "AUTHORISE_FAILED", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CHARGE_FAILED", "DELETED", "INIT", "NOTIFICATION_OF_CHARGEBACK", "REFUNDED", "REFUNDING", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "type": "string" }, "targetNamespace": { "description": "Game namespace", "type": "string" }, "targetUserId": { "description": "User id in game namespace", "type": "string" } }, "required": [ "createdTime", "namespace", "paymentOrderNo", "status" ], "type": "object" }, "PaymentOrderSyncResult": { "properties": { "nextEvaluatedKey": { "type": "string" }, "paymentOrders": { "items": { "$ref": "#/definitions/PaymentOrder" }, "type": "array" } }, "type": "object" }, "PaymentProcessResult": { "properties": { "pending": { "description": "payment request process is pending", "type": "boolean", "x-omitempty": false }, "reason": { "description": "failed reason", "type": "string" }, "redirectUrl": { "description": "redirect url, exists when pending is true", "type": "string" }, "success": { "description": "payment request process result", "type": "boolean", "x-omitempty": false } }, "required": [ "pending", "success" ], "type": "object" }, "PaymentProviderConfigEdit": { "description": "A DTO object for creating/updating payment provider config", "properties": { "aggregate": { "description": "aggregate payment provider, allow empty value", "enum": [ "ADYEN", "CHECKOUT", "NEONPAY", "STRIPE", "XSOLLA" ], "type": "string" }, "namespace": { "description": "namespace, * indicates all namespace", "type": "string" }, "region": { "description": "region, * indicates all regions", "type": "string" }, "sandboxTaxJarApiToken": { "description": "sandbox taxjar api token", "type": "string" }, "specials": { "description": "special payment providers = ['ALIPAY', 'WXPAY'], allow empty value", "items": { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "type": "array" }, "taxJarApiToken": { "description": "taxjar api token, required when taxJarEnabled=true and useGlobalTaxJarApiToken=false", "type": "string" }, "taxJarEnabled": { "description": "taxjar api integration enable", "type": "boolean", "x-omitempty": false }, "useGlobalTaxJarApiToken": { "description": "only works when taxJarEnabled=true, and if useGlobalTaxJarApiToken is true, we will reset the taxJarApiToken as null", "type": "boolean", "x-omitempty": false } }, "required": [ "namespace", "region" ], "type": "object" }, "PaymentProviderConfigInfo": { "properties": { "aggregate": { "description": "aggregate payment provider, allow empty value", "enum": [ "ADYEN", "CHECKOUT", "NEONPAY", "STRIPE", "XSOLLA" ], "type": "string" }, "id": { "description": "id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "paymentMerchantConfigId": { "description": "paymentMerchantConfigId", "type": "string" }, "region": { "description": "region", "type": "string" }, "sandboxTaxJarApiToken": { "description": "sandbox taxjar api token", "type": "string" }, "specials": { "description": "special payment providers = ['ALIPAY', 'WXPAY'], allow empty value", "items": { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "type": "array" }, "taxJarApiToken": { "description": "taxjar api token, required when taxJarEnabled=true and useGlobalTaxJarApiToken=false", "type": "string" }, "taxJarEnabled": { "description": "taxjar integration enabled", "type": "boolean", "x-omitempty": false }, "useGlobalTaxJarApiToken": { "description": "if use global taxjar token", "type": "boolean", "x-omitempty": false } }, "required": [ "id", "namespace", "region" ], "type": "object" }, "PaymentProviderConfigPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/PaymentProviderConfigInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "PaymentRequest": { "description": "A DTO for wallet's payment", "properties": { "amount": { "description": "amount", "format": "int64", "minimum": 0, "type": "integer" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "additional fulfillment information", "type": "object" }, "walletPlatform": { "description": "wallet platform, base on platform wallet rule to payment wallet", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "Xbox" ], "type": "string" } }, "required": [ "amount" ], "type": "object" }, "PaymentTaxConfigEdit": { "description": "A DTO object for updating payment tax config", "properties": { "sandboxTaxJarApiToken": { "description": "sandbox taxJar API token", "type": "string" }, "taxJarApiToken": { "description": "taxJar API token", "type": "string" }, "taxJarEnabled": { "description": "if taxJar integration is enabled", "type": "boolean", "x-omitempty": false }, "taxJarProductCodesMapping": { "additionalProperties": { "type": "string" }, "description": "taxJar product codes mappings, allow item types: APP, COINS, INGAMEITEM, BUNDLE, CODE, SUBSCRIPTION", "type": "object" } }, "type": "object" }, "PaymentTaxConfigInfo": { "properties": { "sandboxTaxJarApiToken": { "description": "sandbox taxJar API token", "type": "string" }, "taxJarApiToken": { "description": "taxJar API token", "type": "string" }, "taxJarEnabled": { "description": "if taxJar integration is enabled", "type": "boolean", "x-omitempty": false }, "taxJarProductCodesMapping": { "additionalProperties": { "type": "string" }, "description": "taxJar product codes mappings", "type": "object" } }, "type": "object" }, "PaymentToken": { "properties": { "token": { "description": "payment token(for checkout.com, this is card token)", "type": "string" } }, "type": "object" }, "PaymentUrl": { "properties": { "paymentProvider": { "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "paymentType": { "description": "payment type", "enum": [ "LINK", "QR_CODE" ], "type": "string" }, "paymentUrl": { "description": "payment url", "type": "string" }, "returnUrl": { "description": "return url", "type": "string" }, "sessionData": { "description": "adyen session data", "type": "string" }, "sessionId": { "description": "adyen session id", "type": "string" } }, "required": [ "paymentProvider", "paymentType" ], "type": "object" }, "PaymentUrlCreate": { "properties": { "neonPayConfig": { "$ref": "#/definitions/PaymentOrderNeonPayConfig", "description": "neonPayConfig" }, "paymentOrderNo": { "description": "payment order number", "type": "string" }, "paymentProvider": { "description": "payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "returnUrl": { "description": "returnUrl", "type": "string" }, "ui": { "description": "ui, custom json string, ignore if payment provider not support or invalid setting.", "example": "{\"theme\":\"dark\",\"size\":\"medium\",\"version\":\"desktop\",\"desktop\":{\"header\":{\"close_button\": false}}}", "type": "string" }, "zipCode": { "description": "payment zipCode", "type": "string" } }, "required": [ "paymentOrderNo", "paymentProvider" ], "type": "object" }, "Permission": { "properties": { "action": { "format": "int32", "type": "integer" }, "resource": { "type": "string" } }, "type": "object" }, "PlatformAccountClosureHistoryInfo": { "properties": { "entitlements": { "description": "entitlements", "items": { "$ref": "#/definitions/SimpleEntitlement" }, "type": "array" }, "id": { "description": "history id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "platform": { "description": "3rd party platform", "type": "string" }, "progression": { "description": "history progression", "enum": [ "IN_PROGRESS", "SUCCESS" ], "type": "string" }, "userDlcS": { "description": "user dlcs", "items": { "$ref": "#/definitions/SimpleUserDLC" }, "type": "array" }, "userId": { "description": "user id", "type": "string" }, "wallets": { "description": "wallets", "items": { "$ref": "#/definitions/SimpleWallet" }, "type": "array" } }, "required": [ "id", "namespace", "platform", "progression", "userId" ], "type": "object" }, "PlatformDLCConfigInfo": { "properties": { "data": { "items": { "$ref": "#/definitions/PlatformDlcEntry" }, "type": "array" } }, "type": "object" }, "PlatformDLCConfigUpdate": { "properties": { "data": { "description": "platform dlc config list", "items": { "$ref": "#/definitions/PlatformDlcEntry" }, "type": "array" } }, "type": "object" }, "PlatformDlcEntry": { "properties": { "platform": { "description": "platform: PSN, STEAM, XBOX, EPICGAMES, OCULUS", "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "type": "string" }, "platformDlcIdMap": { "additionalProperties": { "type": "string" }, "description": "key is platform product id, value is dlc id", "type": "object" } }, "type": "object" }, "PlatformOwnership": { "properties": { "owned": { "description": "ownership", "type": "boolean", "x-omitempty": false } }, "required": [ "owned" ], "type": "object" }, "PlatformReward": { "properties": { "currency": { "$ref": "#/definitions/PlatformRewardCurrency", "description": "required if type is CURRENCY" }, "item": { "$ref": "#/definitions/PlatformRewardItem", "description": "required if type is ITEM, can be fulfilled by itemId or itemSku" }, "quantity": { "description": "quantity if type is ITEM, amount if type is CURRENCY", "format": "int32", "type": "integer" }, "type": { "description": "reward type", "enum": [ "CURRENCY", "ITEM" ], "type": "string" } }, "type": "object" }, "PlatformRewardCurrency": { "properties": { "currencyCode": { "description": "currency code, alphabet uppercase", "type": "string" }, "namespace": { "description": "namespace, allowed values: game namespace or publisher namespace", "type": "string" } }, "required": [ "currencyCode", "namespace" ], "type": "object" }, "PlatformRewardItem": { "properties": { "itemId": { "type": "string" }, "itemName": { "type": "string" }, "itemSku": { "type": "string" }, "itemType": { "type": "string" } }, "type": "object" }, "PlatformSubscribeRequest": { "properties": { "grantDays": { "description": "grant days", "format": "int32", "type": "integer" }, "itemId": { "description": "subscription item id", "type": "string" }, "language": { "description": "language", "type": "string" }, "reason": { "description": "subscribe reason", "type": "string" }, "region": { "description": "region", "type": "string" }, "source": { "description": "source", "type": "string" } }, "required": [ "grantDays", "itemId" ], "type": "object" }, "PlatformWallet": { "properties": { "balance": { "description": "total balance, include effective time-limited balance", "format": "int64", "type": "integer" }, "currencyCode": { "description": "currency code", "type": "string" }, "currencySymbol": { "description": "currency symbol", "type": "string" }, "id": { "type": "string" }, "namespace": { "description": "platform wallet namespace", "type": "string" }, "status": { "description": "status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "transactionId": { "description": "transaction id", "type": "string" }, "userId": { "description": "user id", "type": "string" }, "walletInfos": { "description": "wallets balances info", "items": { "$ref": "#/definitions/WalletInfo" }, "type": "array" }, "walletStatus": { "description": "wallet status will be deprecated in the feature, pls use status field.", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" } }, "required": [ "balance", "currencyCode", "currencySymbol", "namespace", "userId" ], "type": "object" }, "PlatformWalletConfigInfo": { "properties": { "allowedBalanceOrigins": { "description": "allowed balance origin, sorted list", "items": { "type": "string" }, "type": "array" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": true }, "id": { "description": "config id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "platform": { "description": "platform", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": true } }, "required": [ "allowedBalanceOrigins", "namespace", "platform" ], "type": "object" }, "PlatformWalletConfigUpdate": { "description": "A DTO object for updating item API call.", "properties": { "allowedBalanceOrigins": { "items": { "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "type": "array" } }, "type": "object" }, "PlayStationDLCSyncMultiServiceLabelsRequest": { "properties": { "serviceLabels": { "description": "service labels", "items": { "format": "int32", "type": "integer" }, "type": "array", "uniqueItems": true } }, "type": "object" }, "PlayStationDLCSyncRequest": { "properties": { "serviceLabel": { "description": "service label", "format": "int32", "type": "integer" } }, "type": "object" }, "PlayStationIAPConfigInfo": { "properties": { "backOfficeServerClientId": { "description": "back office server clientId", "type": "string" }, "backOfficeServerClientSecret": { "description": "back office server client secret", "type": "string" }, "enableStreamJob": { "description": "enable PSN stream event job, will enable stream event job to sync PSN refund charge back etc event if it's true", "type": "boolean", "x-omitempty": false }, "environment": { "description": "environment", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "streamName": { "description": "stream name", "type": "string" }, "streamPartnerName": { "description": "stream partner name", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "PlayStationMultiServiceLabelsReconcileRequest": { "properties": { "currencyCode": { "description": "product price currency", "type": "string" }, "price": { "description": "product price", "format": "double", "type": "number" }, "productId": { "description": "productId", "type": "string" }, "serviceLabels": { "description": "service labels", "items": { "format": "int32", "type": "integer" }, "type": "array", "uniqueItems": true } }, "type": "object" }, "PlayStationReconcileRequest": { "properties": { "currencyCode": { "description": "product price currency", "type": "string" }, "price": { "description": "product price", "format": "double", "type": "number" }, "productId": { "description": "productId", "type": "string" }, "serviceLabel": { "description": "service label", "format": "int32", "type": "integer" } }, "type": "object" }, "PlayStationReconcileResult": { "properties": { "itemId": { "type": "string" }, "psnItemId": { "type": "string" }, "sku": { "type": "string" }, "status": { "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "type": "string" }, "transactionId": { "type": "string" } }, "type": "object" }, "PlaystationIAPConfigRequest": { "properties": { "backOfficeServerClientId": { "description": "back office server clientId", "type": "string" }, "backOfficeServerClientSecret": { "description": "back office server client secret", "type": "string" }, "enableStreamJob": { "description": "enable PSN stream event job, will enable stream event job to sync PSN refund chargeback etc event if it's true", "type": "boolean", "x-omitempty": false }, "environment": { "description": "environment", "type": "string" }, "streamName": { "description": "stream name", "type": "string" }, "streamPartnerName": { "description": "stream partner name", "type": "string" } }, "required": [ "environment" ], "type": "object" }, "PopulatedItemInfo": { "properties": { "appId": { "description": "App id, required when itemType is APP", "type": "string" }, "appType": { "description": "App type, required when itemType is APP", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "baseAppId": { "description": "Base app id", "type": "string" }, "boothName": { "description": "booth name to get tickets while it's item type is CODE", "type": "string" }, "boundItemIds": { "description": "the items which this item being bounded to", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "categoryPath": { "description": "Item category path", "type": "string" }, "clazz": { "description": "customized item clazz", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "description": { "description": "description info", "type": "string" }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "entitlementType": { "description": "Entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "ext": { "additionalProperties": { "type": "object" }, "description": "customized item properties", "type": "object" }, "features": { "description": "Features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "flexible": { "description": "whether flexible pricing applied, only applied if itemType is BUNDLE", "type": "boolean", "x-omitempty": false }, "fresh": { "description": "fresh", "type": "boolean", "x-omitempty": false }, "images": { "description": "images", "items": { "$ref": "#/definitions/Image" }, "type": "array" }, "inventoryConfig": { "$ref": "#/definitions/InventoryConfig", "description": "inventory config" }, "itemId": { "description": "Item id", "type": "string" }, "itemIds": { "description": "itemIds, should be empty if item type is not \"BUNDLE\"", "items": { "type": "string" }, "type": "array" }, "itemQty": { "additionalProperties": { "format": "int32", "type": "integer" }, "description": "itemQty, the quantity of item in itemIds, default 1, should be empty if item type is not \"BUNDLE\"", "type": "object" }, "itemType": { "description": "Item type", "enum": [ "APP", "BUNDLE", "CODE", "COINS", "EXTENSION", "INGAMEITEM", "LOOTBOX", "MEDIA", "OPTIONBOX", "SEASON", "SUBSCRIPTION" ], "type": "string" }, "items": { "description": "bundle items, only has value when item is bundle or optionbox and is populated", "items": { "$ref": "#/definitions/BundledItemInfo" }, "type": "array" }, "language": { "description": "language", "type": "string" }, "listable": { "description": "Whether can be visible in Store for public user", "type": "boolean", "x-omitempty": false }, "localExt": { "additionalProperties": { "type": "object" }, "type": "object" }, "longDescription": { "description": "long description info", "type": "string" }, "lootBoxConfig": { "$ref": "#/definitions/LootBoxConfig", "description": "loot box config" }, "maxCount": { "description": "Max count, -1 means UNLIMITED, unset when itemType is CODE", "format": "int32", "type": "integer" }, "maxCountPerUser": { "description": "Max count per user, -1 means UNLIMITED", "format": "int32", "type": "integer" }, "name": { "description": "Name", "type": "string" }, "namespace": { "description": "Item namespace", "type": "string" }, "optionBoxConfig": { "$ref": "#/definitions/OptionBoxConfig", "description": "option box config" }, "purchasable": { "description": "Whether can be purchased", "type": "boolean", "x-omitempty": false }, "purchaseCondition": { "$ref": "#/definitions/PurchaseCondition", "description": "purchase condition" }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring for subscription" }, "region": { "description": "region", "type": "string" }, "regionData": { "description": "Region data", "items": { "$ref": "#/definitions/RegionDataItem" }, "type": "array" }, "saleConfig": { "$ref": "#/definitions/SaleConfig", "description": "sale config" }, "seasonType": { "description": "Season type, required while itemType is SEASON", "enum": [ "PASS", "TIER" ], "type": "string" }, "sectionExclusive": { "description": "whether it is sold in section only", "type": "boolean", "x-omitempty": false }, "sellable": { "description": "whether allow to sell back to store", "type": "boolean", "x-omitempty": false }, "sku": { "description": "Sku", "type": "string" }, "stackable": { "description": "Whether stack the CONSUMABLE entitlement", "type": "boolean", "x-omitempty": false }, "status": { "description": "Item status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "tags": { "description": "Tags", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "targetCurrencyCode": { "description": "Target currency code of coin item", "type": "string" }, "targetItemId": { "description": "[Going to deprecate]Target item id if this item is mapping from game namespace.", "type": "string" }, "targetNamespace": { "description": "The target namespace of a cross namespace item", "type": "string" }, "thumbnailUrl": { "description": "thumbnail url", "type": "string" }, "title": { "description": "title info", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "Item use count, required when entitlement type is consumable or itemType is COINS", "format": "int32", "type": "integer" } }, "required": [ "categoryPath", "createdAt", "entitlementType", "itemId", "itemType", "language", "name", "namespace", "region", "status", "title", "updatedAt" ], "type": "object" }, "PreCheckFulfillmentRequest": { "description": "A DTO object for pre check fulfillment request API call.", "properties": { "itemId": { "description": "itemId", "type": "string" }, "itemSku": { "description": "itemSku", "type": "string" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" } }, "required": [ "quantity" ], "type": "object" }, "Predicate": { "description": "predicate object", "properties": { "anyOf": { "description": "anyOf, only available if comparison is includes or excludes", "format": "int32", "type": "integer" }, "code": { "description": "code", "type": "string" }, "comparison": { "description": "comparison", "enum": [ "excludes", "includes", "is", "isGreaterThan", "isGreaterThanOrEqual", "isLessThan", "isLessThanOrEqual", "isNot" ], "type": "string" }, "name": { "description": "predicate name", "type": "string" }, "predicateType": { "description": "predicate type", "enum": [ "EntitlementPredicate", "SeasonPassPredicate", "SeasonTierPredicate", "StatisticCodePredicate" ], "type": "string" }, "value": { "description": "value, pass check value when predicateType is SeasonTierPredicate", "type": "string" }, "values": { "description": "values, pass check value when predicateType is EntitlementPredicate or SeasonPassPredicateEntitlementPredicate requires item sku list, SeasonPassPredicate requires pass code list", "items": { "type": "string" }, "type": "array", "uniqueItems": true } }, "type": "object" }, "PredicateValidateResult": { "properties": { "matched": { "description": "matched value list", "items": { "type": "string" }, "type": "array" }, "predicateName": { "description": "predicate name", "type": "string" }, "unmatched": { "description": "unmatched value list", "items": { "type": "string" }, "type": "array" }, "validated": { "description": "is validated", "type": "boolean", "x-omitempty": false } }, "type": "object" }, "PsnEntitlementOwnershipRequest": { "properties": { "accessToken": { "type": "string" }, "serviceLabel": { "format": "int32", "type": "integer" } }, "type": "object" }, "PublicCustomConfigInfo": { "properties": { "connectionType": { "description": "connect type: INSECURE, TLS, default is INSECURE", "enum": [ "INSECURE", "TLS" ], "type": "string" }, "grpcServerAddress": { "description": "plugin grpc server address: \u003chost\u003e:\u003cport\u003e", "type": "string" }, "tlsConfig": { "$ref": "#/definitions/BaseTLSConfig" } }, "required": [ "connectionType", "grpcServerAddress" ], "type": "object" }, "PublicEntitlementDecrement": { "description": "A DTO object for entitlement decrement.", "properties": { "metadata": { "$ref": "#/definitions/PublicEntitlementMetadata", "description": "metadata, It is not stored in the database, only forwarded to AGS event" }, "options": { "description": "options, it is only available when entitlement clazz is OPTIONBOX and value should be item id.", "items": { "type": "string" }, "type": "array" }, "requestId": { "description": "Request id(Optional), client should provide a unique request id to perform at most once execution, When a request id is resubmitted, it will return original successful response", "type": "string" }, "useCount": { "description": "the count to decrease, 1 for default, option box entitlement only allow 1", "format": "int32", "type": "integer" } }, "type": "object" }, "PublicEntitlementHistoryInfo": { "properties": { "action": { "description": "The action of entitlement, like GRANT, REVOKE", "enum": [ "DECREMENT", "DISABLE", "ENABLE", "GRANT", "REVOKE", "SELL_BACK", "UPDATE" ], "type": "string" }, "clazz": { "description": "The clazz of entitlement", "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "type": "string" }, "createdAt": { "description": "History create time", "format": "date-time", "type": "string", "x-nullable": false }, "entitlementId": { "description": "The id of entitlement", "type": "string" }, "itemId": { "description": "The item id of entitlement", "type": "string" }, "namespace": { "description": "The namespace of entitlement", "type": "string" }, "origin": { "description": "The origin where the entitlement is granted", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "reason": { "description": "reason", "type": "string" }, "sku": { "description": "The sku of entitlement", "type": "string" }, "updatedAt": { "description": "History update time", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "The reminder use count of a consumable entitlement.", "format": "int32", "type": "integer" }, "useCountChange": { "description": "changed use count.", "format": "int32", "type": "integer" }, "userId": { "description": "The owner id of entitlement", "type": "string" } }, "required": [ "action", "createdAt", "entitlementId", "namespace", "updatedAt", "userId" ], "type": "object" }, "PublicEntitlementMetadata": { "properties": { "operationSource": { "enum": [ "INVENTORY" ], "type": "string" } }, "type": "object" }, "PurchaseCondition": { "properties": { "conditionGroups": { "description": "condition groups, the operator for condition group is 'or'", "items": { "$ref": "#/definitions/ConditionGroup" }, "type": "array" } }, "type": "object" }, "PurchaseConditionUpdate": { "description": "A DTO object for creating/updating item purchase condition", "properties": { "purchaseCondition": { "$ref": "#/definitions/PurchaseCondition", "description": "purchase condition" } }, "type": "object" }, "PurchasedItemCount": { "properties": { "count": { "format": "int64", "type": "integer" } }, "type": "object" }, "Recurring": { "properties": { "cycle": { "description": "recurring cycle", "enum": [ "MONTHLY", "QUARTERLY", "WEEKLY", "YEARLY" ], "type": "string" }, "fixedFreeDays": { "description": "fixed free days, 0 means not set", "format": "int32", "type": "integer" }, "fixedTrialCycles": { "description": "fixed trial cycles, 0 means not set", "format": "int32", "type": "integer" }, "graceDays": { "description": "recurring grace days, retry recurring charge within configured days if charge fail, default 7", "format": "int32", "type": "integer" } }, "required": [ "cycle", "fixedFreeDays", "fixedTrialCycles", "graceDays" ], "type": "object" }, "RecurringChargeResult": { "properties": { "code": { "description": "code for fail to trigger", "type": "string" }, "detail": { "description": "detail for fail to trigger", "type": "string" }, "triggered": { "description": "triggered or not", "type": "boolean", "x-omitempty": false } }, "required": [ "triggered" ], "type": "object" }, "RedeemHistoryInfo": { "properties": { "campaignId": { "description": "campaign id", "type": "string" }, "code": { "description": "code value", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "id": { "description": "id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "orderNo": { "description": "order No", "type": "string" }, "redeemedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "redeem user id", "type": "string" } }, "required": [ "campaignId", "code", "createdAt", "id", "namespace", "updatedAt", "userId" ], "type": "object" }, "RedeemHistoryPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/RedeemHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "RedeemRequest": { "properties": { "code": { "description": "The code for campaign", "type": "string" }, "orderNo": { "description": "order No", "type": "string" } }, "required": [ "code" ], "type": "object" }, "RedeemResult": { "properties": { "items": { "description": "redeemed items", "items": { "$ref": "#/definitions/RedeemableItem" }, "type": "array" } }, "type": "object" }, "RedeemableItem": { "properties": { "extraSubscriptionDays": { "description": "Extra subscription days if the item is a subscription, 0 by default", "format": "int32", "type": "integer" }, "itemId": { "description": "The redeemable item id", "type": "string" }, "itemName": { "description": "The redeemable item name", "type": "string" }, "quantity": { "description": "The redeemable item quantity, 1 for default", "format": "int32", "type": "integer" } }, "required": [ "itemId", "itemName" ], "type": "object" }, "RegionDataChange": { "properties": { "itemIdentities": { "items": { "type": "string" }, "type": "array" }, "itemIdentityType": { "description": "Item Identity Type", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "regionData": { "additionalProperties": { "items": { "$ref": "#/definitions/RegionDataItem" }, "type": "array" }, "description": "region data map, key is region, value is region data list (This map will override existing keys instead of entire map)", "type": "object" } }, "required": [ "itemIdentityType" ], "type": "object" }, "RegionDataItem": { "description": "Region data", "properties": { "currencyCode": { "description": "currency code", "example": "USD", "type": "string" }, "currencyNamespace": { "description": "currency namespace", "type": "string" }, "currencyType": { "description": "currency type", "enum": [ "REAL", "VIRTUAL" ], "type": "string" }, "discountAmount": { "description": "Discount amount, min is 0, max is price", "format": "int32", "minimum": 0, "type": "integer" }, "discountExpireAt": { "description": "Discount expire date time", "format": "date-time", "type": "string", "x-nullable": true }, "discountPercentage": { "description": "Discount percentage,default is 0, if this value is not 0, it will override the discountAmount", "format": "int32", "maximum": 100, "minimum": 0, "type": "integer" }, "discountPurchaseAt": { "description": "DiscountPurchaseAt", "format": "date-time", "type": "string", "x-nullable": true }, "discountedPrice": { "format": "int32", "type": "integer" }, "expireAt": { "description": "ExpireAt", "format": "date-time", "type": "string", "x-nullable": true }, "price": { "description": "price value, set to 0 if it's free, if it's -1 means it's dynamic price and need to call getEstimatedPrices endpoint to get price.", "format": "int32", "type": "integer" }, "purchaseAt": { "description": "PurchaseAt", "format": "date-time", "type": "string", "x-nullable": true }, "trialPrice": { "description": "trial price, required while fixedTrialCycles set, should \u003e=0 and \u003c= price, default same as trialPrice", "format": "int32", "type": "integer" } }, "required": [ "currencyCode", "currencyNamespace", "currencyType" ], "type": "object" }, "RegionDataItemDTO": { "description": "Region data DTO Object, it's used when create/update item", "properties": { "currencyCode": { "description": "currency code", "example": "USD", "type": "string" }, "currencyNamespace": { "description": "currency namespace", "type": "string" }, "currencyType": { "description": "currency type", "enum": [ "REAL", "VIRTUAL" ], "type": "string" }, "discountAmount": { "description": "Discount amount, min is 0, max is price", "format": "int32", "minimum": 0, "type": "integer" }, "discountExpireAt": { "description": "Discount expire date time", "format": "date-time", "type": "string", "x-nullable": true }, "discountPercentage": { "description": "Discount percentage,default is 0, if this value is not 0, it will override the discountAmount", "format": "int32", "maximum": 100, "minimum": 0, "type": "integer" }, "discountPurchaseAt": { "description": "DiscountPurchaseAt", "format": "date-time", "type": "string", "x-nullable": true }, "expireAt": { "description": "ExpireAt", "format": "date-time", "type": "string", "x-nullable": true }, "price": { "description": "price value, set to 0 if it's free, if it's -1 means it's dynamic price and need to call getEstimatedPrices endpoint to get price.", "format": "int32", "type": "integer" }, "purchaseAt": { "description": "PurchaseAt", "format": "date-time", "type": "string", "x-nullable": true }, "trialPrice": { "description": "trial price, required while fixedTrialCycles set, should \u003e=0 and \u003c= price, default same as trialPrice", "format": "int32", "type": "integer" } }, "required": [ "currencyCode", "currencyNamespace", "currencyType", "price" ], "type": "object" }, "RequestHistory": { "properties": { "requestTime": { "format": "date-time", "type": "string", "x-nullable": true }, "responseBody": { "type": "object" }, "responseTime": { "format": "date-time", "type": "string", "x-nullable": true }, "status": { "enum": [ "FAIL", "PENDING", "SUCCESS" ], "type": "string" }, "statusCode": { "format": "int32", "type": "integer" } }, "type": "object" }, "Requirement": { "properties": { "additionals": { "description": "other requirement, max length is 255", "type": "string" }, "directXVersion": { "description": "directX version, max length is 255", "type": "string" }, "diskSpace": { "description": "disk space, max length is 255", "type": "string" }, "graphics": { "description": "graphics, max length is 255", "type": "string" }, "label": { "description": "label, value can be:minimum,recommended", "type": "string" }, "osVersion": { "description": "OS version, max length is 255", "type": "string" }, "processor": { "description": "processor, max length is 255", "type": "string" }, "ram": { "description": "RAM, max length is 255", "type": "string" }, "soundCard": { "description": "sound card, max length is 255", "type": "string" } }, "required": [ "label" ], "type": "object" }, "ResetJobRequest": { "properties": { "env": { "description": "Steam env", "enum": [ "LIVE", "SANDBOX" ], "type": "string" }, "lastTime": { "description": "last time", "format": "date-time", "type": "string", "x-nullable": true } }, "type": "object" }, "RevocationConfigInfo": { "properties": { "entitlement": { "$ref": "#/definitions/EntitlementRevocationConfig" }, "namespace": { "type": "string" }, "wallet": { "$ref": "#/definitions/WalletRevocationConfig" } }, "type": "object" }, "RevocationConfigUpdate": { "properties": { "entitlement": { "$ref": "#/definitions/EntitlementRevocationConfig", "description": "entitlement revocation config" }, "wallet": { "$ref": "#/definitions/WalletRevocationConfig", "description": "wallet revocation config" } }, "type": "object" }, "RevocationError": { "properties": { "code": { "description": "error code", "format": "int32", "type": "integer" }, "httpStatus": { "description": "http status", "format": "int32", "type": "integer" }, "message": { "description": "error message", "type": "string" } }, "type": "object" }, "RevocationHistoryInfo": { "properties": { "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": true }, "creditRevocations": { "description": "credit revocations", "items": { "$ref": "#/definitions/CreditRevocation" }, "type": "array" }, "entitlementRevocations": { "description": "entitlement revocations", "items": { "$ref": "#/definitions/EntitlementRevocation" }, "type": "array" }, "id": { "description": "id", "type": "string" }, "itemRevocations": { "description": "item revocations", "items": { "$ref": "#/definitions/ItemRevocation" }, "type": "array" }, "meta": { "additionalProperties": { "type": "object" }, "description": "meta", "type": "object" }, "namespace": { "description": "namespace", "type": "string" }, "revocationErrors": { "description": "revocation errors", "items": { "$ref": "#/definitions/RevocationError" }, "type": "array" }, "revokeEntries": { "description": "revoke entries", "items": { "$ref": "#/definitions/RevokeEntry" }, "type": "array" }, "source": { "description": "source", "type": "string" }, "status": { "description": "status", "enum": [ "FAIL", "SUCCESS" ], "type": "string" }, "transactionId": { "description": "transactionId, Order No, DLC Order No.", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "description": "userId", "type": "string" } }, "type": "object" }, "RevocationHistoryPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/RevocationHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "RevocationPluginConfigInfo": { "properties": { "appConfig": { "$ref": "#/definitions/AppConfig", "description": "app config" }, "customConfig": { "$ref": "#/definitions/PublicCustomConfigInfo", "description": "custom config" }, "extendType": { "description": "extend type", "enum": [ "APP", "CUSTOM" ], "type": "string" }, "namespace": { "description": "namespace", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "RevocationPluginConfigUpdate": { "properties": { "appConfig": { "$ref": "#/definitions/AppConfig", "description": "app config" }, "customConfig": { "$ref": "#/definitions/BaseCustomConfig", "description": "custom config" }, "extendType": { "description": "extend type", "enum": [ "APP", "CUSTOM" ], "type": "string" } }, "required": [ "extendType" ], "type": "object" }, "RevocationRequest": { "properties": { "meta": { "additionalProperties": { "type": "object" }, "description": "source meta info, like DLC transaction id, order no.", "type": "object" }, "reason": { "description": "reason why the entries need to be revoked", "type": "string" }, "requestId": { "description": "revoke request id, unique identifier for a request to perform at most once execution, when a requestid is resubmitted, it won't perform the revocation again", "type": "string" }, "revokeEntries": { "description": "revoke entries", "items": { "$ref": "#/definitions/RevokeEntry" }, "type": "array" }, "source": { "description": "revoke source", "enum": [ "DLC", "IAP", "ORDER", "OTHER" ], "type": "string" }, "transactionId": { "description": "transaction id: DLC Order No, Order No. This is for external reference id , use request_id for idempotent request", "type": "string" } }, "type": "object" }, "RevocationResult": { "properties": { "creditRevocations": { "description": "credit revocations", "items": { "$ref": "#/definitions/CreditRevocation" }, "type": "array" }, "entitlementRevocations": { "description": "entitlement revocations", "items": { "$ref": "#/definitions/EntitlementRevocation" }, "type": "array" }, "id": { "description": "revocation history id", "type": "string" }, "isReplayed": { "description": "true if request id is already processed and return the existing result", "type": "boolean", "x-omitempty": false }, "itemRevocations": { "description": "item revocations", "items": { "$ref": "#/definitions/ItemRevocation" }, "type": "array" }, "requestId": { "description": "revocation request id", "type": "string" }, "status": { "description": "revocation status", "enum": [ "FAIL", "SUCCESS" ], "type": "string" } }, "required": [ "id", "status" ], "type": "object" }, "RevokeCurrency": { "properties": { "balanceOrigin": { "description": "balance origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "currencyCode": { "description": "currency code", "type": "string" }, "namespace": { "description": "currency namespace", "type": "string" } }, "type": "object" }, "RevokeEntitlement": { "properties": { "entitlementId": { "description": "entitlement id", "type": "string" } }, "type": "object" }, "RevokeEntitlementPayload": { "properties": { "count": { "format": "int32", "type": "integer" }, "entitlementId": { "type": "string" } }, "required": [ "entitlementId" ], "type": "object" }, "RevokeEntry": { "properties": { "currency": { "$ref": "#/definitions/RevokeCurrency", "description": "revoke currency" }, "entitlement": { "$ref": "#/definitions/RevokeEntitlement", "description": "revoke entitlement" }, "item": { "$ref": "#/definitions/RevokeItem", "description": "revoke item" }, "quantity": { "description": "revoke quantity", "format": "int32", "type": "integer" }, "type": { "description": "revoke entry type", "enum": [ "CURRENCY", "ENTITLEMENT", "ITEM" ], "type": "string" } }, "type": "object" }, "RevokeFulfillmentV2Result": { "properties": { "creditRevocations": { "description": "credit revocations", "items": { "$ref": "#/definitions/CreditRevocation" }, "type": "array" }, "entitlementRevocations": { "description": "entitlement revocations", "items": { "$ref": "#/definitions/EntitlementRevocation" }, "type": "array" }, "id": { "description": "revocation history id", "type": "string" }, "itemRevocations": { "description": "item revocations", "items": { "$ref": "#/definitions/ItemRevocation" }, "type": "array" }, "items": { "description": "item", "items": { "$ref": "#/definitions/FulfillmentItem" }, "type": "array" }, "namespace": { "description": "namespace", "type": "string" }, "state": { "description": "state", "enum": [ "FULFILLED", "FULFILL_FAILED", "REVOKED", "REVOKE_FAILED" ], "type": "string" }, "stateInfo": { "$ref": "#/definitions/FulfillmentStateInfo", "description": "stateInfo" }, "transactionId": { "description": "transactionId", "type": "string" }, "userId": { "description": "userId", "type": "string" } }, "required": [ "id", "items", "namespace", "state", "stateInfo", "transactionId", "userId" ], "type": "object" }, "RevokeItem": { "properties": { "entitlementOrigin": { "description": "platform ,it is used to revoke entitlements of the specified allowed platforms, only available in ENTITLEMENT item", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "itemIdentity": { "description": "item identity", "type": "string" }, "itemIdentityType": { "description": "item identity type", "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "origin": { "description": "balance origin, it is used to debit the wallet of the specified balance origin, only available in COINS item", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" } }, "type": "object" }, "RevokeItemSummary": { "properties": { "itemId": { "type": "string" }, "itemSku": { "type": "string" }, "itemType": { "type": "string" }, "revokeStatus": { "enum": [ "COMPLETED", "SKIPPED" ], "type": "string" } }, "type": "object" }, "RevokeResult": { "properties": { "revokeItemSummaries": { "items": { "$ref": "#/definitions/RevokeItemSummary" }, "type": "array" }, "reward": { "$ref": "#/definitions/PlatformReward" }, "status": { "enum": [ "COMPLETED", "SKIPPED" ], "type": "string" } }, "type": "object" }, "RevokeUseCountRequest": { "properties": { "reason": { "description": "reason", "type": "string" }, "useCount": { "description": "use count", "format": "int32", "type": "integer" } }, "type": "object" }, "RewardCondition": { "properties": { "condition": { "type": "string" }, "conditionName": { "type": "string" }, "eventName": { "type": "string" }, "rewardItems": { "items": { "$ref": "#/definitions/RewardItem" }, "type": "array" } }, "type": "object" }, "RewardCreate": { "properties": { "description": { "description": "Description", "type": "string" }, "eventTopic": { "description": "event topic to listen to", "type": "string" }, "maxAwarded": { "description": "Max awarded", "format": "int32", "type": "integer" }, "maxAwardedPerUser": { "description": "Max awarded per user", "format": "int32", "type": "integer" }, "namespaceExpression": { "description": " The path to get namespace from event payload, if not present, will use default value \"$.[0].namespace\"", "type": "string" }, "rewardCode": { "description": "Reward code", "type": "string" }, "rewardConditions": { "description": "list of reward condition", "items": { "$ref": "#/definitions/RewardCondition" }, "type": "array" }, "userIdExpression": { "description": "The path to get userId from event payload, if not present, will use default value \"$.[0].userId\"", "type": "string" } }, "required": [ "eventTopic", "rewardCode" ], "type": "object" }, "RewardInfo": { "properties": { "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": true }, "description": { "description": "Description", "type": "string" }, "eventTopic": { "description": "event topic to listen to", "type": "string" }, "maxAwarded": { "description": "Max awarded", "format": "int32", "type": "integer" }, "maxAwardedPerUser": { "description": "Max awarded per user", "format": "int32", "type": "integer" }, "namespace": { "description": "Reward namespace", "type": "string" }, "namespaceExpression": { "description": " The path to get namespace from event payload, if not present, will use default value", "type": "string" }, "rewardCode": { "description": "Reward code", "type": "string" }, "rewardConditions": { "description": "list of reward condition", "items": { "$ref": "#/definitions/RewardCondition" }, "type": "array" }, "rewardId": { "description": "Reward id", "type": "string" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": true }, "userIdExpression": { "description": "The path to get userId from event payload, if not present, will use default value", "type": "string" } }, "required": [ "eventTopic", "namespace", "rewardId" ], "type": "object" }, "RewardItem": { "properties": { "duration": { "format": "int32", "type": "integer" }, "endDate": { "format": "date-time", "type": "string", "x-nullable": true }, "identityType": { "enum": [ "ITEM_ID", "ITEM_SKU" ], "type": "string" }, "itemId": { "type": "string" }, "quantity": { "format": "int32", "type": "integer" }, "sku": { "type": "string" } }, "type": "object" }, "RewardMigrationResult": { "properties": { "itemId": { "description": "item id", "type": "string" }, "quantity": { "description": "total number that need be migrated", "format": "int32", "type": "integer" }, "reason": { "description": "failed reason", "type": "string" }, "sku": { "description": "item sku", "type": "string" }, "status": { "description": "status of migration,SUCCESS FAIL", "enum": [ "FAIL", "SUCCESS" ], "type": "string" }, "syncedCount": { "description": "it includes:\n\nthe count of update no origin entitlement to designated origin\n\nthe count of fulfill not enough entitlement", "format": "int32", "type": "integer" }, "syncedEntitlementIds": { "description": "synced entitlement ids", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "RewardPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/RewardInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "RewardUpdate": { "properties": { "description": { "description": "Description", "type": "string" }, "eventTopic": { "description": "event topic to listen to", "type": "string" }, "maxAwarded": { "description": "Max awarded", "format": "int32", "type": "integer" }, "maxAwardedPerUser": { "description": "Max awarded per user", "format": "int32", "type": "integer" }, "namespaceExpression": { "description": " The path to get namespace from event payload, if not present, will use default value \"$.[0].namespace\"", "type": "string" }, "rewardCode": { "description": "rewardCode", "type": "string" }, "rewardConditions": { "description": "list of reward condition", "items": { "$ref": "#/definitions/RewardCondition" }, "type": "array" }, "userIdExpression": { "description": "The path to get userId from event payload, if not present, will use default value \"$.[0].userId\"", "type": "string" } }, "required": [ "eventTopic", "rewardCode" ], "type": "object" }, "RewardsRequest": { "description": "A DTO object for rewards request API call.", "properties": { "entitlementCollectionId": { "description": "entitlement collection id, length 1-128", "type": "string" }, "entitlementOrigin": { "description": "entitlement origin ,and default value is System", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "additional fulfillment information", "type": "object" }, "origin": { "description": "origin, if rewards contains item icon, it will credit into related origin wallet. if not set, it will be credit into System wallet", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "rewards": { "description": "reward", "items": { "$ref": "#/definitions/PlatformReward" }, "type": "array" }, "source": { "description": "source", "enum": [ "ACHIEVEMENT", "CONSUME_ENTITLEMENT", "DLC", "EXPIRATION", "GIFT", "IAP", "IAP_CHARGEBACK_REVERSED", "ORDER_REVOCATION", "OTHER", "PAYMENT", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REWARD", "SELL_BACK" ], "type": "string" }, "transactionId": { "description": "transaction id", "type": "string" } }, "required": [ "rewards" ], "type": "object" }, "SaleConfig": { "properties": { "currencyCode": { "description": "currency code, only allow to use current namespace virtual currency", "type": "string" }, "price": { "description": "price value", "format": "int32", "type": "integer" } }, "required": [ "currencyCode", "price" ], "type": "object" }, "SectionCreate": { "description": "A DTO object for creating section API call.", "properties": { "active": { "description": "active, default true", "type": "boolean", "x-omitempty": false }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "endDate": { "description": "end date", "format": "date-time", "type": "string", "x-nullable": false }, "ext": { "additionalProperties": { "type": "object" }, "description": "section extension", "type": "object" }, "fixedPeriodRotationConfig": { "$ref": "#/definitions/FixedPeriodRotationConfig", "description": "fix period rotation config, don't allow null when rotation type is FIXED_PERIOD" }, "items": { "description": "item ids", "items": { "$ref": "#/definitions/SectionItem" }, "type": "array" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "name": { "description": "section name", "type": "string" }, "rotationType": { "description": "rotation type, default is NONE", "enum": [ "CUSTOM", "FIXED_PERIOD", "NONE" ], "type": "string" }, "startDate": { "description": "start date", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id", "type": "string" } }, "required": [ "endDate", "localizations", "name", "startDate" ], "type": "object" }, "SectionInfo": { "properties": { "active": { "description": "active", "type": "boolean", "x-omitempty": false }, "createdAt": { "description": "created time", "format": "date-time", "type": "string", "x-nullable": false }, "currentRotationExpireAt": { "description": "only exists when rotation type is FIX_PERIOD or CUSTOM", "format": "date-time", "type": "string", "x-nullable": true }, "currentRotationItems": { "description": "current rotation item infos", "items": { "$ref": "#/definitions/ItemInfo" }, "type": "array" }, "description": { "description": "description info", "type": "string" }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "endDate": { "description": "end date", "format": "date-time", "type": "string", "x-nullable": false }, "ext": { "additionalProperties": { "type": "object" }, "description": "customized section properties", "type": "object" }, "localExt": { "additionalProperties": { "type": "object" }, "type": "object" }, "longDescription": { "description": "long description info", "type": "string" }, "name": { "description": "name", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "sectionId": { "description": "id", "type": "string" }, "startDate": { "description": "start date", "format": "date-time", "type": "string", "x-nullable": false }, "title": { "description": "title info", "type": "string" }, "updatedAt": { "description": "updated time", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id", "type": "string" } }, "required": [ "active", "createdAt", "endDate", "name", "namespace", "sectionId", "startDate", "title", "updatedAt", "viewId" ], "type": "object" }, "SectionItem": { "properties": { "id": { "description": "item id", "type": "string" }, "sku": { "description": "item sku", "type": "string" } }, "required": [ "id" ], "type": "object" }, "SectionPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/FullSectionInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "SectionPluginConfigInfo": { "properties": { "appConfig": { "$ref": "#/definitions/AppConfig", "description": "app config" }, "customConfig": { "$ref": "#/definitions/PublicCustomConfigInfo", "description": "custom config" }, "extendType": { "description": "extend type", "enum": [ "APP", "CUSTOM" ], "type": "string" }, "namespace": { "description": "namespace", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "SectionPluginConfigUpdate": { "properties": { "appConfig": { "$ref": "#/definitions/AppConfig", "description": "app config" }, "customConfig": { "$ref": "#/definitions/BaseCustomConfig", "description": "custom config" }, "extendType": { "description": "extend type", "enum": [ "APP", "CUSTOM" ], "type": "string" } }, "required": [ "extendType" ], "type": "object" }, "SectionUpdate": { "description": "A DTO object for updating section API call.", "properties": { "active": { "description": "active, default true", "type": "boolean", "x-omitempty": false }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "endDate": { "description": "end date", "format": "date-time", "type": "string", "x-nullable": false }, "ext": { "additionalProperties": { "type": "object" }, "description": "section extension", "type": "object" }, "fixedPeriodRotationConfig": { "$ref": "#/definitions/FixedPeriodRotationConfig", "description": "fix period rotation config, don't allow null when rotation type is FIXED_PERIOD" }, "items": { "description": "items", "items": { "$ref": "#/definitions/SectionItem" }, "type": "array" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "name": { "description": "section name", "type": "string" }, "rotationType": { "description": "rotation type, default is NONE", "enum": [ "CUSTOM", "FIXED_PERIOD", "NONE" ], "type": "string" }, "startDate": { "description": "start date", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id", "type": "string" } }, "required": [ "endDate", "localizations", "name", "startDate" ], "type": "object" }, "ServicePluginConfigInfo": { "properties": { "grpcServerAddress": { "description": "plugin grpc server address: \u003chost\u003e:\u003cport\u003e", "type": "string" }, "namespace": { "description": "namespace", "type": "string" } }, "type": "object" }, "ServicePluginConfigUpdate": { "properties": { "grpcServerAddress": { "description": "plugin grpc server address: \u003chost\u003e:\u003cport\u003e", "type": "string" } }, "type": "object" }, "SimpleDLCRewardItem": { "properties": { "itemName": { "description": "item name", "type": "string" } }, "type": "object" }, "SimpleEntitlement": { "properties": { "entitlementId": { "type": "string" }, "grantedCode": { "type": "string" }, "itemId": { "type": "string" }, "itemNamespace": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "origin": { "type": "string" }, "sku": { "type": "string" }, "useCount": { "format": "int32", "type": "integer" } }, "type": "object" }, "SimpleUserDLC": { "properties": { "dlcId": { "type": "string" } }, "type": "object" }, "SimpleUserDLCRewardContent": { "properties": { "currency": { "$ref": "#/definitions/PlatformRewardCurrency", "description": "currency" }, "item": { "$ref": "#/definitions/SimpleDLCRewardItem", "description": "item" }, "obtainedAt": { "description": "time when this dlc item was obtained", "format": "date-time", "type": "string", "x-nullable": true }, "quantity": { "description": "quantity if type is ITEM, amount if type is CURRENCY", "format": "int32", "type": "integer" }, "type": { "description": "reward type", "enum": [ "CURRENCY", "ITEM" ], "type": "string" } }, "type": "object" }, "SimpleUserDLCRewardContentsResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/SimpleUserDLCRewardContent" }, "type": "array" } }, "type": "object" }, "SimpleWallet": { "properties": { "balance": { "format": "int64", "type": "integer" }, "balanceOrigin": { "type": "string" }, "currencyCode": { "type": "string" }, "timeLimitedBalances": { "items": { "$ref": "#/definitions/TimeLimitedBalance" }, "type": "array" }, "walletId": { "type": "string" } }, "type": "object" }, "Slide": { "properties": { "alt": { "description": "alt", "type": "string" }, "previewUrl": { "description": "preview url", "type": "string" }, "thumbnailUrl": { "description": "thumbnail url", "type": "string" }, "type": { "description": "slide type", "enum": [ "image", "video" ], "type": "string" }, "url": { "description": "url", "type": "string" }, "videoSource": { "description": "video source", "enum": [ "generic", "vimeo", "youtube" ], "type": "string" } }, "type": "object" }, "StackableEntitlementInfo": { "properties": { "appId": { "description": "appId if entitlement is an app", "type": "string" }, "appType": { "description": "appType if entitlement is an app", "enum": [ "DEMO", "DLC", "GAME", "SOFTWARE" ], "type": "string" }, "clazz": { "description": "entitlement class", "enum": [ "APP", "CODE", "ENTITLEMENT", "LOOTBOX", "MEDIA", "OPTIONBOX", "SUBSCRIPTION" ], "type": "string" }, "collectionId": { "description": "entitlement collection id", "type": "string" }, "createdAt": { "description": "entitlement created at", "format": "date-time", "type": "string", "x-nullable": false }, "endDate": { "description": "entitlement end date", "format": "date-time", "type": "string", "x-nullable": true }, "features": { "description": "entitlement features", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "grantedAt": { "description": "entitlement granted at", "format": "date-time", "type": "string", "x-nullable": true }, "grantedCode": { "description": "grantedCode, the granted code", "type": "string" }, "id": { "description": "entitlement id", "type": "string" }, "itemId": { "description": "itemId of the entitlement", "type": "string" }, "itemNamespace": { "description": "itemNamespace for the purchased item", "type": "string" }, "itemSnapshot": { "$ref": "#/definitions/ItemSnapshot", "description": "itemSnapshot" }, "name": { "description": "entitlement name", "type": "string" }, "namespace": { "description": "entitlement namespace", "type": "string" }, "noOrigin": { "description": "Whether entitlement have origin", "type": "boolean", "x-omitempty": false }, "origin": { "description": "entitlement origin", "enum": [ "Epic", "GooglePlay", "IOS", "Nintendo", "Oculus", "Other", "Playstation", "Steam", "System", "Twitch", "Xbox" ], "type": "string" }, "platformAvailable": { "description": "platform available", "type": "boolean", "x-omitempty": false }, "sku": { "description": "sku for purchased item", "type": "string" }, "source": { "description": "entitlement source", "enum": [ "ACHIEVEMENT", "GIFT", "IAP", "OTHER", "PROMOTION", "PURCHASE", "REDEEM_CODE", "REFERRAL_BONUS", "REWARD" ], "type": "string" }, "stackable": { "description": "whether the CONSUMABLE entitlement is stackable", "type": "boolean", "x-omitempty": false }, "stackedUseCount": { "description": "CONSUMABLE entitlement stacked use count", "format": "int32", "type": "integer" }, "startDate": { "description": "entitlement start date", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "entitlement status", "enum": [ "ACTIVE", "CONSUMED", "INACTIVE", "REVOKED", "SOLD" ], "type": "string" }, "storeId": { "description": "storeId of the item, published store if omitted", "type": "string" }, "type": { "description": "entitlement type", "enum": [ "CONSUMABLE", "DURABLE" ], "type": "string" }, "updatedAt": { "description": "entitlement updated at", "format": "date-time", "type": "string", "x-nullable": false }, "useCount": { "description": "useCount for entitlement", "format": "int32", "type": "integer" }, "userId": { "description": "userId for this entitlement", "type": "string" } }, "required": [ "clazz", "createdAt", "id", "itemId", "itemNamespace", "namespace", "status", "updatedAt" ], "type": "object" }, "SteamAbnormalTransactionPagingSlicedResult": { "type": "object" }, "SteamAchievement": { "description": "steam achievement request", "properties": { "id": { "type": "string" }, "value": { "format": "int64", "type": "integer" } }, "type": "object" }, "SteamAchievementUpdateRequest": { "description": "A DTO object for unlock steam achievement API", "properties": { "achievements": { "description": "achievements to be updated", "items": { "$ref": "#/definitions/SteamAchievement" }, "type": "array" }, "steamUserId": { "description": "steam user id", "type": "string" } }, "type": "object" }, "SteamDLCSyncRequest": { "properties": { "appId": { "description": "Steam app id, this field is deprecated", "type": "string" }, "steamId": { "description": "Steam ID of the user", "type": "string" } }, "required": [ "steamId" ], "type": "object" }, "SteamIAPConfig": { "properties": { "appId": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "env": { "enum": [ "LIVE", "SANDBOX" ], "type": "string" }, "namespace": { "type": "string" }, "publisherAuthenticationKey": { "type": "string" }, "rvn": { "format": "int32", "type": "integer" }, "syncMode": { "enum": [ "INVENTORY", "TRANSACTION" ], "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true } }, "type": "object" }, "SteamIAPConfigInfo": { "properties": { "appId": { "description": "steam app id", "type": "string" }, "env": { "description": "steam env", "enum": [ "LIVE", "SANDBOX" ], "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "publisherAuthenticationKey": { "description": "steam publisher authentication key", "type": "string" }, "syncMode": { "description": "steam sync mode", "enum": [ "INVENTORY", "TRANSACTION" ], "type": "string" } }, "required": [ "namespace", "publisherAuthenticationKey" ], "type": "object" }, "SteamIAPConfigRequest": { "properties": { "appId": { "description": "appId", "type": "string" }, "env": { "description": "steam env, required if sync mode is inventory", "enum": [ "LIVE", "SANDBOX" ], "type": "string" }, "publisherAuthenticationKey": { "description": "publisherAuthenticationKey", "type": "string" }, "syncMode": { "description": "steam sync mode, default is INVENTORY", "enum": [ "INVENTORY", "TRANSACTION" ], "type": "string" } }, "required": [ "appId" ], "type": "object" }, "SteamReportInfoPagingSlicedResult": { "type": "object" }, "SteamReportJobInfo": { "properties": { "env": { "description": "The environment in which the report is running.", "enum": [ "LIVE", "SANDBOX" ], "type": "string" }, "id": { "description": "The unique identifier (UUID) for the report.", "type": "string" }, "lastTime": { "description": "The last start time of the report. This time (1970-01-01T00:00:00Z) will be used for the first run.", "example": "1970-01-01T00:00:00Z", "format": "date-time", "type": "string", "x-nullable": true }, "namespace": { "description": "The AGS namespace associated with the report.", "type": "string" } }, "type": "object" }, "SteamSyncByTransactionRequest": { "properties": { "orderId": { "description": "Unique 64-bit ID for steam order", "type": "string" } }, "required": [ "orderId" ], "type": "object" }, "SteamSyncRequest": { "properties": { "appId": { "description": "Steam app id", "type": "string" }, "currencyCode": { "description": "product price currency", "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "price": { "description": "product price", "format": "double", "type": "number" }, "productId": { "description": "steamdefid", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" }, "steamId": { "description": "Steam ID of the user", "type": "string" } }, "required": [ "appId", "steamId" ], "type": "object" }, "StoreBackupInfo": { "properties": { "autoBackup": { "description": "Is auto backup", "type": "boolean", "x-omitempty": false }, "createdAt": { "description": "Backup created time", "format": "date-time", "type": "string", "x-nullable": false }, "id": { "description": "Backup id", "type": "string" }, "name": { "description": "Backup name", "type": "string" }, "storeId": { "description": "Backup store id", "type": "string" }, "updatedAt": { "description": "Backup updated time", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "autoBackup", "createdAt", "id", "name", "storeId", "updatedAt" ], "type": "object" }, "StoreCreate": { "description": "A DTO object for creating store API call.", "properties": { "defaultLanguage": { "description": "Default language, BCP 47 language tag, default is en", "type": "string" }, "defaultRegion": { "description": "Default region, should be ISO3166-1 alpha-2 two letter, default is US", "type": "string" }, "description": { "description": "Description", "type": "string" }, "supportedLanguages": { "description": "Languages, BCP 47 language tag", "items": { "type": "string" }, "type": "array" }, "supportedRegions": { "description": "Store supported regions, should be ISO3166-1 alpha-2 two letter", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Title, it should starts and ends with alphabets uppercase/lowercase or numeric, allowed separators ',.- and white-space, max length is 127", "type": "string" } }, "required": [ "title" ], "type": "object" }, "StoreInfo": { "properties": { "createdAt": { "description": "Store created time", "format": "date-time", "type": "string", "x-nullable": false }, "defaultLanguage": { "description": "Default language", "type": "string" }, "defaultRegion": { "description": "Default region", "type": "string" }, "description": { "description": "Store description", "type": "string" }, "namespace": { "description": "The namespace", "type": "string" }, "published": { "description": "If Store is published", "type": "boolean", "x-omitempty": false }, "publishedTime": { "description": "Store published time", "format": "date-time", "type": "string", "x-nullable": true }, "storeId": { "description": "Store id", "type": "string" }, "supportedLanguages": { "description": "Store supported language", "items": { "type": "string" }, "type": "array" }, "supportedRegions": { "description": "Store supported regions", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Store title", "type": "string" }, "updatedAt": { "description": "Store updated time", "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "createdAt", "defaultLanguage", "defaultRegion", "namespace", "published", "storeId", "supportedLanguages", "supportedRegions", "title", "updatedAt" ], "type": "object" }, "StoreUpdate": { "description": "A DTO object for updating store API call.", "properties": { "defaultLanguage": { "description": "Default language, BCP 47 language tag", "type": "string" }, "defaultRegion": { "description": "Default region, should be ISO3166-1 alpha-2 two letter", "type": "string" }, "description": { "description": "Description", "type": "string" }, "supportedLanguages": { "description": "Languages, BCP 47 language tag", "items": { "type": "string" }, "type": "array" }, "supportedRegions": { "description": "Store supported regions, should be ISO3166-1 alpha-2 two letter", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Title, it should starts and ends with alphabets uppercase/lowercase or numeric, allowed separators ',.- and white-space, max length is 127", "type": "string" } }, "required": [ "title" ], "type": "object" }, "StreamEvent": { "properties": { "body": { "$ref": "#/definitions/StreamEventBody" }, "eventDomain": { "type": "string" }, "eventSource": { "type": "string" }, "eventType": { "type": "string" }, "eventVersion": { "format": "int32", "type": "integer" }, "id": { "type": "string" }, "timestamp": { "type": "string" } }, "type": "object" }, "StreamEventBody": { "properties": { "account": { "type": "string" }, "additionalData": { "$ref": "#/definitions/EventAdditionalData" }, "originalTitleName": { "type": "string" }, "paymentProductSKU": { "type": "string" }, "purchaseDate": { "type": "string" }, "sourceOrderItemId": { "type": "string" }, "titleName": { "type": "string" } }, "type": "object" }, "StripeConfig": { "description": "A DTO object for updating stripe config.", "properties": { "allowedPaymentMethodTypes": { "description": "specifying the payment methods that are allowed to create payment intent. ", "items": { "type": "string" }, "type": "array" }, "publishableKey": { "description": "publishable key, max length is 4096", "type": "string" }, "secretKey": { "description": "secret key, max length is 4096", "type": "string" }, "webhookSecret": { "description": "webhook secret max length is 4096", "type": "string" } }, "type": "object" }, "SubItemAvailablePrice": { "properties": { "discountedPrice": { "description": "current discounted price per item", "format": "int32", "type": "integer" }, "itemId": { "description": "item id", "type": "string" }, "itemName": { "description": "item name", "type": "string" }, "itemSku": { "description": "item sku", "type": "string" }, "owned": { "description": "whether owns this durable item id, consumable item is always false or null.", "type": "boolean", "x-omitempty": false }, "price": { "description": "full price per item", "format": "int32", "type": "integer" }, "quantity": { "description": "quantity", "format": "int32", "type": "integer" } }, "required": [ "discountedPrice", "itemId", "itemName", "itemSku", "price" ], "type": "object" }, "Subscribable": { "properties": { "subscribable": { "description": "subscribable", "type": "boolean", "x-omitempty": false } }, "required": [ "subscribable" ], "type": "object" }, "SubscribeRequest": { "properties": { "currencyCode": { "description": "currency code, should match currency code in item region data", "type": "string" }, "itemId": { "description": "item id", "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" }, "returnUrl": { "description": "custom return url for real payment, user will be redirected to this url once payment is finished", "type": "string" }, "source": { "description": "subscription source", "type": "string" } }, "required": [ "currencyCode", "itemId" ], "type": "object" }, "SubscriptionActivityInfo": { "properties": { "action": { "description": "subscription action", "enum": [ "CANCEL", "CHANGE_BILLING_ACCOUNT", "GRANT_DAYS", "IMMEDIATE_CANCEL", "RESUBSCRIBE", "SUBSCRIBE" ], "type": "string" }, "chargedCycles": { "description": "subscription already charged cycle", "format": "int32", "type": "integer" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "currentCycle": { "description": "subscription current cycle number", "format": "int32", "type": "integer" }, "grantDays": { "description": "subscription grant days, negative indicates decrease", "format": "int32", "type": "integer" }, "inFixedCycleTrial": { "description": "Subscription in fixed cycle trial or not", "type": "boolean", "x-omitempty": false }, "inFixedFreeDays": { "description": "Subscription in fixed free days or not", "type": "boolean", "x-omitempty": false }, "namespace": { "description": "Subscription namespace", "type": "string" }, "operator": { "description": "operator", "type": "string" }, "reason": { "description": "subscription action reason", "type": "string" }, "subscribedBy": { "description": "subscription subscribed by", "enum": [ "PLATFORM", "USER" ], "type": "string" }, "subscriptionId": { "description": "Subscription id", "type": "string" }, "trialedCycles": { "description": "Subscription already trialed cycles if exist", "format": "int32", "type": "integer" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "Subscription user id", "type": "string" } }, "required": [ "action", "chargedCycles", "createdAt", "currentCycle", "namespace", "operator", "subscribedBy", "subscriptionId", "updatedAt", "userId" ], "type": "object" }, "SubscriptionActivityPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/SubscriptionActivityInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "SubscriptionInfo": { "properties": { "billingAccount": { "$ref": "#/definitions/BillingAccount", "description": "saved billing account" }, "chargeStatus": { "description": "charge status", "enum": [ "CHARGED", "CHARGE_FAILED", "NEVER", "RECURRING_CHARGING", "SETUP" ], "type": "string" }, "chargedCycles": { "description": "already charged cycles", "format": "int32", "type": "integer" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "currency": { "$ref": "#/definitions/CurrencySummary", "description": "currency" }, "currentCycle": { "description": "current cycle in", "format": "int32", "type": "integer" }, "currentPeriodEnd": { "description": "current period end", "format": "date-time", "type": "string", "x-nullable": true }, "currentPeriodStart": { "description": "current period start", "format": "date-time", "type": "string", "x-nullable": true }, "description": { "description": "description", "type": "string" }, "end": { "description": "end date time if exist, at current it's not used", "format": "date-time", "type": "string", "x-nullable": true }, "entitlements": { "description": "granted entitlement summary", "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" }, "firstSubscribe": { "description": "is first subscribe, will enjoy trial if trial available if it's first time subscribe", "type": "boolean", "x-omitempty": false }, "id": { "description": "id", "type": "string" }, "inFixedCycleTrial": { "description": "whether in fixed cycle trial", "type": "boolean", "x-omitempty": false }, "inFixedFreeDays": { "description": "whether in fixed free days", "type": "boolean", "x-omitempty": false }, "itemId": { "description": "item id", "type": "string" }, "itemSnapshot": { "$ref": "#/definitions/ItemSnapshot", "description": "item snapshot" }, "language": { "description": "created language", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "nextBillingDate": { "description": "next billing date", "format": "date-time", "type": "string", "x-nullable": true }, "paid": { "description": "whether user paid from the subscription start", "type": "boolean", "x-omitempty": false }, "paymentFlowRequired": { "description": "whether need to go to payment station for payment", "type": "boolean", "x-omitempty": false }, "paymentOrderNo": { "description": "current payment order no", "type": "string" }, "paymentStationUrl": { "description": "payment station url", "type": "string" }, "price": { "description": "normal price", "format": "int32", "type": "integer" }, "recurring": { "$ref": "#/definitions/Recurring", "description": "recurring" }, "region": { "description": "created region", "type": "string" }, "retryAttempted": { "description": "payment retry attempted", "format": "int32", "type": "integer" }, "returnUrl": { "description": "payment returnUrl for payment station", "type": "string" }, "sandbox": { "description": "is sandbox mode", "type": "boolean", "x-omitempty": false }, "sku": { "description": "sku", "type": "string" }, "source": { "description": "source", "type": "string" }, "start": { "description": "start date time, it will record the first time subscribed", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "status", "enum": [ "ACTIVE", "CANCELLED", "EXPIRED", "INIT" ], "type": "string" }, "subscribedAt": { "description": "subscribed date time", "format": "date-time", "type": "string", "x-nullable": true }, "subscribedBy": { "description": "subscribed by PLATFORM(system granted) or USER(subscribed by userself)", "enum": [ "PLATFORM", "USER" ], "type": "string" }, "title": { "description": "title", "type": "string" }, "trialPrice": { "description": "trial price", "format": "int32", "type": "integer" }, "trialedCycles": { "description": "already trialed cycles if exist fixedCycleTrial", "format": "int32", "type": "integer" }, "unsubscribeReason": { "description": "unsubscribe reason", "type": "string" }, "unsubscribedAt": { "description": "unsubscribed date time", "format": "date-time", "type": "string", "x-nullable": true }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "user id", "type": "string" } }, "required": [ "chargeStatus", "createdAt", "id", "inFixedCycleTrial", "inFixedFreeDays", "itemId", "namespace", "paymentFlowRequired", "recurring", "status", "updatedAt", "userId" ], "type": "object" }, "SubscriptionPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/SubscriptionInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "SubscriptionSummary": { "properties": { "currentPeriodEnd": { "description": "current period end", "format": "date-time", "type": "string", "x-nullable": true }, "currentPeriodStart": { "description": "current period start", "format": "date-time", "type": "string", "x-nullable": true }, "id": { "description": "subscription id", "type": "string" }, "itemId": { "description": "item id", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "sku": { "description": "sku", "type": "string" }, "status": { "description": "status", "enum": [ "ACTIVE", "CANCELLED", "EXPIRED", "INIT" ], "type": "string" }, "subscribedBy": { "description": "subscribed by PLATFORM(system granted) or USER(subscribed by userself)", "enum": [ "PLATFORM", "USER" ], "type": "string" }, "userId": { "description": "user id", "type": "string" } }, "required": [ "id", "itemId", "namespace", "status", "userId" ], "type": "object" }, "TLSConfig": { "properties": { "rootCertFileBytes": { "description": "root cert file bytes", "items": { "format": "byte", "type": "string" }, "type": "array" }, "rootCertFileName": { "description": "root cert file name", "type": "string" } }, "type": "object" }, "TaxResult": { "properties": { "enableTax": { "description": "if enable tax", "type": "boolean", "x-omitempty": false }, "formattedTax": { "description": "formattedTax", "type": "string" }, "state": { "description": "state", "type": "string" }, "tax": { "description": "tax", "format": "int32", "type": "integer" } }, "type": "object" }, "TestResult": { "properties": { "msg": { "description": "error message", "type": "string" }, "success": { "description": "success", "type": "boolean", "x-omitempty": false } }, "required": [ "success" ], "type": "object" }, "ThirdPartySubscriptionGroupCreate": { "properties": { "sku": { "description": "subscription group sku, allowed characters from a-zA-Z0-9_:- and start/end in alphanumeric, max length is 32", "type": "string" } }, "type": "object" }, "ThirdPartySubscriptionGroupInfo": { "properties": { "sku": { "description": "subscription group sku, unique identification", "type": "string" } }, "type": "object" }, "ThirdPartySubscriptionOwnership": { "properties": { "owned": { "description": "ownership", "type": "boolean", "x-omitempty": false } }, "required": [ "owned" ], "type": "object" }, "ThirdPartySubscriptionTierCreate": { "properties": { "groupSku": { "description": "Group sku", "type": "string" }, "sku": { "description": "Tier sku, allowed characters from a-zA-Z0-9_:- and start/end in alphanumeric, max length is 32", "type": "string" } }, "type": "object" }, "ThirdPartySubscriptionTierInfo": { "properties": { "groupSku": { "description": "Group sku", "type": "string" }, "sku": { "description": "Tier sku", "type": "string" } }, "type": "object" }, "ThirdPartySubscriptionTransactionHistoryInfo": { "properties": { "createdAt": { "description": "created time", "format": "date-time", "type": "string", "x-nullable": true }, "expiredAt": { "description": "subscription current expired time", "format": "date-time", "type": "string", "x-nullable": true }, "id": { "description": "Unique Id", "type": "string" }, "lastTransactionId": { "description": "The userId of the third party subscription", "type": "string" }, "namespace": { "description": "The namespace of the third party subscription", "type": "string" }, "operator": { "description": "operator", "type": "string" }, "reason": { "description": "reason", "type": "string" }, "status": { "description": "status", "enum": [ "ACTIVE", "BILLING_RETRY_PERIOD", "CANCELED", "EXPIRED", "IN_GRACE_PERIOD", "ON_HOLD", "PAUSED", "PENDING", "REVOKED", "UNKNOWN" ], "type": "string" }, "subscriptionProductId": { "description": "subscription product id", "type": "string" }, "thirdPartySubscriptionId": { "description": "third party subscription Id", "type": "string" }, "updatedAt": { "description": "updated time", "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "description": "The userId of the third party subscription", "type": "string" } }, "required": [ "id", "namespace", "status", "thirdPartySubscriptionId", "userId" ], "type": "object" }, "ThirdPartySubscriptionTransactionHistoryPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "ThirdPartySubscriptionTransactionInfo": { "properties": { "active": { "description": "Subscription whether active", "type": "boolean", "x-omitempty": false }, "createdAt": { "description": "Created Time", "format": "date-time", "type": "string", "x-nullable": true }, "expiredAt": { "description": "Third Party Subscription expired date", "format": "date-time", "type": "string", "x-nullable": false }, "id": { "description": "Unique Id", "type": "string" }, "lastTransactionId": { "description": "Last Transaction Id", "type": "string" }, "namespace": { "description": "Third Party Subscription namespace", "type": "string" }, "originalTransactionId": { "description": "Third Party Subscription original transaction id", "type": "string" }, "platform": { "description": "Third Party Subscription platform", "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "type": "string" }, "purchaseToken": { "description": "Purchase Token", "type": "string" }, "startAt": { "description": "Third Party Subscription expired date", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "Third Party Subscription status", "enum": [ "ACTIVE", "BILLING_RETRY_PERIOD", "CANCELED", "EXPIRED", "IN_GRACE_PERIOD", "ON_HOLD", "PAUSED", "PENDING", "REVOKED", "UNKNOWN" ], "type": "string" }, "subscriptionGroupId": { "description": "Third Party Subscription group id", "type": "string" }, "subscriptionProductId": { "description": "Third Party Subscription product id", "type": "string" }, "updatedAt": { "description": "Updated Time", "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "description": "Third Party Subscription user", "type": "string" } }, "required": [ "active", "expiredAt", "id", "namespace", "originalTransactionId", "platform", "status", "subscriptionProductId", "userId" ], "type": "object" }, "ThirdPartySubscriptionTransactionPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/ThirdPartySubscriptionTransactionInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "ThirdPartyUserSubscriptionInfo": { "properties": { "active": { "description": "user subscription whether active", "type": "boolean", "x-omitempty": false }, "createdAt": { "description": "Created Time", "format": "date-time", "type": "string", "x-nullable": true }, "expiredAt": { "description": "Current Third Party Subscription expired date", "format": "date-time", "type": "string", "x-nullable": false }, "id": { "description": "Unique Id", "type": "string" }, "lastTransactionId": { "description": "Last AGS Third Party Subscription id", "type": "string" }, "namespace": { "description": "Third Party user subscription namespace", "type": "string" }, "platform": { "description": "Third Party user subscription platform", "enum": [ "APPLE", "EPICGAMES", "GOOGLE", "OCULUS", "PLAYSTATION", "STADIA", "STEAM", "TWITCH", "XBOX" ], "type": "string" }, "startAt": { "description": "Current Third Party Subscription start at", "format": "date-time", "type": "string", "x-nullable": true }, "status": { "description": "Current Third Party user Subscription status", "enum": [ "ACTIVE", "BILLING_RETRY_PERIOD", "CANCELED", "EXPIRED", "IN_GRACE_PERIOD", "ON_HOLD", "PAUSED", "PENDING", "REVOKED", "UNKNOWN" ], "type": "string" }, "subscriptionGroupId": { "description": "Current Third Party Subscription group id", "type": "string" }, "subscriptionProductId": { "description": "Current Third Party Subscription product id", "type": "string" }, "updatedAt": { "description": "Updated Time", "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "description": "Third Party user subscription user", "type": "string" } }, "required": [ "active", "expiredAt", "id", "namespace", "platform", "status", "subscriptionProductId", "userId" ], "type": "object" }, "ThirdPartyUserSubscriptionPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/ThirdPartyUserSubscriptionInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "TicketAcquireRequest": { "properties": { "count": { "description": "acquire count", "format": "int32", "type": "integer" }, "orderNo": { "description": "order no", "type": "string" } }, "required": [ "count", "orderNo" ], "type": "object" }, "TicketAcquireResult": { "properties": { "values": { "description": "acquired values", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "TicketBoothID": { "properties": { "id": { "description": "id", "type": "string" }, "type": { "description": "type", "enum": [ "CAMPAIGN", "KEYGROUP" ], "type": "string" } }, "required": [ "id", "type" ], "type": "object" }, "TicketDynamicInfo": { "properties": { "availableSaleCount": { "description": "The available sale count, -1 means UNLIMITED", "format": "int32", "type": "integer" } }, "required": [ "availableSaleCount" ], "type": "object" }, "TicketSaleDecrementRequest": { "properties": { "orderNo": { "description": "orderNo", "type": "string" } }, "required": [ "orderNo" ], "type": "object" }, "TicketSaleIncrementRequest": { "properties": { "count": { "description": "increment", "format": "int32", "type": "integer" }, "orderNo": { "description": "order No", "type": "string" } }, "required": [ "count", "orderNo" ], "type": "object" }, "TicketSaleIncrementResult": { "properties": { "maxSaleCount": { "description": "max sale count", "format": "int32", "type": "integer" }, "success": { "description": "operation result", "type": "boolean", "x-omitempty": false } }, "required": [ "maxSaleCount", "success" ], "type": "object" }, "TimeLimitedBalance": { "properties": { "balance": { "description": "balance", "format": "int64", "type": "integer" }, "balanceSource": { "description": "balance source", "type": "string" }, "expireAt": { "description": "balance expire time", "format": "date-time", "type": "string", "x-nullable": true } }, "type": "object" }, "TimedOwnership": { "properties": { "endDate": { "description": "end date", "format": "date-time", "type": "string", "x-nullable": true }, "owned": { "description": "ownership", "type": "boolean", "x-omitempty": false } }, "required": [ "owned" ], "type": "object" }, "TradeActionPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/TradeChainActionHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "TradeChainActionHistoryInfo": { "properties": { "actions": { "description": "chained actions", "items": { "$ref": "#/definitions/Action" }, "type": "array" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "metadata", "type": "object" }, "namespace": { "description": "namespace", "type": "string" }, "status": { "description": "status of the whole chained actions", "enum": [ "FAILED", "INIT", "SUCCESS" ], "type": "string" }, "statusReason": { "description": "failed reason", "type": "string" }, "transactionId": { "description": "transaction Id provided by submitter", "type": "string" }, "type": { "description": "type defined by submitted", "type": "string" }, "userIds": { "description": "user Ids involved", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "TradeChainedActionCommitRequest": { "description": "Represents the request to commit a chained trade action.", "properties": { "actions": { "items": { "$ref": "#/definitions/ActionRequest" }, "type": "array" }, "metadata": { "additionalProperties": { "type": "object" }, "type": "object" }, "needPreCheck": { "type": "boolean", "x-omitempty": false }, "transactionId": { "type": "string" }, "type": { "type": "string" } }, "type": "object" }, "TradeNotification": { "properties": { "additionalData": { "$ref": "#/definitions/AdditionalData", "description": "additional data" }, "authorisedTime": { "description": "The time of the order authorised", "format": "date-time", "type": "string", "x-nullable": true }, "chargebackReversedTime": { "description": "The time of the order chargeback reversed", "format": "date-time", "type": "string", "x-nullable": true }, "chargebackTime": { "description": "The time of the order chargeback", "format": "date-time", "type": "string", "x-nullable": true }, "chargedTime": { "description": "The time of the order charged", "format": "date-time", "type": "string", "x-nullable": true }, "createdTime": { "description": "The time of the order created", "format": "date-time", "type": "string", "x-nullable": true }, "currency": { "$ref": "#/definitions/CurrencySummary", "description": "Payment order currency info" }, "customParameters": { "additionalProperties": { "type": "object" }, "description": "User custom parameters", "type": "object" }, "extOrderNo": { "description": "Order number", "type": "string" }, "extTxId": { "description": "External transaction id", "type": "string" }, "extUserId": { "description": "optional, external user id, can be the character id", "type": "string" }, "issuedAt": { "description": "event issued at", "format": "date-time", "type": "string", "x-nullable": false }, "metadata": { "additionalProperties": { "type": "string" }, "description": "metadata", "type": "object" }, "namespace": { "description": "namespace which event issues from", "type": "string" }, "nonceStr": { "description": "Random string", "type": "string" }, "paymentData": { "$ref": "#/definitions/PaymentData", "description": "payment data" }, "paymentMethod": { "description": "Payment method", "type": "string" }, "paymentMethodFee": { "description": "Payment method fee", "format": "int32", "type": "integer" }, "paymentOrderNo": { "description": "Payment order number", "type": "string" }, "paymentProvider": { "description": "Payment provider", "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "paymentProviderFee": { "description": "Payment provider fee", "format": "int32", "type": "integer" }, "paymentStationUrl": { "description": "Payment station url", "type": "string" }, "price": { "description": "Payment order price", "format": "int32", "type": "integer" }, "refundedTime": { "description": "The time of the order refunded", "format": "date-time", "type": "string", "x-nullable": true }, "salesTax": { "description": "Payment order sales tax", "format": "int32", "type": "integer" }, "sandbox": { "description": "isSandbox, indicate if order is sandbox", "type": "boolean", "x-omitempty": false }, "sku": { "description": "optional, unique identity for the item", "type": "string" }, "status": { "description": "Payment order status", "enum": [ "AUTHORISED", "AUTHORISE_FAILED", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGED", "CHARGE_FAILED", "DELETED", "INIT", "NOTIFICATION_OF_CHARGEBACK", "REFUNDED", "REFUNDING", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "type": "string" }, "statusReason": { "description": "Payment order status reason", "type": "string" }, "subscriptionId": { "description": "Subscription id if exist", "type": "string" }, "subtotalPrice": { "description": "subtotal price", "format": "int32", "type": "integer" }, "targetNamespace": { "description": "target namespace, usually it's the game namespace", "type": "string" }, "targetUserId": { "description": "target user id, usually it's the user id in game namespace", "type": "string" }, "tax": { "description": "Payment total tax", "format": "int32", "type": "integer" }, "totalPrice": { "description": "total price", "format": "int32", "type": "integer" }, "totalTax": { "description": "total tax", "format": "int32", "type": "integer" }, "txEndTime": { "description": "Transaction end date time", "format": "date-time", "type": "string", "x-nullable": true }, "type": { "description": "notification type: payment", "type": "string" }, "userId": { "description": "user id in namespace, will be null if there's targetUserId", "type": "string" }, "vat": { "description": "Payment order VAT", "format": "int32", "type": "integer" } }, "required": [ "currency", "extOrderNo", "issuedAt", "namespace", "nonceStr", "paymentOrderNo", "paymentProvider", "price", "sandbox", "status", "type" ], "type": "object" }, "Transaction": { "properties": { "additionalData": { "$ref": "#/definitions/AdditionalData" }, "amount": { "format": "int32", "type": "integer" }, "currency": { "$ref": "#/definitions/CurrencySummary" }, "extMessage": { "type": "string" }, "extStatusCode": { "type": "string" }, "extTxId": { "type": "string" }, "merchantId": { "type": "string" }, "notified": { "type": "boolean", "x-omitempty": false }, "paymentData": { "$ref": "#/definitions/PaymentData" }, "paymentMethod": { "type": "string" }, "paymentMethodFee": { "format": "int32", "type": "integer" }, "paymentProviderFee": { "format": "int32", "type": "integer" }, "provider": { "enum": [ "ADYEN", "ALIPAY", "CHECKOUT", "NEONPAY", "PAYPAL", "STRIPE", "WALLET", "WXPAY", "XSOLLA" ], "type": "string" }, "salesTax": { "format": "int32", "type": "integer" }, "status": { "enum": [ "FAILED", "FINISHED" ], "type": "string" }, "tax": { "format": "int32", "type": "integer" }, "txEndTime": { "format": "date-time", "type": "string", "x-nullable": true }, "txId": { "type": "string" }, "type": { "enum": [ "AUTHORISATION", "CHARGE", "CHARGEBACK", "CHARGEBACK_REVERSED", "CHARGE_FAILED", "NOTIFICATION_OF_CHARGEBACK", "REFUND", "REFUND_FAILED", "REQUEST_FOR_INFORMATION" ], "type": "string" }, "vat": { "format": "int32", "type": "integer" } }, "type": "object" }, "TransactionAmountDetails": { "properties": { "amount": { "format": "int64", "type": "integer" }, "expireAt": { "format": "date-time", "type": "string", "x-nullable": true }, "origin": { "type": "string" }, "walletId": { "type": "string" } }, "type": "object" }, "TwitchIAPConfigInfo": { "properties": { "clientId": { "description": "twitch client id", "type": "string" }, "clientSecret": { "description": "twitch client secret", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "organizationId": { "description": "twitch organization Id", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "TwitchIAPConfigRequest": { "properties": { "clientId": { "description": "twitch client id", "type": "string" }, "clientSecret": { "description": "twitch client secret", "type": "string" }, "organizationId": { "description": "twitch organization Id", "type": "string" } }, "type": "object" }, "TwitchSyncRequest": { "properties": { "gameId": { "description": "game id", "type": "string" }, "language": { "description": "language value from language tag, allowed format: en, en-US.\u003cp\u003eSupported language tag : [RFC5646](https://gist.github.com/msikma/8912e62ed866778ff8cd) and [IETF](https://datahub.io/core/language-codes#resource-ietf-language-tags)\u003c/p\u003e", "pattern": "^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$", "type": "string" }, "region": { "description": "country value from ISO countries", "type": "string" } }, "type": "object" }, "TwitchSyncResult": { "properties": { "iapOrderStatus": { "description": "order status", "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "type": "string" }, "itemSku": { "description": "Item sku", "type": "string" }, "transactionId": { "description": "Twitch entitlement id", "type": "string" } }, "type": "object" }, "UserDLC": { "properties": { "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "dlcs": { "items": { "$ref": "#/definitions/DLCRecord" }, "type": "array" }, "id": { "type": "string" }, "namespace": { "type": "string" }, "platform": { "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "type": "string" }, "rvn": { "format": "int32", "type": "integer" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "userId": { "type": "string" } }, "type": "object" }, "UserDLCRecord": { "properties": { "dlcRewardVersion": { "format": "int32", "type": "integer" }, "entitlementOriginSyncResult": { "items": { "$ref": "#/definitions/EntitlementOriginSyncResult" }, "type": "array" }, "entitlementOriginSyncStatus": { "enum": [ "NOT_SYNCED", "SYNCED", "SYNCED_FAILED" ], "type": "string" }, "entitlementSummaries": { "items": { "$ref": "#/definitions/EntitlementSummary" }, "type": "array" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "type": "object" }, "namespace": { "description": "namespace", "type": "string" }, "obtainedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "platform": { "description": "platform", "enum": [ "EPICGAMES", "OCULUS", "PSN", "STEAM", "XBOX" ], "type": "string" }, "revocationResult": { "$ref": "#/definitions/RevocationResult" }, "revokeResults": { "items": { "$ref": "#/definitions/RevokeResult" }, "type": "array" }, "revokedAt": { "format": "date-time", "type": "string", "x-nullable": true }, "rewards": { "items": { "$ref": "#/definitions/PlatformReward" }, "type": "array" }, "sources": { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "status": { "enum": [ "FULFILLED", "REVOKED", "REVOKE_FAILED" ], "type": "string" }, "transactionId": { "type": "string" }, "userId": { "description": "userId", "type": "string" }, "version": { "format": "int32", "type": "integer" } }, "type": "object" }, "UserEntitlementHistoryPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/PublicEntitlementHistoryInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "ValidationErrorEntity": { "properties": { "errorCode": { "description": "numeric error code", "format": "int32", "type": "integer" }, "errorMessage": { "description": "error message", "type": "string" }, "errors": { "items": { "$ref": "#/definitions/FieldValidationError" }, "type": "array" } }, "required": [ "errorCode", "errorMessage" ], "type": "object" }, "ViewCreate": { "description": "A DTO object for creating view API call.", "properties": { "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "name": { "description": "view name", "type": "string" } }, "required": [ "displayOrder", "localizations", "name" ], "type": "object" }, "ViewInfo": { "properties": { "createdAt": { "description": "view created time", "format": "date-time", "type": "string", "x-nullable": false }, "description": { "description": "description info", "type": "string" }, "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "localExt": { "additionalProperties": { "type": "object" }, "type": "object" }, "longDescription": { "description": "long description info", "type": "string" }, "name": { "description": "view name", "type": "string" }, "namespace": { "description": "view namespace", "type": "string" }, "title": { "description": "title info", "type": "string" }, "updatedAt": { "description": "view updated time", "format": "date-time", "type": "string", "x-nullable": false }, "viewId": { "description": "view id", "type": "string" } }, "required": [ "createdAt", "displayOrder", "name", "namespace", "title", "updatedAt", "viewId" ], "type": "object" }, "ViewUpdate": { "description": "A DTO object for updating view API call.", "properties": { "displayOrder": { "description": "display order", "format": "int32", "type": "integer" }, "localizations": { "additionalProperties": { "$ref": "#/definitions/Localization" }, "description": "Localization, key language, value localization content", "type": "object" }, "name": { "description": "view name", "type": "string" } }, "required": [ "name" ], "type": "object" }, "WalletConfigInfo": { "properties": { "enablePaidForVCExpiration": { "description": "enablePaidForVCExpiration", "type": "boolean", "x-omitempty": false }, "namespace": { "description": "namespace", "type": "string" } }, "type": "object" }, "WalletConfigUpdate": { "properties": { "enablePaidForVCExpiration": { "description": "enablePaidForVCExpiration", "type": "boolean", "x-omitempty": false } }, "required": [ "enablePaidForVCExpiration" ], "type": "object" }, "WalletInfo": { "properties": { "balance": { "description": "total balance, include effective time-limited balance", "format": "int64", "type": "integer" }, "balanceOrigin": { "description": "origin of balance", "type": "string" }, "createdAt": { "description": "created at", "format": "date-time", "type": "string", "x-nullable": false }, "currencyCode": { "description": "currency code", "type": "string" }, "currencySymbol": { "description": "currency symbol", "type": "string" }, "id": { "description": "wallet id", "type": "string" }, "namespace": { "description": "wallet namespace", "type": "string" }, "status": { "description": "status", "enum": [ "ACTIVE", "INACTIVE" ], "type": "string" }, "timeLimitedBalances": { "description": "time-limited balances info", "items": { "$ref": "#/definitions/TimeLimitedBalance" }, "type": "array" }, "totalPermanentBalance": { "description": "total permanent balance", "format": "int64", "type": "integer" }, "totalTimeLimitedBalance": { "description": "total time limited balance", "format": "int64", "type": "integer" }, "updatedAt": { "description": "updated at", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "user id", "type": "string" } }, "required": [ "balance", "balanceOrigin", "createdAt", "currencyCode", "currencySymbol", "id", "namespace", "status", "updatedAt", "userId" ], "type": "object" }, "WalletPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/WalletInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "WalletRevocationConfig": { "properties": { "enabled": { "description": "will do revocation if enabled, otherwise will skip do revocation.", "type": "boolean", "x-omitempty": false }, "strategy": { "description": "wallet revocation strategy", "enum": [ "ALWAYS_REVOKE", "CUSTOM", "REVOKE_OR_REPORT" ], "type": "string" } }, "type": "object" }, "WalletTransactionInfo": { "properties": { "amount": { "description": "Transaction amount, it is absolute value.", "format": "int64", "type": "integer" }, "balanceSource": { "description": "The source of credit", "type": "string" }, "createdAt": { "description": "Transaction created time", "format": "date-time", "type": "string", "x-nullable": false }, "currencyCode": { "description": "Transaction currency code", "type": "string" }, "metadata": { "additionalProperties": { "type": "object" }, "description": "wallet transaction metadata", "type": "object" }, "namespace": { "description": "Wallet namespace", "type": "string" }, "operator": { "description": "Operator userId or ClientId", "type": "string" }, "reason": { "description": "Reason of the transaction", "type": "string" }, "transactionAmountDetails": { "description": "Transaction amount details", "items": { "$ref": "#/definitions/TransactionAmountDetails" }, "type": "array" }, "updatedAt": { "description": "Transaction updated time", "format": "date-time", "type": "string", "x-nullable": false }, "userId": { "description": "Wallet owner's userId", "type": "string" }, "walletAction": { "description": "Action type, remove expired limited time balance will not have wallet action.", "enum": [ "CREDIT", "DEBIT", "PAYMENT" ], "type": "string" } }, "required": [ "amount", "createdAt", "currencyCode", "namespace", "operator", "updatedAt", "userId" ], "type": "object" }, "WalletTransactionPagingSlicedResult": { "properties": { "data": { "description": "data", "items": { "$ref": "#/definitions/WalletTransactionInfo" }, "type": "array" }, "paging": { "$ref": "#/definitions/Paging" } }, "required": [ "data" ], "type": "object" }, "WxPayConfigInfo": { "description": "A DTO object for wxpay config.", "properties": { "appId": { "description": "wxpay appId", "type": "string" }, "certPath": { "description": "wxpay cert file name", "type": "string" }, "key": { "description": "wxpay key", "type": "string" }, "mchid": { "description": "wxpay mchid", "type": "string" }, "returnUrl": { "description": "return url", "type": "string" } }, "type": "object" }, "WxPayConfigRequest": { "description": "A DTO object for updating wxpay config.", "properties": { "appId": { "description": "wxpay appId", "type": "string" }, "key": { "description": "wxpay key", "type": "string" }, "mchid": { "description": "wxpay mchid", "type": "string" }, "returnUrl": { "description": "return url", "type": "string" } }, "type": "object" }, "XblAchievementUpdateRequest": { "description": "A DTO object for update xbox achievement complete percentage API", "properties": { "achievements": { "description": "achievements to be updated", "items": { "$ref": "#/definitions/XboxAchievement" }, "type": "array" }, "serviceConfigId": { "type": "string" }, "titleId": { "type": "string" }, "xboxUserId": { "description": "xbox live user id", "type": "string" } }, "type": "object" }, "XblClawbackContractV2": { "properties": { "eventDate": { "type": "string" }, "eventState": { "type": "string" }, "lineItemId": { "type": "string" }, "orderId": { "type": "string" }, "productId": { "type": "string" }, "productType": { "type": "string" }, "purchasedDate": { "type": "string" }, "sandboxId": { "type": "string" }, "skuId": { "type": "string" }, "subscriptionData": { "$ref": "#/definitions/XblClawbackEventSubscriptionData" } }, "required": [ "eventState", "lineItemId", "orderId", "productId" ], "type": "object" }, "XblClawbackEvent": { "properties": { "data": { "$ref": "#/definitions/XblClawbackContractV2" }, "datacontenttype": { "type": "string" }, "id": { "type": "string" }, "source": { "type": "string" }, "specVersion": { "type": "string" }, "subject": { "type": "string" }, "time": { "type": "string" }, "traceparent": { "type": "string" }, "type": { "type": "string" } }, "required": [ "data", "id", "source", "type" ], "type": "object" }, "XblClawbackEventSubscriptionData": { "properties": { "consumedDurationInDays": { "format": "int32", "type": "integer" }, "dateTime": { "type": "string" }, "durationInDays": { "format": "int32", "type": "integer" }, "recurrenceId": { "type": "string" } }, "type": "object" }, "XblDLCSyncRequest": { "properties": { "xstsToken": { "description": "xstsToken", "type": "string" } }, "type": "object" }, "XblEntitlementOwnershipRequest": { "properties": { "delegationToken": { "type": "string" }, "sandboxId": { "type": "string" } }, "type": "object" }, "XblIAPConfigInfo": { "properties": { "businessPartnerCertExpiredTime": { "description": "businessPartnerCertExpiredTime", "format": "date-time", "type": "string", "x-nullable": true }, "businessPartnerCertFileName": { "description": "businessPartnerCertFileName", "type": "string" }, "enableClawback": { "description": "enable XBL stream event job, will enable stream event job to sync XBL refund chargeback etc event if it's true", "type": "boolean", "x-omitempty": false }, "entraAppClientId": { "description": "entraAppClientId", "type": "string" }, "entraAppClientSecret": { "description": "entraAppClientSecret", "type": "string" }, "entraTenantId": { "description": "entraTenantId", "type": "string" }, "namespace": { "description": "namespace", "type": "string" }, "password": { "description": "password", "type": "string" }, "relyingPartyCert": { "description": "deprecated - relyingPartyCert", "type": "string" } }, "required": [ "namespace" ], "type": "object" }, "XblIAPConfigRequest": { "properties": { "enableClawback": { "description": "enable XBL stream event job, will enable stream event job to sync XBL refund chargeback etc event if it's true", "type": "boolean", "x-omitempty": false }, "entraAppClientId": { "description": "entraAppClientId", "type": "string" }, "entraAppClientSecret": { "description": "entraAppClientSecret", "type": "string" }, "entraTenantId": { "description": "entraTenantId", "type": "string" }, "relyingPartyCert": { "description": "deprecated - relyingPartyCert", "type": "string" } }, "type": "object" }, "XblReconcileRequest": { "properties": { "currencyCode": { "description": "product price currency", "type": "string" }, "price": { "description": "product price", "format": "double", "type": "number" }, "productId": { "description": "productId", "type": "string" }, "xstsToken": { "description": "xstsToken", "type": "string" } }, "type": "object" }, "XblReconcileResult": { "properties": { "iapOrderStatus": { "enum": [ "FAILED", "FULFILLED", "PARTIAL_REVOKED", "REVOKED", "REVOKE_FAILED", "VERIFIED" ], "type": "string" }, "itemId": { "type": "string" }, "sku": { "type": "string" }, "transactionId": { "type": "string" }, "xboxProductId": { "type": "string" } }, "type": "object" }, "XblUserAchievements": { "description": "A DTO object for querying xbox user achievements", "properties": { "achievements": { "description": "user achievements, including unlocked and in progress", "items": { "$ref": "#/definitions/AchievementInfo" }, "type": "array" } }, "type": "object" }, "XblUserSessionRequest": { "description": "A DTO object for xbl user session", "properties": { "gameSessionId": { "description": "game session id", "type": "string" }, "payload": { "description": "session objects", "type": "object" }, "scid": { "description": "service config id", "type": "string" }, "sessionTemplateName": { "description": "session template name", "type": "string" } }, "required": [ "gameSessionId", "payload", "scid", "sessionTemplateName" ], "type": "object" }, "XboxAchievement": { "description": "xbox achievement request", "properties": { "id": { "description": "achievement id", "type": "string" }, "percentComplete": { "description": "complete percentage", "format": "int64", "type": "integer" } }, "type": "object" }, "XsollaConfig": { "description": "A DTO object for updating xsolla config.", "properties": { "apiKey": { "description": "api key, max length is 4096", "type": "string" }, "flowCompletionUrl": { "description": "flow completion url, max length is 2000", "type": "string" }, "merchantId": { "description": "merchant id", "format": "int32", "type": "integer" }, "projectId": { "description": "project id", "format": "int32", "type": "integer" }, "projectSecretKey": { "description": "project secret key, max length is 4096", "type": "string" } }, "type": "object" }, "XsollaPaywallConfig": { "properties": { "device": { "description": "device", "enum": [ "DESKTOP", "MOBILE" ], "type": "string" }, "showCloseButton": { "description": "showCloseButton", "type": "boolean", "x-omitempty": false }, "size": { "description": "size", "enum": [ "LARGE", "MEDIUM", "SMALL" ], "type": "string" }, "theme": { "description": "theme", "enum": [ "DARK", "DEFAULT", "DEFAULT_DARK" ], "type": "string" } }, "required": [ "device", "showCloseButton", "size", "theme" ], "type": "object" }, "XsollaPaywallConfigRequest": { "properties": { "device": { "description": "Payment UI device type, DESKTOP for default", "enum": [ "DESKTOP", "MOBILE" ], "type": "string" }, "showCloseButton": { "description": "Whether to show a Close button in pay station. false by default", "type": "boolean", "x-omitempty": false }, "size": { "description": "Payment UI size, MEDIUM for default.", "enum": [ "LARGE", "MEDIUM", "SMALL" ], "type": "string" }, "theme": { "description": "Payment UI theme, DEFAULT for default.", "enum": [ "DARK", "DEFAULT", "DEFAULT_DARK" ], "type": "string" } }, "type": "object" } }, "x-docs": { "alias": "platform", "host": "https://stage.accelbyte.io", "path": "/platform/swagger.json" }, "x-version": { "buildBy": "Gradle 8.5", "buildDate": "2025-11-19T03:12:09+00:00", "buildID": "6.10.0", "buildJDK": "21.0.6 (Amazon.com Inc. 21.0.6+7-LTS)", "buildOS": "Linux amd64 5.10.245-241.978.amzn2.x86_64", "gitBranchName": "release-candidate", "gitHash": "b7d3e1d68a", "gitTag": "6.10.0", "name": "justice-platform-service", "realm": "staging", "version": "6.10.0", "version-roles-seeding": "1.2.118" } }