{ "host": "demo.accelbyte.io", "info": { "description": "Justice Session Service", "title": "justice-session-service", "version": "3.28.0" }, "schemes": [ "https" ], "externalDocs": { "description": "API Docs", "url": "https://stage.accelbyte.io/session/apidocs" }, "securityDefinitions": { "authorization": { "in": "header", "name": "Authorization", "type": "apiKey" } }, "swagger": "2.0", "paths": { "/healthz": { "get": { "operationId": "GetHealthcheckInfo", "produces": [ "application/json" ], "responses": { "200": { "description": "OK" } }, "security": [ { "authorization": [] } ], "x-errorCodes": {} } }, "/session/healthz": { "get": { "operationId": "GetHealthcheckInfoV1", "produces": [ "application/json" ], "responses": { "200": { "description": "OK" } }, "security": [ { "authorization": [] } ], "x-errorCodes": {} } }, "/session/v1/admin/config/log": { "get": { "consumes": [ "application/json" ], "description": "Get Log Configuration.\u0026lt;br\u0026gt;", "operationId": "adminGetLogConfig", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/logconfig.Configuration" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get Log Configuration", "tags": [ "Config" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:CONFIG:LOG [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Update Log Configuration.\u0026lt;br\u0026gt;", "operationId": "adminPatchUpdateLogConfig", "parameters": [ { "description": "Optional values can be omitted and will update partially", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/logconfig.Configuration" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/logconfig.Configuration" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Patch Update Log Configuration", "tags": [ "Config" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:CONFIG:LOG [UPDATE]" ] } ] } }, "/session/v1/admin/dsconfigs/default": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "Get the DSMC default configuration from this service", "operationId": "adminGetDSMCConfigurationDefault", "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/models.DefaultDSMCConfig" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get dsmc default configuration.", "tags": [ "DSMC Default Configuration" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [READ]" ] } ] } }, "/session/v1/admin/environment-variables": { "get": { "consumes": [ "application/json" ], "description": "List of environment variables.", "operationId": "adminListEnvironmentVariables", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.EnvironmentVariableListResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "List of environment variables.", "tags": [ "Environment Variable" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:SESSION:CONFIGURATION:ENVIRONMENTVARIABLE [READ]" ] } ] } }, "/session/v1/admin/global-configurations": { "delete": { "consumes": [ "application/json" ], "description": "Delete of global configuration data.", "operationId": "adminDeleteGlobalConfiguration", "produces": [ "application/json" ], "responses": { "204": { "description": "No Content", "schema": { "type": "string" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete of global configuration data.", "tags": [ "Global Configuration" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:SESSION:CONFIGURATION [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Record of global configuration data.", "operationId": "adminListGlobalConfiguration", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GlobalConfigurationResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Record of global configuration data.", "tags": [ "Global Configuration" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:SESSION:CONFIGURATION [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Upsert global configuration data.", "operationId": "adminUpdateGlobalConfiguration", "parameters": [ { "description": "Update global configuration", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.PutGlobalConfigurationRequest" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GlobalConfigurationResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Upsert global configuration data.", "tags": [ "Global Configuration" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:SESSION:CONFIGURATION [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/alerts-configuration": { "delete": { "consumes": [ "application/json" ], "description": "Delete configuration alert.", "operationId": "adminDeleteConfigurationAlertV1", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete configuration alert.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get a configuration alert.", "operationId": "adminGetConfigurationAlertV1", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/apimodels.ConfigAlertResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get configuration alert.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Create configuration alert\nconfiguration alert mandatory :\n- namespace\n- durationDays must be greater than 0\n", "operationId": "adminCreateConfigurationAlertV1", "parameters": [ { "description": "Create configuration alert request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.ConfigAlertRequestCreate" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/apimodels.ConfigAlertResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create configuration alert.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Update configuration alert\nconfiguration alert mandatory :\n- namespace\n- durationDays must be greater than 0\n", "operationId": "adminUpdateConfigurationAlertV1", "parameters": [ { "description": "Update configuration alert request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.ConfigAlertRequestCreate" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.ConfigAlertResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update configuration alert.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/certificates/pfx/platforms/xbl": { "put": { "consumes": [ "multipart/form-data" ], "deprecated": true, "description": "Upload certificates for XBox. Certificate must be in the valid form of PFX format. \u0026#39;certname\u0026#39;\u0026#39; must be specified to \u0026#39;xbl-pfx\u0026#39; for Session Sync to work", "operationId": "adminUploadXBoxCertificate", "parameters": [ { "description": "the file to upload", "in": "formData", "name": "file", "required": true, "type": "file" }, { "description": "the uploaded file password", "in": "formData", "name": "password", "required": true, "type": "string" }, { "description": "certificate name", "in": "formData", "name": "certname", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "the description of the uploaded file", "in": "formData", "name": "description", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.PlatformCredentials" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Upload certificates for XBox.", "tags": [ "Certificate" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CERTIFICATES [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/configuration": { "post": { "consumes": [ "application/json" ], "description": "Create template configuration to be applied across party and session.\nSession configuration mandatory :\n- name\n- joinability. supported values:\n\t- OPEN: user can join or rejoin the session without an invite\n\t- CLOSED: once a CLOSED session is created or a session joinability is updated to CLOSED, any change to session members is not allowed and remaining invites will all be canceled.\n\t- INVITE_ONLY: to join the session, user whether needs to be invited, or have the code (for join by code). when a user is KICKED/LEFT/REJECTED from this session, they will need to be re-invited to join.\n\t- FRIENDS_OF_MEMBERS: only if a user is friend with at least one of the session members, they can join via code.\n\t- FRIENDS_OF_LEADER: only if a user is friend with the session leader, they can join via code.\n\t- FRIENDS_OF_FRIENDS: only friends of the leader OR friends of friends of the leader can join via code.\n- autoJoin: when enabled, players will automatically join the initial game session creation. Game session will not send any invite and players dont need to act upon it. default: false (disabled)\n- Type (example value : P2P, DS, NONE) if type empty, type will be assign to NONE\n- MinPlayers (must greater or equal 0)\n- MaxPlayers (must greater than 0)\n- InviteTimeout (must greater or equal 0) if InviteTimeout equal 0 will be use default DefaultTimeoutSecond (60s)\n- InactiveTimeout (must greater or equal 0) if InactiveTimeout equal 0 will be use default DefaultTimeoutSecond (60s)\n- Persistent will only applies to session with type DS (example value true or false, default: false)\n\t- If Persistent True the session always active even DS removing or terminate and Session will be request DS again until DS Ready or Busy.\n\t- To Stop Session Not request again to DS or want Delete Session can Delete Session using endpoint DELETE /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}\n\t- If Persistent False the session will be inactive if all member left and DS terminate or removing\n- nativeSessionSetting:\n\t- XboxSessionTemplateName: the XBox session template name that correspondent to the AB session template, and is needed to define XBox session\u0026#39;s joinRestriction and maxMembersCount when doing the session sync.\n\t- XboxServiceConfigID: the XBox service configuration ID.\n\t- PSNServiceLabel: the PSN service label.\n\t- SessionTitle: the session title. In PSN, this will be used to define name of the session thats displayed on PlayStation system UI.\n\t- ShouldSync: to define whether the service needs to do session sync with native platform(s). Default: false (disabled).\n\t- PSNSupportedPlatforms: the PSN supported platforms. In PSN, if ShouldSync true and PSNSupportedPlatforms is empty, then PS5 will be set as default value.\n\t- PSNDisableSystemUIMenu: items whose operation from the PSN system software UI is to be disabled.\n- PSNBaseUrl this is for base URL PSN if not set will be default value https://s2s.sp-int.playstation.net. In a single namespace only 1 PSN Env that can be used. Multiple session template should refers to the same PSN Env as we have in IAM Service.\n\t- https://s2s.sp-int.playstation.net (DEV, need IP Whitelist)\n\t- https://s2s.prod-qa.playstation.net (QA Environment/PSN Certification)\n\t- https://s2s.np.playstation.net (Production)\n\t- localizedSessionName : for localized name and default language\n\t\texample payload :\n\t\t\u0026#34;localizedSessionName\u0026#34;:{\n\t\t\t\u0026#34;defaultLanguage\u0026#34; : \u0026#34;en-US\u0026#34;\n\t\t\t\u0026#34;localizedText\u0026#34; :{\n\t\t\t\t\u0026#34;en-US\u0026#34; : \u0026#34;title\u0026#34;\n\t\t\t}\n\t\t}\n\t- if the game client wants to enable push context to PSN, game client will need to store PSN_PUSH_CONTEXT_ID on the player attributes, otherwise Session service will try to populate from the session attributes or auto generate with random UUID if empty.\n- TieTeamsSessionLifetime (optional, default: false): If it is set to true, the lifetime of any partyId session inside teams attribute will be tied to the game session. Only applies when the teams partyId is game session.\n- DisableCodeGeneration (optional, default: false): If it is set to true, code will not be generated for party session automatically. \n- DSManualSetReady (optional, default: false): The DS need to call specific end point to flag the DS for game session is ready to accept client connection. \n- EnableSecret (optional, default: false): if configuration template is created with TypeDS and EnableSecret is True, A secret will be created\n- LeaderElectionGracePeriod this is on second (optional, default:0) this is only use for party session, if value \u0026gt; 0 if leader disconnect will be wait until value reach and leader will be change after reach\n- ManualRejoin (optional, default: false): indicates if game client will handle manual rejoin upon websocket reconnection when enabled.\n- DisableResendInvite (optional, default: false): by default, the service will be sending invites until the user reacts to it. enabling this flag will prohibit the service to send reminder invites\u0026#39;.\n- appName (optional, default: empty string). Extend application name that uploaded to AccelByte extends deployment. The application is for custom/external DS management.\n- customURLGRPC (optional: default: empty string). Url for grpc server that server custom/external DS management. This value will be ignore when appName is filled. Value formatted as host:port. Example: yourdomain.com:9989 \n- grpcSessionConfig (optional, default: empty object). Setting for grpc session extends. Session service will calls the grpc when any activity for the game sessions.\n\t- appName (required when customURL is empty) The extends app name that created and uploaded to AccelByte extends deployment.\n\t- customURL (required when appName is empty) The url for grpc server. Format is host:port. Example: mycustomdomain.com:9889. This will be ignore when appName is filled.\n\t- functionFlag (optional, default: -1) Flag to enable which function to calls when any event on the game sessions. The value is bitwise integer.\n\t\t- 0x1 is for created event. Event is sync, anything return from create event will be overide the final game session.\n\t\t- 0x2 is for updated event. Event is async. Called when any update on the game session.\n\t\t- 0x4 is for deleted event. Event is async. Callen when game session got deleted.\n\t\tExample: \n\t\t\t- value 3: enable for created and updated\n\t\t\t- value 7: enable for created, updated, and deleted, etc\n- \tpartyCodeGeneratorString (optional, default: 0123456789ABCDEFGHJKMNPQRSTVWXYZ)\n\tThe code is generated by randomly selecting characters from the allowed set, with at least 6 characters long. Allowed characters:\n\t0123456789ABCDEFGHJKMNPQRSTVWXYZ (All digits 0–9 and uppercase letters A–Z, excluding I, L, O, and U).\n", "operationId": "adminCreateConfigurationTemplateV1", "parameters": [ { "description": "Create configuration template request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.CreateConfigurationTemplateRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/apimodels.ConfigurationTemplateResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create configuration template.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [CREATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/configurations": { "get": { "consumes": [ "application/json" ], "description": "Get all template configurations in specified namespace.", "operationId": "adminGetAllConfigurationTemplatesV1", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "description": "Configuration name", "in": "query", "name": "name", "type": "string" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" }, { "description": "Order of the result. Supported: desc (default), asc", "in": "query", "name": "order", "type": "string" }, { "description": "Order result by specific attribute. Supported: createdAt (default), updatedAt", "in": "query", "name": "orderBy", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.ConfigurationTemplatesResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get configuration templates.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/configurations/{name}": { "delete": { "consumes": [ "application/json" ], "description": "Delete a template configuration.", "operationId": "adminDeleteConfigurationTemplateV1", "parameters": [ { "description": "configuration name", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete configuration template.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get a template configuration.", "operationId": "adminGetConfigurationTemplateV1", "parameters": [ { "description": "configuration name", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/apimodels.ConfigurationTemplateResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get configuration template.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Modify template configuration\nSession configuration mandatory :\n- name\n- joinability. supported values:\n\t- OPEN: user can join or rejoin the session without an invite\n\t- CLOSED: once a CLOSED session is created or a session joinability is updated to CLOSED, any change to session members is not allowed and remaining invites will all be canceled.\n\t- INVITE_ONLY: to join the session, user whether needs to be invited, or have the code (for join by code). when a user is KICKED/LEFT/REJECTED from this session, they will need to be re-invited to join.\n\t- FRIENDS_OF_MEMBERS: only if a user is friend with at least one of the session members, they can join via code.\n\t- FRIENDS_OF_LEADER: only if a user is friend with the session leader, they can join via code.\n\t- FRIENDS_OF_FRIENDS: only friends of the leader OR friends of friends of the leader can join via code.\n- autoJoin: when enabled, players will automatically join the initial game session creation. Game session will not send any invite and players dont need to act upon it. default: false (disabled)\n- Type (example value : P2P, DS, NONE) if type empty, type will be assign to NONE\n- MinPlayers (must greater or equal 0)\n- MaxPlayers (must greater than 0)\n- InviteTimeout (must greater or equal 0) if InviteTimeout equal 0 will be use default DefaultTimeoutSecond (60s)\n- InactiveTimeout (must greater or equal 0) if InactiveTimeout equal 0 will be use default DefaultTimeoutSecond (60s)\n- Persistent Flag only can use with type DS (example value true or false)\n- If Persistent True the session always active even DS removing or terminate and Session will be request DS again until DS Ready or Busy.\n- To Stop Session Not request again to DS or want Delete Session can Delete Session using endpoint DELETE /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}\n- If Persistent False the session will be inactive if all member left and DS terminate or removing\n- nativeSessionSetting:\n\t- XboxSessionTemplateName: the XBox session template name that correspondent to the AB session template, and is needed to define XBox session\u0026#39;s joinRestriction and maxMembersCount when doing the session sync.\n\t- XboxServiceConfigID: the XBox service configuration ID.\n\t- PSNServiceLabel: the PSN service label.\n\t- SessionTitle: the session title. In PSN, this will be used to define name of the session thats displayed on PlayStation system UI.\n\t- ShouldSync: to define whether the service needs to do session sync with native platform(s). Default: false (disabled).\n\t- PSNSupportedPlatforms: the PSN supported platforms. In PSN, if ShouldSync true and PSNSupportedPlatforms is empty, then PS5 will be set as default value.\n\t- PSNDisableSystemUIMenu: items whose operation from the PSN system software UI is to be disabled.\n- PSNBaseUrl this is for base URL PSN if not set will be default value https://s2s.sp-int.playstation.net. In a single namespace only 1 PSN Env that can be used. Multiple session template should refers to the same PSN Env as we have in IAM Service.\n\t- https://s2s.sp-int.playstation.net (DEV, need IP Whitelist)\n\t- https://s2s.prod-qa.playstation.net (QA Environment/PSN Certification)\n\t- https://s2s.np.playstation.net (Production)\n\t- localizedSessionName : for localized name and default language\n\t\texample payload :\n\t\t\u0026#34;localizedSessionName\u0026#34;:{\n\t\t\t\u0026#34;defaultLanguage\u0026#34; : \u0026#34;en-US\u0026#34;\n\t\t\t\u0026#34;localizedText\u0026#34; :{\n\t\t\t\t\u0026#34;en-US\u0026#34; : \u0026#34;title\u0026#34;\n\t\t\t}\n\t\t}\n\t- if the game client wants to enable push context to PSN, game client will need to store PSN_PUSH_CONTEXT_ID on the player attributes, otherwise Session service will try to populate from the session attributes or auto generate with random UUID if empty.\n- TieTeamsSessionLifetime: If it is set to true, the lifetime of any partyId session inside teams attribute will be tied to the game session. Only applies when the teams partyId is game session.\n- DisableCodeGeneration (optional, default: false): If it is set to true, code will not be generated for party session automatically. \n- DSManualSetReady (optional, default: false): The DS need to call specific end point to flag the DS for game session is ready to accept client connection. \n- EnableSecret (optional, default: false): if configuration template is created with TypeDS and EnableSecret is True, A secret will be created.\n- ManualRejoin (optional, default: false): indicates if game client will handle manual rejoin upon websocket reconnection when enabled.\n - DisableResendInvite (optional, default: false): by default, the service will be sending invites until the user reacts to it. enabling this flag will prohibit the service to send reminder invites\u0026#39;.\n- appName (optional, default: empty string). Extend application name that uploaded to AccelByte extends deployment. The application is for custom/external DS management.\n- customURLGRPC (optional: default: empty string). Url for grpc server that server custom/external DS management. This value will be ignore when appName is filled. Value formatted as host:port. Example: yourdomain.com:9989\n- grpcSessionConfig (optional, default: empty object). Setting for grpc session extends. Session service will calls the grpc when any activity for the game sessions.\n\t- appName (required when customURL is empty) The extends app name that created and uploaded to AccelByte extends deployment.\n\t- customURL (required when appName is empty) The url for grpc server. Format is host:port. Example: mycustomdomain.com:9889. This will be ignore when appName is filled.\n\t- functionFlag (optional, default: -1) Flag to enable which function to calls when any event on the game sessions. The value is bitwise integer.\n\t\t- 0x1 is for created event. Event is sync, anything return from create event will be overide the final game session.\n\t\t- 0x2 is for updated event. Event is async. Called when any update on the game session.\n\t\t- 0x4 is for deleted event. Event is async. Callen when game session got deleted.\n\t\tExample: \n\t\t\t- value 3: enable for created and updated\n\t\t\t- value 7: enable for created, updated, and deleted, etc\n- \tpartyCodeGeneratorString (optional, default: 0123456789ABCDEFGHJKMNPQRSTVWXYZ)\n\tThe code is generated by randomly selecting characters from the allowed set, with at least 6 characters long. Allowed characters:\n\t0123456789ABCDEFGHJKMNPQRSTVWXYZ (All digits 0–9 and uppercase letters A–Z, excluding I, L, O, and U).\n", "operationId": "adminUpdateConfigurationTemplateV1", "parameters": [ { "description": "Update configuration template request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.UpdateConfigurationTemplateRequest" } }, { "description": "configuration name", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.ConfigurationTemplateResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update configuration template.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/configurations/{name}/memberactivesession/{userId}": { "get": { "consumes": [ "application/json" ], "description": "\n\t\t\tGet Member Active Session.\n\t\t", "operationId": "adminGetMemberActiveSession", "parameters": [ { "description": "configuration name", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.MemberActiveSession" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get Member Active Session.", "tags": [ "Max Active" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/configurations/{name}/reconcile": { "post": { "consumes": [ "application/json" ], "description": "\n\t\t\tReconcile Max Active Session.\n\t\t\t", "operationId": "adminReconcileMaxActiveSession", "parameters": [ { "description": "Request Reconcile max Active Session", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/models.RequestReconcileMaxActiveSession" } }, { "description": "configuration name", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Reconcile Max Active Session.", "tags": [ "Max Active" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/dsconfigs": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "Get a dsmc configuration.", "operationId": "adminGetDSMCConfiguration", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/models.DSMConfigRecord" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get dsmc configuration .", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/dsconfigs/sync": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "sync dsmc configuration.", "operationId": "adminSyncDSMCConfiguration", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/models.DSMConfigRecord" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "sync dsmc configuration.", "tags": [ "Configuration Template" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:CONFIGURATION [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/gamesessions": { "get": { "consumes": [ "application/json" ], "description": "Get all game sessions.", "operationId": "adminQueryGameSessions", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "configuration template name", "in": "query", "name": "configurationName", "type": "string" }, { "description": "pod name of a dedicated server", "in": "query", "name": "dsPodName", "type": "string" }, { "description": "beginning of game session creation time range in RFC 3339 format e.g. 2022-10-21T07:20:50Z", "in": "query", "name": "fromTime", "type": "string" }, { "description": "game mode", "in": "query", "name": "gameMode", "type": "string" }, { "description": "game session is Persistent. supported: TRUE, FALSE", "in": "query", "name": "isPersistent", "type": "string" }, { "description": "game session is soft deleted. supported: TRUE, FALSE", "in": "query", "name": "isSoftDeleted", "type": "string" }, { "description": "game session joinability to filter. joinability types: OPEN,CLOSED,INVITE_ONLY,FRIENDS_OF_MEMBERS,FRIENDS_OF_LEADER,FRIENDS_OF_FRIENDS", "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "in": "query", "name": "joinability", "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "description": "matchmaking pool", "in": "query", "name": "matchPool", "type": "string" }, { "description": "member user ID", "in": "query", "name": "memberID", "type": "string" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" }, { "description": "Order of the result. Supported: desc (default), asc", "in": "query", "name": "order", "type": "string" }, { "description": "Order result by specific attribute. Supported: createdAt (default), updatedAt", "in": "query", "name": "orderBy", "type": "string" }, { "description": "game session ID", "in": "query", "name": "sessionID", "type": "string" }, { "description": "game session status to filter. supported status: NEED_TO_REQUEST,REQUESTED,AVAILABLE,FAILED_TO_REQUEST,DS_ERROR,PREPARING", "enum": [ "AVAILABLE", "DS_ERROR", "FAILED_TO_REQUEST", "NEED_TO_REQUEST", "PREPARING", "REQUESTED" ], "in": "query", "name": "status", "type": "string" }, { "description": "game session status to filter. supported status: NEED_TO_REQUEST,REQUESTED,AVAILABLE,FAILED_TO_REQUEST,UNKNOWN,ENDED,DS_ERROR,PREPARING,DS_CANCELLED", "enum": [ "AVAILABLE", "DS_CANCELLED", "DS_ERROR", "ENDED", "FAILED_TO_REQUEST", "NEED_TO_REQUEST", "PREPARING", "REQUESTED", "UNKNOWN" ], "in": "query", "name": "statusV2", "type": "string", "x-enum-ignore": true }, { "description": "end of game session creation time range in RFC 3339 format e.g. 2022-10-21T07:20:50Z", "in": "query", "name": "toTime", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get all game sessions.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:GAME [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Query game sessions by admin.\n\nBy default, API will return a list of available game sessions (joinability: open).\nSession service has several DSInformation status to track DS request to DS providers:\n- NEED_TO_REQUEST: number of active players hasn\u0026#39;t reached session\u0026#39;s minPlayers therefore DS has not yet requested.\n- REQUESTED: DS is being requested to DSMC.\n- PREPARING: DS needs to call manual set ready for the game session\n- AVAILABLE: DS is ready to use. The DSMC status for this DS is either READY/BUSY.\n- FAILED_TO_REQUEST: DSMC fails to spin up a DS for session.\n- DS_ERROR: DS provider fails to spin up the DS or the DS itself becomes unreachable\n- DS_CANCELLED: when DSMC is preparing the DS, DSMC will give a temporary DS. In this phase, if you delete the game session, the DS request will be canceled.\n- ENDED: when a game session (match) has finished and DS has done its job, it will terminate itself.\n- UNKNOWN: if any unknown DS status is detected.\nDSInformation has 2 fields for DS status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses.\nDS Source can be DSMC, AMS or custom. In DSMC, a DS request will be put in queue if they dont have available buffers, and DSMC will let the service knows when they finished spinning it up. While AMS doesn\u0026#39;t have a concept of queue. Therefore some \u0026#34;DSInformation.statusV2\u0026#34; only applicable for DSMC.\n", "operationId": "adminQueryGameSessionsByAttributes", "parameters": [ { "description": "A list of attributes to filter from available sessions\n\nParameters:\n- **offset**: pagination offset\n- **limit**: pagination limit (server-side capped by MAX_PAGINATION_LIMIT; default cap 100)\n- **availability**: filter sessions by availability. \n\t- **all**: return all sessions regardless it's full\n\t- **full**: only return active sessions\n\t- default behavior (unset or else): return only available sessions (not full)\n- additional properties: filter by session's attributes\n", "in": "body", "name": "body", "required": true, "schema": { "additionalProperties": {}, "type": "object" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query game sessions by admin", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:GAME [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/gamesessions/bulk": { "delete": { "consumes": [ "application/json" ], "description": "Delete bulk game sessions.", "operationId": "adminDeleteBulkGameSessions", "parameters": [ { "description": "Create Delete bulk gamesessions Request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.DeleteBulkGameSessionRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.DeleteBulkGameSessionsAPIResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete bulk game sessions.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:GAME [DELETE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/gamesessions/{sessionId}/ds": { "put": { "consumes": [ "application/json" ], "description": "When the session template has ds_manual_set_ready as true. Then the DS need to calls this end point in order to notify game client if the DS is ready to accept any game client connection.\n", "operationId": "adminSetDSReady", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.SetDSReadyRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Admin set the DS ready to accept connection", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/gamesessions/{sessionId}/dsinformation": { "put": { "consumes": [ "application/json" ], "description": "This API is used for create custom DS asynchronously flow and is expected to be called after the service receives response from the Async RPC.", "operationId": "adminUpdateDSInformation", "parameters": [ { "description": "DS Information Request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.UpdateGamesessionDSInformationRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update Game Session DS Information for Asynchronous Process.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/gamesessions/{sessionId}/members/{memberId}/kick": { "delete": { "consumes": [ "application/json" ], "description": "Kick member from a game session.", "operationId": "adminKickGameSessionMember", "parameters": [ { "description": "member ID", "in": "path", "name": "memberId", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Kick member from a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:GAME [DELETE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/gamesessions/{sessionId}/members/{memberId}/status/{statusType}": { "put": { "description": "Update a game session member status.", "operationId": "adminUpdateGameSessionMember", "parameters": [ { "description": "member ID", "in": "path", "name": "memberId", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" }, { "description": "status type: INVITED, REJECTED, JOINED, LEFT. Lowercase status type param will be converted to uppercase.", "in": "path", "name": "statusType", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.UpdateGameSessionMemberStatusResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update status of a game session member.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/native-sessions": { "get": { "consumes": [ "application/json" ], "description": "List of native sessions.", "operationId": "adminGetListNativeSession", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" }, { "description": "Order of the result by createdAt. Supported: desc (default), asc", "in": "query", "name": "order", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.NativeSessionPagingResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "List of native sessions.", "tags": [ "Native Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:NATIVE [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/parties": { "get": { "consumes": [ "application/json" ], "description": "Query parties.", "operationId": "adminQueryParties", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "configuration template name", "in": "query", "name": "configurationName", "type": "string" }, { "description": "beginning of party creation time range in RFC 3339 format e.g. 2022-10-21T07:20:50Z", "in": "query", "name": "fromTime", "type": "string" }, { "description": "game session is soft deleted. supported: TRUE, FALSE", "in": "query", "name": "isSoftDeleted", "type": "string" }, { "description": "game session joinability to filter. joinability types: OPEN,CLOSED,INVITE_ONLY,FRIENDS_OF_MEMBERS,FRIENDS_OF_LEADER,FRIENDS_OF_FRIENDS", "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "in": "query", "name": "joinability", "type": "string" }, { "description": "Attribute key", "in": "query", "name": "key", "type": "string" }, { "description": "Leader ID", "in": "query", "name": "leaderID", "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "description": "Member ID", "in": "query", "name": "memberID", "type": "string" }, { "description": "Member status", "enum": [ "CANCELLED", "CONNECTED", "DISCONNECTED", "DROPPED", "INVITED", "JOINED", "KICKED", "LEFT", "REJECTED", "TIMEOUT" ], "in": "query", "name": "memberStatus", "type": "string" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" }, { "description": "Order of the result. Supported: desc (default), asc", "in": "query", "name": "order", "type": "string" }, { "description": "Order result by specific attribute. Supported: createdAt (default), updatedAt", "in": "query", "name": "orderBy", "type": "string" }, { "description": "Party ID", "in": "query", "name": "partyID", "type": "string" }, { "description": "end of party creation time range in RFC 3339 format e.g. 2022-10-21T07:20:50Z", "in": "query", "name": "toTime", "type": "string" }, { "description": "Attribute value", "in": "query", "name": "value", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartyQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query parties.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PARTY [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/parties/bulk": { "delete": { "consumes": [ "application/json" ], "description": "Delete bulk parties.", "operationId": "adminDeleteBulkParties", "parameters": [ { "description": "Create Delete bulk party Request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.DeleteBulkPartySessionRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.DeleteBulkPartySessionsAPIResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete bulk parties.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PARTY [DELETE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/parties/{partyId}/storage": { "get": { "consumes": [ "application/json" ], "description": "Read Party Session Storage by partyID\nParty Storage example:\n```\n{\n\t\u0026#34;reserved\u0026#34;: {\n\t\t\u0026#34;userID1\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t\u0026#34;userID2\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t...\n\t}\n}\n```", "operationId": "adminReadPartySessionStorage", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "partyID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Read Party Session Storage.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:STORAGE [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/platform-credentials": { "delete": { "description": "Delete platform credentials used for Native Session sync.", "operationId": "adminDeletePlatformCredentials", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete platform credentials.", "tags": [ "Platform Credential" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLATFORMCREDENTIAL [DELETE]" ] } ] }, "get": { "description": "Get platform credentials used for Native Session sync.\nPSN:\n- clientID: Auth Server (Client Credential) ClientID\n- clientSecret: Auth Server (Client Credential) Secret. For security, only the first few characters are shown.\n- scope: should be psn:s2s.service (For Sync non PSN member to PSN Session)\n\nXBOX:\n- namespace: namespace of the configuration\n- businessPartnerCertFileName: name of pfx xbox configuration file\n- businessPartnerCertFileBytes: the pfx configuration file\n- updatedAt: date time when the record is updated\n- createdAt: date time when the record is created\n- createdBy: the actor who trigger the xbox configuration sync\n", "operationId": "adminGetPlatformCredentials", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.PlatformCredentials" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get platform credentials. These are used to sync PSN sessions.", "tags": [ "Platform Credential" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLATFORMCREDENTIAL [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Update platform credentials for Native Session sync. Currently supports PSN platform.\nSend an empty body to clear data.\nPSN:\n- clientID: Auth Server (Client Credential) ClientID\n- clientSecret: Auth Server (Client Credential) Secret\n- scope: psn:s2s.service (For Sync non PSN member to PSN Session)\n", "operationId": "adminUpdatePlatformCredentials", "parameters": [ { "description": "Platform credentials", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.PutPlatformCredentialsRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.PlatformCredentials" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update platform credentials. Currently only used to sync PSN sessions.", "tags": [ "Platform Credential" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLATFORMCREDENTIAL [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/platform-credentials/{platformId}": { "delete": { "description": "Delete platform credentials for specific platform used for Native Session sync. Supported platforms: XBOX, PSN", "operationId": "adminDeletePlatformCredentialsByPlatformId", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "enum": [ "PSN", "XBOX" ], "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete platform credentials by platformId", "tags": [ "Platform Credential" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLATFORMCREDENTIAL [DELETE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/platform-credentials/{platformId}/sync": { "put": { "description": "Sync Platform Credentials. \n\nSupported Platforms:\n1. XBOX\nWith this method, we will be performing sync to Platform Service to retrieve the existing PFX certificate which uploaded through IAP.\nIf the API returns Not Found, alternatively what you can do is either:\na. upload PFX file to IAP. You can access it from Admin Portal {BASE_URL}/admin/namespaces/{NAMESPACE}/in-app-purchase/xbox, or directly through API /platform/admin/namespaces/{NAMESPACE}/iap/config/xbl/cert.\nb. upload PFX file through Session API /session/v1/admin/namespaces/{namespace}/certificates/pfx/platforms/xbl\nWe recommend approach #a, since you need to only upload the file once, and the service will do the sync. \nIf you set the PFX through Session service, when this API is invoked, we will sync and replace the existing PFX file with the one from Platform (IAP).\n", "operationId": "adminSyncPlatformCredentials", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "enum": [ "XBOX" ], "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.XblCertificateResponseBody" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Sync Platform Credentials.", "tags": [ "Platform Credential" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLATFORMCREDENTIAL [UPDATE]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/recent-player": { "get": { "consumes": [ "application/json" ], "description": "Query recent player with given user id.\n\nIf user id parameter is empty:\n1. Using User Token : It will get the user id from the token\n2. Using client token : it will throw an error\n\nPlease ensure environment variable \u0026#34;RECENT_PLAYER_ENABLED\u0026#34; is set to \u0026#34;TRUE\u0026#34; to use this feature.\n", "operationId": "adminGetRecentPlayer", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Recent Player Limit", "in": "query", "name": "limit", "type": "integer" }, { "description": "recent player UserID. If this field empty, will use UserID from token", "in": "query", "name": "userId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.RecentPlayerQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query recent player with given user id.", "tags": [ "Recent Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLAYER:{userId} [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/recent-team-player": { "get": { "consumes": [ "application/json" ], "description": "Query recent player who were on the same team with given user id.\n\nIf user id parameter is empty:\n1. Using User Token : It will get the user id from the token\n2. Using client token : it will throw an error\n\nPlease ensure environment variable \u0026#34;RECENT_TEAM_PLAYER_ENABLED\u0026#34; is set to \u0026#34;TRUE\u0026#34; to use this feature.\n", "operationId": "adminGetRecentTeamPlayer", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Recent Player Limit", "in": "query", "name": "limit", "type": "integer" }, { "description": "recent team player UserID. If this field empty, will use UserID from token", "in": "query", "name": "userId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.RecentPlayerQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query recent player who were on the same team with given user id.", "tags": [ "Recent Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLAYER:{userId} [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/sessions/{sessionId}/storage": { "delete": { "consumes": [ "application/json" ], "description": "\n\t\t\tDelete Session Storage By sessionID\n\t\t\tSession Storage feature only available for Gamesession\n\t\t\t", "operationId": "adminDeleteUserSessionStorage", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "sessionID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Session Storage.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:STORAGE [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "\n\t\t\tRead Session Storage by sessionID\n\t\t\tSession Storage feature only available for Gamesession\n\t\t\t", "operationId": "adminReadSessionStorage", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "sessionID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Read Session Storage.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:STORAGE [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/sessions/{sessionId}/storage/users/{userId}": { "get": { "consumes": [ "application/json" ], "description": "\n\t\t\tRead Session Storage by sessionID and userID\n\t\t\tSession Storage feature only available for Gamesession\n\t\t\t", "operationId": "adminReadUserSessionStorage", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "sessionID", "in": "path", "name": "sessionId", "required": true, "type": "string" }, { "description": "userID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Read Session Storage User.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:STORAGE [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/users/attributes": { "get": { "description": "Admin get attributes of players.\n\nField descriptions:\n\t- userID : user who owns the attributes.\n\t- crossplayEnabled : set to true if the player wants to enable crossplay to their session (default: false).\n\t- platforms : list of the player\u0026#39;s 3rd party platform account information.\n\t\t- name : platform name. supported platforms: STEAM, XBOX, PSN\n\t\t- userID : platform userID\n\t- data : other data that the player wants to store.\n\t\t- PSN_PUSH_CONTEXT_ID: if provided, session will refer to this when performing session sync with PSN, otherwise will populate from session attributes, otherwise will populate from session attributes\n\t- currentPlatform : latest user game platform.\n\t- roles\t\t\t : user role for matchmaking role base support.\n", "operationId": "adminQueryPlayerAttributes", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "comma-separated userIDs ", "in": "query", "name": "users", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/apimodels.PlayerAttributesResponseBody" }, "type": "array" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query player attributes.", "tags": [ "Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLAYER:{userId} [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/users/{userId}/attributes": { "get": { "description": "Admin get attributes of a player.\n\nField descriptions:\n\t- userID : user who owns the attributes.\n\t- crossplayEnabled : set to true if the player wants to enable crossplay to their session (default: false).\n\t- platforms : list of the player\u0026#39;s 3rd party platform account information.\n\t\t- name : platform name. supported platforms: STEAM, XBOX, PSN\n\t\t- userID : platform userID\n\t- data : other data that the player wants to store.\n\t\t- PSN_PUSH_CONTEXT_ID: if provided, session will refer to this when performing session sync with PSN, otherwise will populate from session attributes\n\t- currentPlatform : latest user game platform.\n\t- roles\t\t\t : user role for matchmaking role base support.\n", "operationId": "adminGetPlayerAttributes", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PlayerAttributesResponseBody" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get player attributes.", "tags": [ "Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:PLAYER:{userId} [READ]" ] } ] } }, "/session/v1/admin/namespaces/{namespace}/users/{userId}/native-sync": { "post": { "consumes": [ "application/json" ], "description": "Trigger user\u0026#39;s active party session to native platform.\n", "operationId": "adminSyncNativeSession", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Trigger user's active party session to native platform.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:NATIVE:SYNC [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesession": { "post": { "consumes": [ "application/json" ], "description": "Create a game session.\nSession configuration \u0026#34;name\u0026#34; is mandatory, this API will refer following values from the session template if they\u0026#39;re not provided in the request:\n- type\n- joinability\n- autoJoin. If enabled (set to true), players provided in the request will automatically joined the initial game session creation. Game session will not send any invite and players dont need to act upon it.\n- minPlayers\n- maxPlayers\n- inviteTimeout\n- inactiveTimeout\n- attributes\n- dsSource\n- tieTeamsSessionLifetime\n- matchPool\n- clientVersion\n- deployment\n- serverName\n- textChat\n- autoJoin\n- requestedRegions\n- preferredClaimKeys\n- fallbackClaimKeys\n- customURLGRPC\n\nWhen the tieTeamsSessionLifetime is true, the lifetime of any partyId inside teams attribute will be tied to the game session.\nOnly applies when the teams partyId is a game session.\n\nSession has 2 fields for user status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses.\nUser statuses:\n1. INVITED: by default, to join a session (except session with OPEN joinability or if session configuration has \u0026#34;autoJoin\u0026#34; sets to True) a user will receive an invite. The invitee will have the chance to respond within \u0026#34;inviteTimeout\u0026#34; which you can configure through session configuration.\n2. TIMEOUT: when a user is invited to a session, they will receive an invite. Unless \u0026#34;disableResendInvite\u0026#34; sets to True in the session configuration, the user will also receive invite reminder every 30s until they respond to the invite. \n3. REJECTED: when a user rejects an invite. To rejoin an INVITE_ONLY session, they will need to be re-invited and accept the invite. \n4. JOINED: there are few ways of a user to join a session, by invite, direct join (depends on session joinability) or join by code. upon invite, once a user accepts an invite, their status will be changed to JOINED. \n5. LEFT: user can leave a session. in case of party, a user can only be in 1 party at a time. therefore when they decide to create or join another party, they will be automatically removed from their initial party and their status will be changed to LEFT.\n6. KICKED: only party leader can kick a member. \n7. DISCONNECTED: if user still have reserved seat in the session and they disconnect lobby websocket, their status in the session will be changed to DISCONNECTED and field \u0026#34;members.previousStatus\u0026#34; of that user will contains the initial status before they disconnect lobby websocket. the user will be given chance to reconnect within \u0026#34;inactiveTimeout\u0026#34; which you can configure through session configuration.\n8. CONNECTED: when a user reconnect their lobby websocket, their status will change from DISCONNECTED to CONNECTED, only if they previously JOINED session. if they were on INVITED state before the disconnect happened, the user\u0026#39;s status will return back to INVITED after they reconnect.\n9. DROPPED: when \u0026#34;inactiveTimeout\u0026#34; is due and user never re-establish their websocket connection, we will drop them from the session.\n10. TERMINATED: only applies to game session. If a game session (match) is ended, DS will end/delete the session and we will mark all remaining users\u0026#39; status to be TERMINATED. \n11. CANCELLED: when a session joinability changes to CLOSED, any remaining invites will be canceled. \n\nUser is considered as active if they\u0026#39;re present in the session, which their status either CONNECTED or JOINED.\nUser has a reserved seat in the session if their status either INVITED, JOINED, CONNECTED, DISCONNECTED. When user\u0026#39;s\u0026#39; status change to other than these mentioned statuses, we will release the seat for other players to occupy.\n\nManaging the relation between session and lobby websocket connection:\n- Session relies on lobby to consider player\u0026#39;s connection health to our backend. therefore a disruption to lobby websocket will be reflected in the user\u0026#39;s status in all of their session(s). \n- If user still have a reserved seat in the session and they disconnect lobby websocket, their status in session(s) will be changed to DISCONNECTED and field \u0026#34;members.previousStatus\u0026#34; of that user will contains the initial status before they disconnect lobby websocket. This \u0026#34;members.previousStatus\u0026#34; used to track user\u0026#39;s previous status before they disconnect websocket, since we still reserve a seat for them, therefore this field will be empty again after they websocket.\n- If the disconnected user is the leader of the session they\u0026#39;re disconnected from, we will wait until \u0026#34;leaderElectionGracePeriod\u0026#34; is due, to promote the next oldest member as the new leader of the session. You can configure \u0026#34;leaderElectionGracePeriod\u0026#34; through session configuration.\n- The user will be given chance to reconnect within \u0026#34;inactiveTimeout\u0026#34; which you can configure through session configuration. If until \u0026#34;inactiveTimeout\u0026#34; is due and the user doesn\u0026#39;t reconnect their websocket, they will be removed from session and their status will change to DROPPED. If the dropped user was the leader of the session, we will promote the next oldest member as leader.\n- By default, we will update user\u0026#39;s status to what it was before disconnect, when the user reconnects lobby websocket, unless \u0026#34;manualRejoin\u0026#34; sets to True in the session configuration. When \u0026#34;manualRejoin\u0026#34; is enabled, after lobby websocket reconnect, the game client will need to manually invoke join session again to rejoin the session. \n- If the user was on INVITED state before the disconnect happened, the user\u0026#39;s status will return back to INVITED after they reconnect.\n\nWhen the session type is a DS, a DS creation request will be sent if number of active players reaches session\u0026#39;s minPlayers.\nSession service has several DSInformation status to track DS request to DS providers:\n- NEED_TO_REQUEST: number of active players hasn\u0026#39;t reached session\u0026#39;s minPlayers therefore DS has not yet requested.\n- REQUESTED: DS is being requested to DSMC.\n- PREPARING: DS needs to call manual set ready for the game session\n- AVAILABLE: DS is ready to use. The DSMC status for this DS is either READY/BUSY.\n- FAILED_TO_REQUEST: DSMC fails to spin up a DS for session.\n- DS_ERROR: DS provider fails to spin up the DS or the DS itself becomes unreachable\n- DS_CANCELLED: when DSMC is preparing the DS, DSMC will give a temporary DS. In this phase, if you delete the game session, the DS request will be canceled.\n- ENDED: when a game session (match) has finished and DS has done its job, it will terminate itself.\n- UNKNOWN: if any unknown DS status is detected.\nDSInformation has 2 fields for DS status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses.\nDS Source can be DSMC, AMS or custom. In DSMC, a DS request will be put in queue if they dont have available buffers, and DSMC will let the service knows when they finished spinning it up. While AMS doesn\u0026#39;t have a concept of queue. Therefore some \u0026#34;DSInformation.statusV2\u0026#34; only applicable for DSMC.\n\nBy default, DS requests are sent to DSMC, but if dsSource is set to \u0026#34;AMS\u0026#34;:\n- A DS will be requested from AMS instead of DSMC.\n- The server will be chosen based on a set of claim keys, in order of preference, to match with fleets.\n- The claim key list is built build from the preferredClaimKeys, fallbackClaimKeys, and clientVersion as follows:\n\t[preferredClaimKeys.., clientVersion, fallbackClaimKeys...]\n- ttlHours is how long the session will active, only non persistent can use this, max value is 168 hours\nfor session override can follow guideline in here https://docs.accelbyte.io/gaming-services/services/extend/override-ags-feature/getting-started-with-session-customization-server-dsm/\n", "operationId": "createGameSession", "parameters": [ { "description": "Create game session request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.CreateGameSessionRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "If true, instead of returning an error when the initial members with status 'JOINED' (AutoJoin) have reached the maximum active session limit, this endpoint will return success, and those members will become 'INVITED'", "in": "query", "name": "resolveMaxActiveSession", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions": { "post": { "consumes": [ "application/json" ], "description": "Query game sessions.\n\nBy default, API will return a list of available game sessions (joinability: open).\nSession service has several DSInformation status to track DS request to DS providers:\n- NEED_TO_REQUEST: number of active players hasn\u0026#39;t reached session\u0026#39;s minPlayers therefore DS has not yet requested.\n- REQUESTED: DS is being requested to DSMC.\n- PREPARING: DS needs to call manual set ready for the game session\n- AVAILABLE: DS is ready to use. The DSMC status for this DS is either READY/BUSY.\n- FAILED_TO_REQUEST: DSMC fails to spin up a DS for session.\n- DS_ERROR: DS provider fails to spin up the DS or the DS itself becomes unreachable\n- DS_CANCELLED: when DSMC is preparing the DS, DSMC will give a temporary DS. In this phase, if you delete the game session, the DS request will be canceled.\n- ENDED: when a game session (match) has finished and DS has done its job, it will terminate itself.\n- UNKNOWN: if any unknown DS status is detected.\nDSInformation has 2 fields for DS status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses.\nDS Source can be DSMC, AMS or custom. In DSMC, a DS request will be put in queue if they dont have available buffers, and DSMC will let the service knows when they finished spinning it up. While AMS doesn\u0026#39;t have a concept of queue. Therefore some \u0026#34;DSInformation.statusV2\u0026#34; only applicable for DSMC.\n", "operationId": "publicQueryGameSessionsByAttributes", "parameters": [ { "description": "A list of attributes to filter from available sessions\n\nParameters:\n- **offset**: pagination offset\n- **limit**: pagination limit (server-side capped by MAX_PAGINATION_LIMIT; default cap 100)\n- **availability**: filter sessions by availability. \n\t- **all**: return all sessions regardless it's full\n\t- **full**: only return active sessions\n\t- default behavior (unset or else): return only available sessions (not full)\n- additional properties: filter by session's attributes\n", "in": "body", "name": "body", "required": true, "schema": { "additionalProperties": {}, "type": "object" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query game sessions", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/join/code": { "post": { "consumes": [ "application/json" ], "description": "Join a session by code. The user can join a session as long as the code is valid", "operationId": "publicSessionJoinCode", "parameters": [ { "description": "Session join by code request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.JoinByCodeRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Join a session by code.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:PLAYER [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/servers/{podName}": { "get": { "consumes": [ "application/json" ], "description": "Get game session detail by podname.\nSession service has several DSInformation status to track DS request to DS providers:\n- NEED_TO_REQUEST: number of active players hasn\u0026#39;t reached session\u0026#39;s minPlayers therefore DS has not yet requested.\n- REQUESTED: DS is being requested to DSMC.\n- PREPARING: DS needs to call manual set ready for the game session\n- AVAILABLE: DS is ready to use. The DSMC status for this DS is either READY/BUSY.\n- FAILED_TO_REQUEST: DSMC fails to spin up a DS for session.\n- DS_ERROR: DS provider fails to spin up the DS or the DS itself becomes unreachable\n- DS_CANCELLED: when DSMC is preparing the DS, DSMC will give a temporary DS. In this phase, if you delete the game session, the DS request will be canceled.\n- ENDED: when a game session (match) has finished and DS has done its job, it will terminate itself.\n- UNKNOWN: if any unknown DS status is detected.\nDSInformation has 2 fields for DS status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses.\nDS Source can be DSMC, AMS or custom. In DSMC, a DS request will be put in queue if they dont have available buffers, and DSMC will let the service knows when they finished spinning it up. While AMS doesn\u0026#39;t have a concept of queue. Therefore some \u0026#34;DSInformation.statusV2\u0026#34; only applicable for DSMC.\n", "operationId": "getGameSessionByPodName", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Pod Name", "in": "path", "name": "podName", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get game session detail.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [READ]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}": { "delete": { "consumes": [ "application/json" ], "description": "Delete a game session.", "operationId": "deleteGameSession", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get game session detail.\nSession will only be accessible from active players in the session, and client with the permission, except the joinability is set to OPEN.\nSession service has several DSInformation status to track DS request to DS providers:\n- NEED_TO_REQUEST: number of active players hasn\u0026#39;t reached session\u0026#39;s minPlayers therefore DS has not yet requested.\n- REQUESTED: DS is being requested to DSMC.\n- PREPARING: DS needs to call manual set ready for the game session\n- AVAILABLE: DS is ready to use. The DSMC status for this DS is either READY/BUSY.\n- FAILED_TO_REQUEST: DSMC fails to spin up a DS for session.\n- DS_ERROR: DS provider fails to spin up the DS or the DS itself becomes unreachable\n- DS_CANCELLED: when DSMC is preparing the DS, DSMC will give a temporary DS. In this phase, if you delete the game session, the DS request will be canceled.\n- ENDED: when a game session (match) has finished and DS has done its job, it will terminate itself.\n- UNKNOWN: if any unknown DS status is detected.\nDSInformation has 2 fields for DS status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses.\nDS Source can be DSMC, AMS or custom. In DSMC, a DS request will be put in queue if they dont have available buffers, and DSMC will let the service knows when they finished spinning it up. While AMS doesn\u0026#39;t have a concept of queue. Therefore some \u0026#34;DSInformation.statusV2\u0026#34; only applicable for DSMC.\n", "operationId": "getGameSession", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get game session detail.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Update specified fields from game session data.", "operationId": "patchUpdateGameSession", "parameters": [ { "description": "Patch update game session request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.UpdateGameSessionRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Patch update a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates a game session, this endpoint will override stored gamesession data.\nTo update only specified fields, please use following endpoint:\nmethod : PATCH\nAPI\t : /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}\n- ttlHours is how long the session will active, only non persistent can use this, max value is 168 hours\nTo update DS attributes (clientVersion, deployment, requestedRegions) it will only be applied only as long as no DS has been requested, otherwise ignored.\n", "operationId": "updateGameSession", "parameters": [ { "description": "Update game session request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.UpdateGameSessionRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/backfill": { "put": { "consumes": [ "application/json" ], "description": "Update game session backfill ticket id. Will override game session backfill ticket based on given request parameter", "operationId": "updateGameSessionBackfillTicketID", "parameters": [ { "description": "Update game session backfill ticket id request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.UpdateGameSessionBackfillRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update game session backfill ticket id .", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/code": { "delete": { "consumes": [ "application/json" ], "description": "Revoke code of the game session. Only leader can revoke a code.", "operationId": "publicRevokeGameSessionCode", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke game session code.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] }, "post": { "description": "Generate a new code for the game session. Only leader can generate a code.", "operationId": "gameSessionGenerateCode", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Generate a game session code.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/invite": { "post": { "consumes": [ "application/json" ], "description": "Invite a user to a game session.\nplatformID represents the native platform of the invitee. API will return the corresponding native platform\u0026#39;s userID.\nsupported platforms:\n\t- STEAM\n\t- XBOX\n\t- PSN\nMetadata is optional parameter which will be sent over via invitation notification and is not permanently stored in the game session storage.\n", "operationId": "publicGameSessionInvite", "parameters": [ { "description": "Session invite request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.SessionInviteRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created" }, "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Invite a user to a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:PLAYER [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/join": { "post": { "description": "Join a game session.", "operationId": "joinGameSession", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Join a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:PLAYER [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/leader": { "post": { "consumes": [ "application/json" ], "description": "Promote game session member to become the new game session leader.\n\nThis API requires the NAMESPACE:{namespace}:SESSION:GAME [UPDATE] permission.\n\nThis API can be operated by:\n- User (game session member) who is the current leader of the game session\n- Game Client\n- Dedicated Server (DS)\n\nThis API will promote game session leader candidate with the following criteria:\n- Leader candidate is a member of the game session\n- Leader candidate has a \u0026#34;CONNECTED\u0026#34; or \u0026#34;JOINED\u0026#34; status\n- If the leader candidate is the current leader, then no promotion process is carried out\n", "operationId": "publicPromoteGameSessionLeader", "parameters": [ { "description": "Promote leader request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.PromoteLeaderRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Promote new game session leader.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/leave": { "delete": { "description": "Leave a game session.", "operationId": "leaveGameSession", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Leave a game session.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/members/{memberId}/kick": { "delete": { "consumes": [ "application/json" ], "description": "Kick member from a game session, only leader can kick member.", "operationId": "publicKickGameSessionMember", "parameters": [ { "description": "member ID", "in": "path", "name": "memberId", "required": true, "type": "string" }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Kick member from a game session, only leader can kick member.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/reject": { "delete": { "consumes": [ "application/json" ], "description": "Reject a game session invitation.", "operationId": "publicGameSessionReject", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Reject a game session invitation.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/secret": { "get": { "consumes": [ "application/json" ], "description": "\n\t\t\tUsed by game Client to Get Secret \n\t\t\t constraints\n\t\t\t\t- EnableSecret = true\n\t\t\t\t- Type = \u0026#34;DS\u0026#34;\n\t\t\t\t- secret value will only be produced if enableSecret is true and type is DS\n\n \t\t\t if enableSecret = false\n\t\t\t\t- empty secret will be returned as 200 OK\n\n\t\t\tExpected caller of this API\n\t\t\t\t- Game Client to get server secret\n\n\t\t\tIn the Response you will get following:\n\t\t\t\t- 200 OK { \u0026#34;secret\u0026#34;: \u0026lt;string\u0026gt; } \n\n\t\t\t\tIf there is error: \n\t\t\t\t- 400 Invalid path parameters\n\t\t\t\t- 401 unauthorized\n\t\t\t\t- 403 status forbidden, The User is not active in session\n\t\t\t\t- 404 StatusNotFound\n\t\t\t\t- 500 Internal server error", "operationId": "getSessionServerSecret", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.ServerSecret" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get Server Secret.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:SECRET [READ]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/teams": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "Append new member or team to session. Please use patchUpdateGameSession instead", "operationId": "appendTeamGameSession", "parameters": [ { "description": "Append new member or team to session", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.AppendTeamGameSessionRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Append new member or team to session. Please use patchUpdateGameSession instead", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/users/{userId}/cancel": { "delete": { "consumes": [ "application/json" ], "description": "cancel a game session invitation.", "operationId": "publicGameSessionCancel", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Session ID", "in": "path", "name": "sessionId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "cancel a game session invitation.", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:GAME:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/users/me/join/code": { "post": { "consumes": [ "application/json" ], "description": "Join a party by code. The user can join a party as long as the code is valid", "operationId": "publicPartyJoinCode", "parameters": [ { "description": "Party join by code request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.JoinByCodeRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Join a party by code.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY:PLAYER [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}": { "get": { "consumes": [ "application/json" ], "description": "Get party details.", "operationId": "publicGetParty", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get party details.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Update specified fields from party data. Note: Join type can only be updated by the party\u0026#39;s leader.\n\nReserved attributes key:\n1. preference: used to store preference of the leader and it is non-replaceable to keep the initial behavior of\n\tthe session regardless the leader changes.\n2. NATIVESESSIONTITLE: used for session sync, to define name of session displayed on PlayStation system UI.\n", "operationId": "publicPatchUpdateParty", "parameters": [ { "description": "Update party request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.UpdatePartyRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Patch update a party.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates party blob, this endpoint will override stored party data.\n\nJoin type can only be updated by the party\u0026#39;s leader.\nTo update only specified fields, please use following endpoint:\nmethod : PATCH\nAPI\t : /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}\n\nReserved attributes key:\n1. preference: used to store preference of the leader and it is non-replaceable to keep the initial behavior of\n\tthe session regardless the leader changes.\n2. NATIVESESSIONTITLE: used for session sync, to define name of session displayed on PlayStation system UI.\n- ttlHours is how long the session will active, max value is 168 hours\n", "operationId": "publicUpdateParty", "parameters": [ { "description": "Update party request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.UpdatePartyRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update a party.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/code": { "delete": { "description": "Revoke code of the party. Only leader can revoke a code.", "operationId": "publicRevokePartyCode", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke party code.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY [UPDATE]" ] } ] }, "post": { "description": "Generate a new code for the party. Only leader can generate a code.", "operationId": "publicGeneratePartyCode", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Generate party code.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/invite": { "post": { "consumes": [ "application/json" ], "description": "Invite a user to a party.\nplatformID represents the native platform of the invitee. API will return the corresponding native platform\u0026#39;s userID.\nsupported platforms:\n\t- STEAM\n\t- XBOX\n\t- PSN\nMetadata is optional parameter which will be sent over via invitation notification and is not permanently stored in the party storage.\n", "operationId": "publicPartyInvite", "parameters": [ { "description": "Party invite request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.SessionInviteRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/apimodels.SessionInviteResponse" } }, "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Invite a user to a party.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY:PLAYER [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/leader": { "post": { "consumes": [ "application/json" ], "description": "Promotes a party member to be a party leader. Only leader can promote a new leader.", "operationId": "publicPromotePartyLeader", "parameters": [ { "description": "Promote leader request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.PromoteLeaderRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Promote new party leader.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/storage": { "get": { "consumes": [ "application/json" ], "description": "Read Party Session Storage by partyID (with reserved and member). \nContains \u0026#34;reserved\u0026#34; when Update Insert Party Session Reserved Storage User.\nContains \u0026#34;member\u0026#34; when Update Insert Party Session Storage User.\nParty Storage example:\n```\n{\n\t\u0026#34;reserved\u0026#34;: {\n\t\t\u0026#34;userID1\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t\u0026#34;userID2\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t...\n\t},\n\t\u0026#34;member\u0026#34;: {\n\t\t\u0026#34;userID1\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t\u0026#34;userID2\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t...\n\t}\n}\n```", "operationId": "publicReadPartySessionStorage", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "partyID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Read Party Session Storage.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:STORAGE [READ]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/storage/users/{userId}": { "patch": { "consumes": [ "application/json" ], "description": "Update Insert Party Session Storage User. User can only update or insert their own party storage (non-immutable).\ncan store generic json\nexample json can store :\n```\n{\n\t\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;,\n\t\u0026#34;number\u0026#34;: 123,\n}\n```\nThe data will be stored on the \u0026#34;member\u0026#34; storage field\nexample stored data :\n```\n{\n\t\u0026#34;member\u0026#34;: {\n\t\t\u0026#34;userID1\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t\u0026#34;userID2\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t...\n\t}\n}\n```\n", "operationId": "publicUpdateInsertPartySessionStorage", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "additionalProperties": {}, "type": "object" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "partyID", "in": "path", "name": "partyId", "required": true, "type": "string" }, { "description": "userID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update Insert Party Session Storage User.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:STORAGE [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/storage/users/{userId}/reserved": { "patch": { "consumes": [ "application/json" ], "description": "**For Internal Use Only**\nUpdate Insert Party Session Reserved Storage User. User can only update or insert their own reserve storage (non-immutable).\ncan store generic json\nexample json can store : \n```\n{\n\t\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;,\n\t\u0026#34;number\u0026#34;: 123,\n}\n```\nThe data will be stored on the \u0026#34;reserved\u0026#34; storage field\nexample stored data :\n```\n{\n\t\u0026#34;reserved\u0026#34;: {\n\t\t\u0026#34;userID1\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t\u0026#34;userID2\u0026#34;: {\u0026#34;key\u0026#34;: \u0026#34;value\u0026#34;},\n\t\t...\n\t}\n}\n```\n", "operationId": "publicUpdateInsertPartySessionStorageReserved", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "additionalProperties": {}, "type": "object" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "partyID", "in": "path", "name": "partyId", "required": true, "type": "string" }, { "description": "userID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update Insert Party Session Reserved Storage User.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:STORAGE [UPDATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/users/me/join": { "post": { "description": "Join a party. The user can either join a party they have been invited to, or any party with an \u0026#34;open\u0026#34; joinable setting.", "operationId": "publicPartyJoin", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Join a party.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY:PLAYER [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/users/me/leave": { "delete": { "consumes": [ "application/json" ], "description": "Leave a party", "operationId": "publicPartyLeave", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Leave a party.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/users/me/reject": { "delete": { "consumes": [ "application/json" ], "description": "Reject a party invitation.", "operationId": "publicPartyReject", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Reject a party invitation.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/users/{userId}/cancel": { "delete": { "consumes": [ "application/json" ], "description": "Cancel a party invitation.", "operationId": "publicPartyCancel", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Cancel a party invitation.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/parties/{partyId}/users/{userId}/kick": { "delete": { "consumes": [ "application/json" ], "description": "Kick a player from a party. Requires invoker to be the party leader.", "operationId": "publicPartyKick", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Party ID", "in": "path", "name": "partyId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.KickResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Kick a player from a party.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY:PLAYER [DELETE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/party": { "post": { "consumes": [ "application/json" ], "description": "A join code will be autogenerated if the party is joinable.\n\nA user can be in 1 party at a time, therefore the requester will be removed from their previous party (if any) and automatically added/joined into this newly created party as a leader.\n\nSession configuration name is optional.\nDefault configuration name if empty:\n{\n\t\u0026#34;name\u0026#34;: \u0026#34;default\u0026#34;,\n\t\u0026#34;type\u0026#34;: \u0026#34;NONE\u0026#34;,\n\t\u0026#34;joinability\u0026#34;: \u0026#34;OPEN\u0026#34;,\n\t\u0026#34;minPlayers\u0026#34;: 1,\n\t\u0026#34;maxPlayers\u0026#34;: 8,\n\t\u0026#34;inviteTimeout\u0026#34;: 60,\n\t\u0026#34;inactiveTimeout\u0026#34;: 60,\n\t\u0026#34;textChat\u0026#34;: false\n}\nWhen session configuration \u0026#34;name\u0026#34; is provided, we will refer to the template if these fields are empty:\n- textChat\n- minPlayers\n- maxPlayers\n- inviteTimeout\n- inactiveTimeout\n- type\n- joinability\n- configurationName\n- attributes\n\nSupported platforms:\n1. STEAM\n2. PSN\n3. XBOX\n\nReserved attributes key:\n1. preference: used to store preference of the leader and it is non-replaceable to keep the initial behavior of\n\tthe session regardless the leader changes.\n2. NATIVESESSIONTITLE: used for session sync, to define name of session displayed on PlayStation system UI.\n\nSession has 2 fields for user status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses. \n\nUser statuses:\n1. INVITED: by default, to join a session (except session with OPEN joinability or if session configuration has \u0026#34;autoJoin\u0026#34; sets to True) a user will receive an invite. The invitee will have the chance to respond within \u0026#34;inviteTimeout\u0026#34; which you can configure through session configuration.\n2. TIMEOUT: when a user is invited to a session, they will receive an invite. Unless \u0026#34;disableResendInvite\u0026#34; sets to True in the session configuration, the user will also receive invite reminder every 30s until they respond to the invite. \n3. REJECTED: when a user rejects an invite. To rejoin an INVITE_ONLY session, they will need to be re-invited and accept the invite. \n4. JOINED: there are few ways of a user to join a session, by invite, direct join (depends on session joinability) or join by code. upon invite, once a user accepts an invite, their status will be changed to JOINED. \n5. LEFT: user can leave a session. in case of party, a user can only be in 1 party at a time. therefore when they decide to create or join another party, they will be automatically removed from their initial party and their status will be changed to LEFT.\n6. KICKED: only party leader can kick a member. \n7. DISCONNECTED: if user still have reserved seat in the session and they disconnect lobby websocket, their status in the session will be changed to DISCONNECTED and field \u0026#34;members.previousStatus\u0026#34; of that user will contains the initial status before they disconnect lobby websocket. the user will be given chance to reconnect within \u0026#34;inactiveTimeout\u0026#34; which you can configure through session configuration.\n8. CONNECTED: when a user reconnect their lobby websocket, their status will change from DISCONNECTED to CONNECTED, only if they previously JOINED session. if they were on INVITED state before the disconnect happened, the user\u0026#39;s status will return back to INVITED after they reconnect.\n9. DROPPED: when \u0026#34;inactiveTimeout\u0026#34; is due and user never re-establish their websocket connection, we will drop them from the session.\n10. TERMINATED: only applies to game session. If a game session (match) is ended, DS will end/delete the session and we will mark all remaining users\u0026#39; status to be TERMINATED. \n11. CANCELLED: when a session joinability changes to CLOSED, any remaining invites will be canceled. \n\nUser is considered as active if they\u0026#39;re present in the session, which their status either CONNECTED or JOINED.\nUser has a reserved seat in the session if their status either INVITED, JOINED, CONNECTED, DISCONNECTED. When user\u0026#39;s\u0026#39; status change to other than these mentioned statuses, we will release the seat for other players to occupy.\n\nManaging the relation between session and lobby websocket connection:\n- Session relies on lobby to consider player\u0026#39;s connection health to our backend. therefore a disruption to lobby websocket will be reflected in the user\u0026#39;s status in all of their session(s). \n- If user still have a reserved seat in the session and they disconnect lobby websocket, their status in session(s) will be changed to DISCONNECTED and field \u0026#34;members.previousStatus\u0026#34; of that user will contains the initial status before they disconnect lobby websocket. This \u0026#34;members.previousStatus\u0026#34; used to track user\u0026#39;s previous status before they disconnect websocket, since we still reserve a seat for them, therefore this field will be empty again after they websocket.\n- If the disconnected user is the leader of the session they\u0026#39;re disconnected from, we will wait until \u0026#34;leaderElectionGracePeriod\u0026#34; is due, to promote the next oldest member as the new leader of the session. You can configure \u0026#34;leaderElectionGracePeriod\u0026#34; through session configuration.\n- The user will be given chance to reconnect within \u0026#34;inactiveTimeout\u0026#34; which you can configure through session configuration. If until \u0026#34;inactiveTimeout\u0026#34; is due and the user doesn\u0026#39;t reconnect their websocket, they will be removed from session and their status will change to DROPPED. If the dropped user was the leader of the session, we will promote the next oldest member as leader.\n- By default, we will update user\u0026#39;s status to what it was before disconnect, when the user reconnects lobby websocket, unless \u0026#34;manualRejoin\u0026#34; sets to True in the session configuration. When \u0026#34;manualRejoin\u0026#34; is enabled, after lobby websocket reconnect, the game client will need to manually invoke join session again to rejoin the session. \n- If the user was on INVITED state before the disconnect happened, the user\u0026#39;s status will return back to INVITED after they reconnect.\n- ttlHours is how long the session will active, max value is 168 hours\n", "operationId": "publicCreateParty", "parameters": [ { "description": "Create party request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.CreatePartyRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartySessionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create a party.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PARTY [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/recent-player": { "get": { "consumes": [ "application/json" ], "description": "Query user\u0026#39;s recent player.\n\nPlease ensure environment variable \u0026#34;RECENT_PLAYER_ENABLED\u0026#34; is set to \u0026#34;TRUE\u0026#34; to use this feature.\n", "operationId": "publicGetRecentPlayer", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Recent Player Limit", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.RecentPlayerQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query user's recent player", "tags": [ "Recent Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PLAYER [READ]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/recent-team-player": { "get": { "consumes": [ "application/json" ], "description": "Query user\u0026#39;s recent player who were on the same team.\n\nPlease ensure environment variable \u0026#34;RECENT_TEAM_PLAYER_ENABLED\u0026#34; is set to \u0026#34;TRUE\u0026#34; to use this feature.\n", "operationId": "publicGetRecentTeamPlayer", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Recent Player Limit", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.RecentPlayerQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query user's recent player who were on the same team.", "tags": [ "Recent Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PLAYER [READ]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/sessions/{sessionId}/storage/leader": { "patch": { "consumes": [ "application/json" ], "description": "\n\t\t\tUpdate Insert Session Storage Leader. only Leader can update or insert user session storage data Leader.\n\t\t\tcan store generic json\n\t\t\texample json can store : \n\t\t\t{\n\t\t\t\t\u0026#34;leader\u0026#34;: {\n\t\t\t\t\t\u0026#34;leader\u0026#34;: 1\n\t\t\t\t},\n\t\t\t\t\u0026#34;data\u0026#34;: 123\n\t\t\t}\n\t\t\tgame Admin can update or insert session storage\n\t\t\tSession Storage feature only available for Gamesession\n\t\t\t", "operationId": "publicUpdateInsertSessionStorageLeader", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "additionalProperties": {}, "type": "object" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "sessionID", "in": "path", "name": "sessionId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update Insert Session Storage Leader.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:STORAGE [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/sessions/{sessionId}/storage/users/{userId}": { "patch": { "consumes": [ "application/json" ], "description": "\n\t\t\tUpdate Insert Session Storage User. user can only update or insert user session storage data itself.\n\t\t\tcan store generic json\n\t\t\texample json can store : \n\t\t\t{\n\t\t\t\t\u0026#34;storage\u0026#34;: {\n\t\t\t\t\t\u0026#34;storage\u0026#34;: 1\n\t\t\t\t},\n\t\t\t\t\u0026#34;data\u0026#34;: 123\n\t\t\t}\n\t\t\tgame Admin can update or insert session storage\n\t\t\tSession Storage feature only available for Gamesession\n\t\t\t", "operationId": "publicUpdateInsertSessionStorage", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "additionalProperties": {}, "type": "object" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "sessionID", "in": "path", "name": "sessionId", "required": true, "type": "string" }, { "description": "userID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "additionalProperties": {}, "type": "object" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update Insert Session Storage User.", "tags": [ "Session Storage" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:STORAGE [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/users/bulk/platform": { "post": { "consumes": [ "application/json" ], "description": "Get bulk players current platform.", "operationId": "publicGetBulkPlayerCurrentPlatform", "parameters": [ { "description": "User IDs", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.PlayersCurrentPlatformRequest" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PlayersCurrentPlatformResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get player current platform in bulk.", "tags": [ "Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PLAYER [READ]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/users/me/attributes": { "delete": { "description": "Reset player attributes.", "operationId": "publicDeletePlayerAttributes", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Remove player attributes.", "tags": [ "Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PLAYER [DELETE]" ] } ] }, "get": { "description": "Get player attributes.\n\nField descriptions:\n\t- userID : user who owns the attributes.\n\t- crossplayEnabled : set to true if the player wants to enable crossplay to their session (default: false).\n\t- platforms : list of the player\u0026#39;s 3rd party platform account information.\n\t\t- name : platform name. supported platforms: STEAM, XBOX, PSN\n\t\t- userID : platform userID\n\t- data : other data that the player wants to store.\n\t\t- PSN_PUSH_CONTEXT_ID: if provided, session will refer to this when performing session sync with PSN, otherwise will populate from session attributes\n\t- currentPlatform : latest user game platform.\n\t- roles\t\t\t : user role for matchmaking role base support.\n", "operationId": "publicGetPlayerAttributes", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PlayerAttributesResponseBody" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get player attributes.", "tags": [ "Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PLAYER [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "This API behaves to upsert player\u0026#39;s attributes.\n\nField descriptions:\n\t- userID : user who owns the attributes.\n\t- crossplayEnabled : set to true if the player wants to enable crossplay to their session (default: false).\n\t- platforms : list of the player\u0026#39;s 3rd party platform account information.\n\t\t- name : platform name. supported platforms: STEAM, XBOX, PSN\n\t\t- userID : platform userID\n\t- data : other data that the player wants to store.\n\t\t- PSN_PUSH_CONTEXT_ID: if provided, session will refer to this when performing session sync with PSN, otherwise will populate from session attributes\n\t- currentPlatform : latest user game platform.\n\t- roles\t\t\t : user role for matchmaking role base support.\n", "operationId": "publicStorePlayerAttributes", "parameters": [ { "description": "Store player attributes", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.PlayerAttributesRequestBody" } }, { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PlayerAttributesResponseBody" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Store player attributes.", "tags": [ "Player" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:SESSION:PLAYER [CREATE]" ] } ] } }, "/session/v1/public/namespaces/{namespace}/users/me/gamesessions": { "get": { "consumes": [ "application/json" ], "description": "Query user\u0026#39;s game sessions.\nBy default, API will return a list of user\u0026#39;s active game sessions (INVITED,JOINED,CONNECTED).\n\nSession service has several DSInformation status to track DS request to DS providers:\n- NEED_TO_REQUEST: number of active players hasn\u0026#39;t reached session\u0026#39;s minPlayers therefore DS has not yet requested.\n- REQUESTED: DS is being requested to DSMC.\n- PREPARING: DS needs to call manual set ready for the game session\n- AVAILABLE: DS is ready to use. The DSMC status for this DS is either READY/BUSY.\n- FAILED_TO_REQUEST: DSMC fails to spin up a DS for session.\n- DS_ERROR: DS provider fails to spin up the DS or the DS itself becomes unreachable\n- DS_CANCELLED: when DSMC is preparing the DS, DSMC will give a temporary DS. In this phase, if you delete the game session, the DS request will be canceled.\n- ENDED: when a game session (match) has finished and DS has done its job, it will terminate itself.\n- UNKNOWN: if any unknown DS status is detected.\nDSInformation has 2 fields for DS status: \u0026#34;status\u0026#34; and \u0026#34;statusV2\u0026#34;. The \u0026#34;status\u0026#34; is there for backward-compatibility, therefore we encourage to just rely on \u0026#34;statusV2\u0026#34; for the more updated statuses.\nDS Source can be DSMC, AMS or custom. In DSMC, a DS request will be put in queue if they dont have available buffers, and DSMC will let the service knows when they finished spinning it up. While AMS doesn\u0026#39;t have a concept of queue. Therefore some \u0026#34;DSInformation.statusV2\u0026#34; only applicable for DSMC.\n", "operationId": "publicQueryMyGameSessions", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Order of the result. Supported: desc (default), asc", "in": "query", "name": "order", "type": "string" }, { "description": "Order result by specific attribute. Supported: createdAt (default), updatedAt", "in": "query", "name": "orderBy", "type": "string" }, { "description": "game session status to filter. supported status: INVITED,JOINED,CONNECTED", "in": "query", "name": "status", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.GameSessionQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query user's game sessions", "tags": [ "Game Session" ], "x-errorCodes": {}, "x-security": [] } }, "/session/v1/public/namespaces/{namespace}/users/me/parties": { "get": { "consumes": [ "application/json" ], "description": "Query user\u0026#39;s parties. By default, API will return a list of user\u0026#39;s active parties.", "operationId": "publicQueryMyParties", "parameters": [ { "description": "Namespace", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Order of the result. Supported: desc (default), asc", "in": "query", "name": "order", "type": "string" }, { "description": "Order result by specific attribute. Supported: createdAt (default), updatedAt", "in": "query", "name": "orderBy", "type": "string" }, { "description": "user status to filter. supported status: INVITED,JOINED,CONNECTED,DISCONNECT", "in": "query", "name": "status", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.PartyQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Query my parties. Require valid JWT.", "tags": [ "Party" ], "x-errorCodes": {}, "x-security": [] } } }, "definitions": { "apimodels.AppendTeamGameSessionRequest": { "properties": { "additionalMembers": { "items": { "$ref": "#/definitions/models.PartyMembers" }, "type": "array" }, "proposedTeams": { "items": { "$ref": "#/definitions/models.Team" }, "type": "array" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "additionalMembers", "proposedTeams", "version" ] }, "apimodels.ConfigAlertRequestCreate": { "properties": { "durationDays": { "format": "int32", "type": "integer" } }, "required": [ "durationDays" ] }, "apimodels.ConfigAlertResponse": { "properties": { "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "durationDays": { "format": "int32", "type": "integer" }, "namespace": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "createdAt", "durationDays", "namespace", "updatedAt" ] }, "apimodels.ConfigurationTemplateResponse": { "properties": { "PSNBaseUrl": { "type": "string" }, "amsClaimTimeoutMinutes": { "format": "int32", "type": "integer" }, "appName": { "type": "string" }, "asyncProcessDSRequest": { "$ref": "#/definitions/models.AsyncProcessDSRequest" }, "attributes": { "type": "object" }, "autoJoin": { "type": "boolean", "x-omitempty": false }, "autoLeaveSession": { "type": "boolean", "x-omitempty": false }, "clientVersion": { "type": "string" }, "createdAt": { "type": "string" }, "customURLGRPC": { "type": "string" }, "deployment": { "type": "string" }, "disableCodeGeneration": { "type": "boolean", "x-omitempty": false }, "disableResendInvite": { "type": "boolean", "x-omitempty": false }, "dsManualSetReady": { "type": "boolean", "x-omitempty": false }, "dsSource": { "type": "string" }, "enableSecret": { "type": "boolean", "x-omitempty": false }, "fallbackClaimKeys": { "items": { "type": "string" }, "type": "array" }, "grpcSessionConfig": { "$ref": "#/definitions/models.ExtendConfiguration" }, "immutableStorage": { "type": "boolean", "x-omitempty": false }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "last": { "type": "string" }, "leaderElectionGracePeriod": { "format": "int32", "type": "integer" }, "manualRejoin": { "type": "boolean", "x-omitempty": false }, "maxActiveSessions": { "format": "int32", "type": "integer" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "nativeSessionSetting": { "$ref": "#/definitions/models.NativeSessionSetting" }, "partyCodeGeneratorString": { "type": "string" }, "partyCodeLength": { "format": "int32", "type": "integer" }, "persistent": { "type": "boolean", "x-omitempty": false }, "preferredClaimKeys": { "items": { "type": "string" }, "type": "array" }, "requestedRegions": { "items": { "type": "string" }, "type": "array" }, "textChat": { "type": "boolean", "x-omitempty": false }, "textChatMode": { "enum": [ "GAME", "NONE", "TEAM" ], "type": "string" }, "tieTeamsSessionLifetime": { "type": "boolean", "x-omitempty": false }, "ttlHours": { "format": "int32", "type": "integer" }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "clientVersion", "createdAt", "deployment", "inactiveTimeout", "inviteTimeout", "joinability", "last", "maxPlayers", "minPlayers", "name", "namespace", "persistent", "textChat", "type", "updatedAt" ] }, "apimodels.ConfigurationTemplatesResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/apimodels.ConfigurationTemplateResponse" }, "type": "array" }, "paging": { "$ref": "#/definitions/apimodels.Pagination" } }, "required": [ "data", "paging" ] }, "apimodels.CreateConfigurationTemplateRequest": { "properties": { "NativeSessionSetting": { "$ref": "#/definitions/models.NativeSessionSetting" }, "PSNBaseUrl": { "type": "string" }, "amsClaimTimeoutMinutes": { "format": "int32", "type": "integer" }, "appName": { "type": "string" }, "asyncProcessDSRequest": { "$ref": "#/definitions/models.AsyncProcessDSRequest" }, "attributes": { "type": "object" }, "autoJoin": { "type": "boolean", "x-omitempty": false }, "autoLeaveSession": { "type": "boolean", "x-omitempty": false }, "clientVersion": { "type": "string" }, "customURLGRPC": { "type": "string" }, "deployment": { "type": "string" }, "disableCodeGeneration": { "type": "boolean", "x-omitempty": false }, "disableResendInvite": { "type": "boolean", "x-omitempty": false }, "dsManualSetReady": { "type": "boolean", "x-omitempty": false }, "dsSource": { "type": "string" }, "enableSecret": { "type": "boolean", "x-omitempty": false }, "fallbackClaimKeys": { "items": { "type": "string" }, "type": "array" }, "grpcSessionConfig": { "$ref": "#/definitions/models.ExtendConfiguration" }, "immutableStorage": { "type": "boolean", "x-omitempty": false }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "leaderElectionGracePeriod": { "format": "int32", "type": "integer" }, "manualRejoin": { "type": "boolean", "x-omitempty": false }, "maxActiveSessions": { "format": "int32", "type": "integer" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "name": { "type": "string" }, "partyCodeGeneratorString": { "type": "string" }, "partyCodeLength": { "format": "int32", "type": "integer" }, "persistent": { "type": "boolean", "x-omitempty": false }, "preferredClaimKeys": { "items": { "type": "string" }, "type": "array" }, "requestedRegions": { "items": { "type": "string" }, "type": "array" }, "textChat": { "type": "boolean", "x-omitempty": false }, "textChatMode": { "enum": [ "GAME", "NONE", "TEAM" ], "type": "string" }, "tieTeamsSessionLifetime": { "type": "boolean", "x-omitempty": false }, "ttlHours": { "format": "int32", "type": "integer" }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" } }, "required": [ "clientVersion", "deployment", "inactiveTimeout", "inviteTimeout", "joinability", "maxPlayers", "minPlayers", "name", "persistent", "requestedRegions", "textChat", "type" ] }, "apimodels.CreateGameSessionRequest": { "properties": { "appName": { "type": "string" }, "attributes": { "type": "object" }, "autoJoin": { "type": "boolean", "x-omitempty": false }, "backfillTicketID": { "type": "string" }, "clientVersion": { "type": "string" }, "configurationName": { "type": "string" }, "customURLGRPC": { "type": "string" }, "deployment": { "type": "string" }, "dsSource": { "type": "string" }, "fallbackClaimKeys": { "items": { "type": "string" }, "type": "array" }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "matchPool": { "type": "string" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "preferredClaimKeys": { "items": { "type": "string" }, "type": "array" }, "requestedRegions": { "items": { "type": "string" }, "type": "array" }, "serverName": { "type": "string" }, "storage": { "$ref": "#/definitions/apimodels.SessionStorageRequest", "description": "session storage" }, "teams": { "items": { "$ref": "#/definitions/models.Team" }, "type": "array" }, "textChat": { "type": "boolean", "x-omitempty": false }, "textChatMode": { "enum": [ "GAME", "NONE", "TEAM" ], "type": "string" }, "ticketIDs": { "items": { "type": "string" }, "type": "array" }, "tieTeamsSessionLifetime": { "type": "boolean", "x-omitempty": false }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" } }, "required": [ "attributes", "backfillTicketID", "clientVersion", "configurationName", "deployment", "inactiveTimeout", "inviteTimeout", "joinability", "matchPool", "maxPlayers", "minPlayers", "requestedRegions", "serverName", "teams", "textChat", "ticketIDs", "type" ] }, "apimodels.CreatePartyRequest": { "properties": { "attributes": { "type": "object" }, "configurationName": { "type": "string" }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "maxPlayers": { "format": "int32", "type": "integer" }, "members": { "items": { "$ref": "#/definitions/apimodels.RequestMember" }, "type": "array" }, "minPlayers": { "format": "int32", "type": "integer" }, "textChat": { "type": "boolean", "x-omitempty": false }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" } }, "required": [ "attributes", "configurationName", "inactiveTimeout", "inviteTimeout", "joinability", "maxPlayers", "members", "minPlayers", "textChat", "type" ] }, "apimodels.DSInformationResponse": { "properties": { "CreatedAt": { "type": "string" }, "RequestedAt": { "type": "string" }, "Server": { "$ref": "#/definitions/models.GameServer" }, "Status": { "enum": [ "AVAILABLE", "DS_ERROR", "FAILED_TO_REQUEST", "NEED_TO_REQUEST", "PREPARING", "REQUESTED" ], "type": "string" }, "StatusV2": { "enum": [ "AVAILABLE", "DS_CANCELLED", "DS_ERROR", "ENDED", "FAILED_TO_REQUEST", "NEED_TO_REQUEST", "PREPARING", "REQUESTED", "UNKNOWN" ], "type": "string" } }, "required": [ "CreatedAt", "RequestedAt" ] }, "apimodels.DeleteBulkGameSessionRequest": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "ids" ] }, "apimodels.DeleteBulkGameSessionsAPIResponse": { "properties": { "failed": { "items": { "$ref": "#/definitions/apimodels.ResponseDeleteBulkGameSessions" }, "type": "array" }, "success": { "items": { "type": "string" }, "type": "array" } } }, "apimodels.DeleteBulkPartySessionRequest": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "ids" ] }, "apimodels.DeleteBulkPartySessionsAPIResponse": { "properties": { "failed": { "items": { "$ref": "#/definitions/apimodels.ResponseDeleteBulkPartySessions" }, "type": "array" }, "success": { "items": { "type": "string" }, "type": "array" } } }, "apimodels.EnvironmentVariableListResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/apimodels.EnvironmentVariableResponse" }, "type": "array" } }, "required": [ "data" ] }, "apimodels.EnvironmentVariableResponse": { "properties": { "actualValue": { "type": "string" }, "defaultValue": { "type": "string" }, "description": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ] }, "apimodels.GameSessionQueryResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/apimodels.GameSessionResponse" }, "type": "array" }, "paging": { "$ref": "#/definitions/apimodels.Pagination" } }, "required": [ "data", "paging" ] }, "apimodels.GameSessionResponse": { "properties": { "DSInformation": { "$ref": "#/definitions/apimodels.DSInformationResponse" }, "attributes": { "type": "object" }, "backfillTicketID": { "type": "string" }, "code": { "type": "string" }, "configuration": { "$ref": "#/definitions/apimodels.PublicConfiguration" }, "createdAt": { "type": "string" }, "createdBy": { "type": "string" }, "expiredAt": { "type": "string" }, "id": { "type": "string" }, "isActive": { "type": "boolean", "x-omitempty": false }, "isFull": { "type": "boolean", "x-omitempty": false }, "leaderID": { "type": "string" }, "matchPool": { "type": "string" }, "members": { "items": { "$ref": "#/definitions/apimodels.UserResponse" }, "type": "array" }, "namespace": { "type": "string" }, "storage": { "type": "object" }, "teams": { "items": { "$ref": "#/definitions/models.Team" }, "type": "array" }, "ticketIDs": { "items": { "type": "string" }, "type": "array" }, "updatedAt": { "type": "string" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "DSInformation", "backfillTicketID", "configuration", "createdAt", "createdBy", "id", "isActive", "isFull", "leaderID", "matchPool", "members", "namespace", "updatedAt", "version" ] }, "apimodels.GlobalConfigurationResponse": { "properties": { "metricExcludedNamespaces": { "items": { "type": "string" }, "type": "array" }, "regionRetryMapping": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" }, "regionURLMapping": { "items": { "type": "string" }, "type": "array" }, "testGameMode": { "type": "string" }, "testRegionURLMapping": { "items": { "type": "string" }, "type": "array" }, "testTargetUserIDs": { "items": { "type": "string" }, "type": "array" }, "updatedAt": { "type": "string" } }, "required": [ "regionRetryMapping", "regionURLMapping", "testGameMode", "testRegionURLMapping", "testTargetUserIDs", "updatedAt" ] }, "apimodels.JoinByCodeRequest": { "properties": { "code": { "type": "string" } }, "required": [ "code" ] }, "apimodels.KickResponse": { "properties": { "leaderID": { "type": "string" }, "members": { "items": { "$ref": "#/definitions/apimodels.UserResponse" }, "type": "array" }, "partyID": { "type": "string" } }, "required": [ "leaderID", "members", "partyID" ] }, "apimodels.NativeSessionPagingResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/model.NativeSession" }, "type": "array" }, "paging": { "$ref": "#/definitions/apimodels.Pagination" } }, "required": [ "data", "paging" ] }, "apimodels.PSNAppServerCredentialRecord": { "properties": { "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "scope": { "type": "string" } }, "required": [ "clientId", "clientSecret", "scope" ] }, "apimodels.Pagination": { "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "next": { "type": "string" }, "previous": { "type": "string" } }, "required": [ "first", "last", "next", "previous" ] }, "apimodels.PartyQueryResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/apimodels.PartySessionResponse" }, "type": "array" }, "paging": { "$ref": "#/definitions/apimodels.Pagination" } }, "required": [ "data", "paging" ] }, "apimodels.PartySessionResponse": { "properties": { "attributes": { "type": "object" }, "code": { "type": "string" }, "configuration": { "$ref": "#/definitions/apimodels.PublicConfiguration" }, "createdAt": { "type": "string" }, "createdBy": { "type": "string" }, "expiredAt": { "type": "string" }, "id": { "type": "string" }, "isActive": { "type": "boolean", "x-omitempty": false }, "isFull": { "type": "boolean", "x-omitempty": false }, "leaderID": { "type": "string" }, "members": { "items": { "$ref": "#/definitions/apimodels.UserResponse" }, "type": "array" }, "namespace": { "type": "string" }, "storage": { "type": "object" }, "updatedAt": { "type": "string" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "code", "configuration", "createdAt", "createdBy", "id", "isActive", "isFull", "leaderID", "members", "namespace", "updatedAt", "version" ] }, "apimodels.PlayerAttributesRequestBody": { "properties": { "crossplayEnabled": { "type": "boolean", "x-omitempty": false }, "currentPlatform": { "type": "string" }, "data": { "description": "the parameter is optional", "type": "object" }, "platforms": { "description": "the parameter is optional and is populated automatically. You can pass an empty array if needed.", "items": { "$ref": "#/definitions/models.UserPlatformInfo" }, "type": "array" }, "roles": { "items": { "type": "string" }, "type": "array" }, "simultaneousPlatform": { "description": "the parameter is optional and is populated automatically. You can pass an empty string if needed.", "type": "string" } }, "required": [ "crossplayEnabled", "currentPlatform", "data", "platforms", "simultaneousPlatform" ] }, "apimodels.PlayerAttributesResponseBody": { "properties": { "crossplayEnabled": { "type": "boolean", "x-omitempty": false }, "currentPlatform": { "type": "string" }, "data": { "type": "object" }, "platforms": { "items": { "$ref": "#/definitions/models.UserPlatformInfo" }, "type": "array" }, "roles": { "items": { "type": "string" }, "type": "array" }, "userID": { "type": "string" } }, "required": [ "crossplayEnabled", "currentPlatform", "data", "platforms", "roles", "userID" ] }, "apimodels.PlayerPlatform": { "properties": { "crossplayEnabled": { "type": "boolean", "x-omitempty": false }, "currentPlatform": { "type": "string" }, "userID": { "type": "string" } }, "required": [ "currentPlatform", "userID" ] }, "apimodels.PlayersCurrentPlatformRequest": { "properties": { "userIDs": { "items": { "type": "string" }, "type": "array" } }, "required": [ "userIDs" ] }, "apimodels.PlayersCurrentPlatformResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/apimodels.PlayerPlatform" }, "type": "array" } }, "required": [ "data" ] }, "apimodels.PromoteLeaderRequest": { "properties": { "leaderID": { "type": "string" } }, "required": [ "leaderID" ] }, "apimodels.PublicConfiguration": { "properties": { "PSNBaseURL": { "type": "string" }, "amsClaimTimeoutMinutes": { "format": "int32", "type": "integer" }, "appName": { "type": "string" }, "asyncProcessDSRequest": { "$ref": "#/definitions/models.AsyncProcessDSRequest" }, "attributes": { "type": "object" }, "autoJoin": { "type": "boolean", "x-omitempty": false }, "clientVersion": { "type": "string" }, "customURLGRPC": { "type": "string" }, "deployment": { "type": "string" }, "disableCodeGeneration": { "type": "boolean", "x-omitempty": false }, "disableResendInvite": { "type": "boolean", "x-omitempty": false }, "dsManualSetReady": { "type": "boolean", "x-omitempty": false }, "dsSource": { "type": "string" }, "enableSecret": { "type": "boolean", "x-omitempty": false }, "fallbackClaimKeys": { "items": { "type": "string" }, "type": "array" }, "grpcSessionConfig": { "$ref": "#/definitions/models.ExtendConfiguration" }, "immutableStorage": { "type": "boolean", "x-omitempty": false }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "leaderElectionGracePeriod": { "format": "int32", "type": "integer" }, "manualRejoin": { "type": "boolean", "x-omitempty": false }, "maxActiveSession": { "format": "int32", "type": "integer" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "name": { "type": "string" }, "nativeSessionSetting": { "$ref": "#/definitions/models.NativeSessionSetting" }, "partyCodeGeneratorString": { "type": "string" }, "partyCodeLength": { "format": "int32", "type": "integer" }, "persistent": { "type": "boolean", "x-omitempty": false }, "preferredClaimKeys": { "items": { "type": "string" }, "type": "array" }, "requestedRegions": { "items": { "type": "string" }, "type": "array" }, "textChat": { "type": "boolean", "x-omitempty": false }, "textChatMode": { "enum": [ "GAME", "NONE", "TEAM" ], "type": "string" }, "tieTeamsSessionLifetime": { "type": "boolean", "x-omitempty": false }, "ttlHours": { "format": "int32", "type": "integer" }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" } }, "required": [ "autoJoin", "clientVersion", "deployment", "inactiveTimeout", "inviteTimeout", "joinability", "maxPlayers", "minPlayers", "name", "persistent", "textChat", "type" ] }, "apimodels.PutGlobalConfigurationRequest": { "properties": { "metricExcludedNamespaces": { "items": { "type": "string" }, "type": "array" }, "regionRetryMapping": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" }, "regionURLMapping": { "items": { "type": "string" }, "type": "array" }, "testGameMode": { "type": "string" }, "testRegionURLMapping": { "items": { "type": "string" }, "type": "array" }, "testTargetUserIDs": { "items": { "type": "string" }, "type": "array" } }, "required": [ "metricExcludedNamespaces", "regionRetryMapping", "regionURLMapping", "testGameMode", "testRegionURLMapping", "testTargetUserIDs" ] }, "apimodels.PutPlatformCredentialsRequest": { "properties": { "psn": { "$ref": "#/definitions/apimodels.PSNAppServerCredentialRecord" } }, "required": [ "psn" ] }, "apimodels.RequestMember": { "properties": { "ID": { "type": "string" }, "PlatformID": { "type": "string" }, "PlatformUserID": { "type": "string" } }, "required": [ "ID", "PlatformID", "PlatformUserID" ] }, "apimodels.ResponseDeleteBulkGameSessions": { "properties": { "error": { "type": "string" }, "id": { "type": "string" } }, "required": [ "error", "id" ] }, "apimodels.ResponseDeleteBulkPartySessions": { "properties": { "error": { "type": "string" }, "id": { "type": "string" } }, "required": [ "error", "id" ] }, "apimodels.ServerSecret": { "properties": { "secret": { "type": "string" } }, "required": [ "secret" ] }, "apimodels.SessionInviteRequest": { "properties": { "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "platformID": { "type": "string" }, "userID": { "type": "string" } }, "required": [ "platformID", "userID" ] }, "apimodels.SessionInviteResponse": { "properties": { "platformUserID": { "type": "string" } }, "required": [ "platformUserID" ] }, "apimodels.SessionStorageRequest": { "properties": { "leader": { "type": "object" } }, "required": [ "leader" ] }, "apimodels.SetDSReadyRequest": { "properties": { "ready": { "type": "boolean", "x-omitempty": false } }, "required": [ "ready" ] }, "apimodels.UpdateConfigurationTemplateRequest": { "properties": { "NativeSessionSetting": { "$ref": "#/definitions/models.NativeSessionSetting" }, "PSNBaseUrl": { "type": "string" }, "amsClaimTimeoutMinutes": { "format": "int32", "type": "integer" }, "appName": { "type": "string" }, "asyncProcessDSRequest": { "$ref": "#/definitions/models.AsyncProcessDSRequest" }, "attributes": { "type": "object" }, "autoJoin": { "type": "boolean", "x-omitempty": false }, "autoLeaveSession": { "type": "boolean", "x-omitempty": false }, "clientVersion": { "type": "string" }, "customURLGRPC": { "type": "string" }, "deployment": { "type": "string" }, "disableCodeGeneration": { "type": "boolean", "x-omitempty": false }, "disableResendInvite": { "type": "boolean", "x-omitempty": false }, "dsManualSetReady": { "type": "boolean", "x-omitempty": false }, "dsSource": { "type": "string" }, "enableSecret": { "type": "boolean", "x-omitempty": false }, "fallbackClaimKeys": { "items": { "type": "string" }, "type": "array" }, "grpcSessionConfig": { "$ref": "#/definitions/models.ExtendConfiguration" }, "immutableStorage": { "type": "boolean", "x-omitempty": false }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "leaderElectionGracePeriod": { "format": "int32", "type": "integer" }, "manualRejoin": { "type": "boolean", "x-omitempty": false }, "maxActiveSessions": { "format": "int32", "type": "integer" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "name": { "type": "string" }, "partyCodeGeneratorString": { "type": "string" }, "partyCodeLength": { "format": "int32", "type": "integer" }, "persistent": { "type": "boolean", "x-omitempty": false }, "preferredClaimKeys": { "items": { "type": "string" }, "type": "array" }, "requestedRegions": { "items": { "type": "string" }, "type": "array" }, "textChat": { "type": "boolean", "x-omitempty": false }, "textChatMode": { "enum": [ "GAME", "NONE", "TEAM" ], "type": "string" }, "tieTeamsSessionLifetime": { "type": "boolean", "x-omitempty": false }, "ttlHours": { "format": "int32", "type": "integer" }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" } }, "required": [ "clientVersion", "deployment", "inactiveTimeout", "inviteTimeout", "joinability", "maxPlayers", "minPlayers", "name", "persistent", "requestedRegions", "textChat", "type" ] }, "apimodels.UpdateGameSessionBackfillRequest": { "properties": { "backfillTicketID": { "type": "string" } }, "required": [ "backfillTicketID" ] }, "apimodels.UpdateGameSessionMemberStatusResponse": { "properties": { "status": { "type": "string" }, "statusV2": { "type": "string" } }, "required": [ "status", "statusV2" ] }, "apimodels.UpdateGameSessionRequest": { "properties": { "attributes": { "type": "object" }, "backfillTicketID": { "type": "string" }, "clientVersion": { "type": "string" }, "deployment": { "type": "string" }, "fallbackClaimKeys": { "items": { "type": "string" }, "type": "array" }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "matchPool": { "type": "string" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "preferredClaimKeys": { "items": { "type": "string" }, "type": "array" }, "requestedRegions": { "items": { "type": "string" }, "type": "array" }, "teams": { "items": { "$ref": "#/definitions/models.Team" }, "type": "array" }, "ticketIDs": { "items": { "type": "string" }, "type": "array" }, "tieTeamsSessionLifetime": { "type": "boolean", "x-omitempty": false }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "attributes", "backfillTicketID", "clientVersion", "deployment", "inactiveTimeout", "inviteTimeout", "joinability", "matchPool", "maxPlayers", "minPlayers", "requestedRegions", "teams", "ticketIDs", "type", "version" ] }, "apimodels.UpdateGamesessionDSInformationRequest": { "properties": { "createdRegion": { "type": "string" }, "deployment": { "type": "string" }, "description": { "type": "string" }, "ip": { "type": "string" }, "port": { "format": "int32", "type": "integer" }, "region": { "type": "string" }, "serverId": { "type": "string" }, "source": { "type": "string" }, "status": { "type": "string" } }, "required": [ "createdRegion", "deployment", "description", "ip", "port", "region", "serverId", "source", "status" ] }, "apimodels.UpdatePartyRequest": { "properties": { "attributes": { "type": "object" }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "enum": [ "CLOSED", "FRIENDS_OF_FRIENDS", "FRIENDS_OF_LEADER", "FRIENDS_OF_MEMBERS", "INVITE_ONLY", "OPEN" ], "type": "string" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "type": { "enum": [ "DS", "NONE", "P2P" ], "type": "string" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "attributes", "inactiveTimeout", "inviteTimeout", "joinability", "maxPlayers", "minPlayers", "type", "version" ] }, "apimodels.UserResponse": { "properties": { "id": { "type": "string" }, "platformID": { "type": "string" }, "platformUserID": { "type": "string" }, "previousStatus": { "type": "string" }, "status": { "enum": [ "CONNECTED", "INVITED", "JOINED", "KICKED", "LEFT", "REJECTED" ], "type": "string" }, "statusV2": { "enum": [ "CANCELLED", "CONNECTED", "DISCONNECTED", "DROPPED", "INVITED", "JOINED", "KICKED", "LEFT", "REJECTED", "TERMINATED", "TIMEOUT" ], "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "id", "platformID", "platformUserID", "status", "statusV2", "updatedAt" ] }, "apimodels.XblCertificateResponseBody": { "properties": { "businessPartnerCertFileBytes": { "type": "string" }, "businessPartnerCertFileName": { "type": "string" }, "createdBy": { "type": "string" }, "namespace": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "businessPartnerCertFileBytes", "businessPartnerCertFileName", "createdBy", "namespace", "updatedAt" ] }, "logconfig.Configuration": { "properties": { "logLevel": { "enum": [ "debug", "error", "fatal", "info", "panic", "trace", "warning" ], "type": "string" } } }, "model.NativeSession": { "properties": { "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "DeletedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "PushContextID": { "type": "string" }, "id": { "type": "string" }, "members": { "items": { "$ref": "#/definitions/model.NativeSessionMember" }, "type": "array" }, "namespace": { "type": "string" }, "nativeSessionPlatforms": { "additionalProperties": { "type": "string" }, "type": "object" }, "persistent": { "type": "boolean", "x-omitempty": false } }, "required": [ "CreatedAt", "DeletedAt", "PushContextID", "id", "members", "namespace", "nativeSessionPlatforms", "persistent" ] }, "model.NativeSessionMember": { "properties": { "platformID": { "type": "string" }, "platformUserID": { "type": "string" }, "userID": { "type": "string" } }, "required": [ "platformID", "platformUserID", "userID" ] }, "models.AsyncProcessDSRequest": { "properties": { "async": { "type": "boolean", "x-omitempty": false }, "timeout": { "format": "int64", "type": "integer" } } }, "models.DSMConfigRecord": { "properties": { "claim_timeout": { "format": "int32", "type": "integer", "x-nullable": false }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "creation_timeout": { "format": "int32", "type": "integer", "x-nullable": false }, "namespace": { "type": "string", "x-nullable": false }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true } }, "required": [ "claim_timeout", "creation_timeout" ] }, "models.DefaultDSMCConfig": { "properties": { "claim_timeout": { "format": "int32", "type": "integer", "x-nullable": false }, "creation_timeout": { "format": "int32", "type": "integer", "x-nullable": false } }, "required": [ "claim_timeout", "creation_timeout" ] }, "models.ExtendConfiguration": { "properties": { "appName": { "type": "string" }, "customURL": { "type": "string" }, "functionFlag": { "format": "int32", "type": "integer", "x-nullable": true } } }, "models.GameServer": { "properties": { "alternate_ips": { "items": { "type": "string" }, "type": "array" }, "ams_protocol": { "items": { "$ref": "#/definitions/models.PortConfigurationAMS" }, "type": "array" }, "custom_attribute": { "type": "string" }, "deployment": { "type": "string" }, "description": { "type": "string" }, "extend_region": { "type": "string" }, "game_version": { "type": "string" }, "image_version": { "type": "string" }, "ip": { "type": "string" }, "is_override_game_version": { "type": "boolean", "x-omitempty": false }, "last_update": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "type": "string" }, "pod_name": { "type": "string" }, "port": { "format": "int32", "type": "integer" }, "ports": { "additionalProperties": { "type": "integer" }, "type": "object" }, "protocol": { "type": "string" }, "provider": { "type": "string" }, "region": { "type": "string" }, "session_id": { "type": "string" }, "source": { "type": "string" }, "status": { "type": "string" } }, "required": [ "custom_attribute", "is_override_game_version", "last_update", "namespace", "region", "session_id", "source", "status" ] }, "models.MemberActiveSession": { "properties": { "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "ID": { "type": "string" }, "MemberID": { "type": "string" }, "Namespace": { "type": "string" }, "SessionIDs": { "items": { "type": "string" }, "type": "array" }, "SessionTemplate": { "type": "string" }, "Total": { "format": "int32", "type": "integer" }, "UpdatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "CreatedAt", "ID", "MemberID", "Namespace", "SessionIDs", "SessionTemplate", "Total", "UpdatedAt" ] }, "models.NativeSessionSetting": { "properties": { "PSNDisableSystemUIMenu": { "items": { "enum": [ "KICK", "PROMOTE_TO_LEADER", "UPDATE_INVITABLE_USER_TYPE", "UPDATE_JOINABLE_USER_TYPE" ], "type": "string" }, "type": "array" }, "PSNServiceLabel": { "format": "int32", "type": "integer" }, "PSNSupportedPlatforms": { "items": { "type": "string" }, "type": "array" }, "SessionTitle": { "type": "string" }, "ShouldSync": { "type": "boolean", "x-omitempty": false }, "XboxAllowCrossPlatform": { "type": "boolean", "x-omitempty": false }, "XboxSandboxID": { "type": "string" }, "XboxServiceConfigID": { "type": "string" }, "XboxSessionTemplateName": { "type": "string" }, "XboxTitleID": { "type": "string" }, "localizedSessionName": { "type": "object" } }, "required": [ "PSNServiceLabel", "SessionTitle", "XboxAllowCrossPlatform", "XboxSandboxID", "XboxServiceConfigID", "XboxSessionTemplateName", "XboxTitleID" ] }, "models.PSNAppServerCredentials": { "properties": { "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "createdAt": { "type": "string" }, "createdBy": { "type": "string" }, "scope": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "clientSecret", "createdAt", "createdBy", "scope", "updatedAt" ] }, "models.PartyMembers": { "properties": { "partyID": { "type": "string" }, "userIDs": { "items": { "type": "string" }, "type": "array" } } }, "models.PlatformCredentials": { "properties": { "psn": { "$ref": "#/definitions/models.PSNAppServerCredentials" }, "updatedAt": { "type": "string" }, "xbox": { "$ref": "#/definitions/models.XBLCertificateCredential" } }, "required": [ "psn", "updatedAt" ] }, "models.PortConfigurationAMS": { "properties": { "name": { "type": "string" }, "protocol": { "type": "string" } }, "required": [ "name", "protocol" ] }, "models.RecentPlayerQueryResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/models.UserInfoResponse" }, "type": "array" } }, "required": [ "data" ] }, "models.RequestReconcileMaxActiveSession": { "properties": { "userID": { "type": "string" } }, "required": [ "userID" ] }, "models.Team": { "properties": { "parties": { "items": { "$ref": "#/definitions/models.PartyMembers" }, "type": "array" }, "teamID": { "type": "string" }, "userIDs": { "items": { "type": "string" }, "type": "array" } } }, "models.UserInfoResponse": { "properties": { "lastPlayedTime": { "format": "date-time", "type": "string", "x-nullable": true }, "matchPool": { "type": "string" }, "namespace": { "type": "string" }, "platformName": { "type": "string" }, "sessionTemplate": { "type": "string" }, "userID": { "type": "string" } } }, "models.UserPlatformInfo": { "properties": { "name": { "type": "string" }, "userID": { "type": "string" } }, "required": [ "name", "userID" ] }, "models.XBLCertificateCredential": { "properties": { "businessPartnerCertFileBytes": { "type": "string" }, "businessPartnerCertFileName": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "createdBy": { "type": "string" }, "namespace": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "businessPartnerCertFileBytes", "businessPartnerCertFileName", "createdAt", "createdBy", "namespace", "updatedAt" ] }, "response.Error": { "properties": { "attributes": { "additionalProperties": { "type": "string" }, "type": "object" }, "errorCode": { "format": "int32", "type": "integer" }, "errorMessage": { "type": "string" }, "message": { "type": "string" }, "name": { "type": "string" } }, "required": [ "attributes", "errorCode", "errorMessage", "message", "name" ] } }, "x-docs": { "alias": "session", "host": "https://stage.accelbyte.io", "path": "/session/apidocs/api.json" }, "x-version": { "buildDate": "2025-11-19T03:13:16+00:00", "gitHash": "44a34dbb12e615e138e6e6c01abc8c45be47b9f4", "version": "3.28.0", "version-roles-seeding": "1.2.86" } }