{ "host": "demo.accelbyte.io", "info": { "contact": { "email": "engineering@accelbyte.io", "name": "Engineering Team at AccelByte", "url": "https://accelbyte.io" }, "description": "Justice IAM Service", "title": "justice-iam-service", "version": "7.40.1" }, "schemes": [ "https" ], "externalDocs": { "description": "API Docs", "url": "https://stage.accelbyte.io/iam/apidocs" }, "securityDefinitions": { "authorization": { "in": "header", "name": "Authorization", "type": "apiKey" }, "basic": { "type": "basic" } }, "security": [ { "basic": [] } ], "swagger": "2.0", "paths": { "/iam/.well-known/oauth-authorization-server/{namespace}": { "get": { "consumes": [ "*/*" ], "description": " Implements RFC 8414((https://datatracker.ietf.org/doc/html/rfc8414)), providing a standardized mechanism for OAuth 2.0 clients to discover authorization server metadata. Clients can retrieve detailed information about server capabilities, supported grant types, cryptographic algorithms, and API locations without manual configuration.\n### Key Features:\n\tDynamic Discovery: Clients automatically discover server capabilities\n\tStandard Compliance: Implements RFC 8414 OAuth 2.0 Authorization Server Metadata\n\tSecurity Information: Provides details about supported security features\n\tAPI Discovery: Returns URLs for all OAuth APIs (authorization, token, revocation, etc.)\n### Request:\n\tMethod: GET\n\tPath: \u0026#39;/.well-known/oauth-authorization-server/{namespace}\u0026#39;\n\tHeaders: Accept: application/json\n### Response:\nReturns a JSON object containing comprehensive metadata about the OAuth authorization server configuration.\n", "operationId": "GetAuthorizationServerMetadataWithNamespace", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OAuth Authorization Metadata returned", "schema": { "$ref": "#/definitions/oauthcommon.ASMetadataResponse" } } }, "security": [ { "authorization": [] } ], "summary": "OAuth Authorization Server Metadata", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/get-authorization-server-metadata-by-namespace" } }, "/iam/bans": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/bans [GET]_**", "operationId": "GetBansType", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.Bans" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get list of ban types", "tags": [ "Bans" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/bans/v1/list", "x-security": [ { "userPermissions": [ "ADMIN:BAN [READ]", "BAN:ADMIN [READ]" ] } ] } }, "/iam/bans/reasons": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/bans/reasons [GET]_**", "operationId": "GetListBanReason", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.BanReasons" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get list of ban reasons", "tags": [ "Bans" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/bans/v1/list-reasons", "x-security": [ { "userPermissions": [ "ADMIN:BAN [READ]", "BAN:ADMIN [READ]" ] } ] } }, "/iam/clients": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients [GET]_**", "operationId": "GetClients", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/clientmodel.ClientResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get All Clients", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/list-all-deprecated", "x-security": [ { "userPermissions": [ "CLIENT [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients [POST]_**\n\n**Note for Multi Tenant Mode (Confidential Client):**\nOnly Super admin can set permission with resource \u0026amp; action.\nStudio admin \u0026amp; game admin need set permission with permission module in _/v3/admin/namespaces/{namespace}/clients [POST]_.\n", "operationId": "CreateClient", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientCreateRequest" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/clientmodel.ClientCreationResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "Client exists" } }, "security": [ { "authorization": [] } ], "summary": "Create Client", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/create-deprecated", "x-security": [ { "userPermissions": [ "CLIENT:ADMIN [CREATE]" ] } ] } }, "/iam/clients/{clientId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients/{clientId} [DELETE]_**", "operationId": "DeleteClient", "parameters": [ { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete Client", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/delete-deprecated", "x-security": [ { "userPermissions": [ "CLIENT:ADMIN [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients/{clientId} [GET]_**", "operationId": "GetClient", "parameters": [ { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/clientmodel.ClientResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get Client", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/get-deprecated", "x-security": [ { "userPermissions": [ "CLIENT [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients/{clientId} [PATCH]_**", "operationId": "UpdateClient", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientUpdateRequest" } }, { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/clientmodel.ClientResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update Client", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/update-deprecated", "x-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/clients/{clientId}/clientpermissions": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _iam/v3/admin/namespaces/{namespace}/clients/{clientId}/permissions [PUT]_**", "operationId": "UpdateClientPermission", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.ClientPermissions" } }, { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update Client Permissions", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/update-permissions-deprecated", "x-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/clients/{clientId}/clientpermissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients/{clientId}/permissions/{resource}/{action} [DELETE]_**", "operationId": "DeleteClientPermission", "parameters": [ { "description": "Action", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete Client Permission", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/delete-permission-deprecated", "x-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] }, "post": { "consumes": [ "*/*" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients/{clientId}/permissions [POST]_**", "operationId": "AddClientPermission", "parameters": [ { "description": "Action", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Add Client Permission", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/add-permissions", "x-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/clients/{clientId}/secret": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/{clientId}/secret [PUT]_**", "operationId": "UpdateClientSecret", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientUpdateSecretRequest" } }, { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update Client Secret", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/update-secret-deprecated", "x-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/clients": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients [GET]_**", "operationId": "GetClientsbyNamespace", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/clientmodel.ClientResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get clients by namespace", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/list-deprecated", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:CLIENT [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/v3/admin/namespaces/{namespace}/clients [POST]_**\n\n**Note for Multi Tenant Mode (Confidential Client):**\nOnly Super admin can set permission with resource \u0026amp; action.\nStudio admin \u0026amp; game admin need set permission with permission module in _/v3/admin/namespaces/{namespace}/clients [POST]_.\n", "operationId": "CreateClientByNamespace", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientCreateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/clientmodel.ClientCreationResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "Client exists" } }, "security": [ { "authorization": [] } ], "summary": "Create Client", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/create", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [CREATE]" ] } ] } }, "/iam/namespaces/{namespace}/clients/{clientId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients/{clientId} [DELETE]_**", "operationId": "DeleteClientByNamespace", "parameters": [ { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete Client", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v1/delete", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT:{clientId} [DELETE]" ] } ] } }, "/iam/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users [POST]_**\n- **Substitute endpoint: _/iam/v4/public/namespaces/{namespace}/users [POST]_**\n- **Note:**\n\t1. v3 \u0026amp; v4 introduce optional verification code\n\t2. format difference(Pascal case =\u0026gt; Camel case)\n\nAvailable Authentication Types:\n1. **EMAILPASSWD**: an authentication type used for new user registration through email.\n2. **PHONEPASSWD**: an authentication type used for new user registration through phone number.\n\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.", "operationId": "CreateUser", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserCreateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.UserCreateResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014001\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014002\u003c/td\u003e\u003ctd\u003euser already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Create User", "tags": [ "Users" ], "x-errorCodes": { "1014001": "unable to parse request body", "1014002": "user already exists", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/create", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [CREATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/admin": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint(Public): _/iam/v3/admin/namespaces/{namespace}/roles/{roleId}/users [GET]_**\n- **Note:**\n\tdifference in V3 response, format difference: Pascal case =\u0026gt; Camel case\n \nSearches admin users which have the roleId\n\nNotes: only accepts admin role. Admin Role is role which have admin status and members.\nUse endpoint [GET] /roles/{roleId}/admin to check the role status", "operationId": "GetAdminUsersByRoleID", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "integer" }, { "description": "The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "integer" }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" }, { "description": "Role ID", "in": "query", "name": "roleId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetAdminUsersResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20021\u003c/td\u003e\u003ctd\u003einvalid pagination parameter\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10157\u003c/td\u003e\u003ctd\u003especified role is not admin role\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Get Admin Users By RoleId", "tags": [ "Users" ], "x-errorCodes": { "10157": "specified role is not admin role", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20021": "invalid pagination parameter" }, "x-operationid": "iam/admin/users/v1/list-admins", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/byLoginId": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users [GET]_**", "operationId": "GetUserByLoginID", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Login id", "in": "query", "name": "loginId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.PublicUserResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Get User By Login Id", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error", "20008": "user not found" }, "x-operationid": "iam/public/users/v1/get-by-login-id", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/byPlatformUserID": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint(Public): _/iam/v3/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId} [GET]_**\n- **Substitute endpoint(Admin): _/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId} [GET]_**\n- **Note:**\n\t1. difference in V3 response, format difference: Pascal case =\u0026gt; Camel case", "operationId": "GetUserByPlatformUserID", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "query", "name": "platformID", "required": true, "type": "string" }, { "description": "Platform User ID", "in": "query", "name": "platformUserID", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.PublicUserResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get User By Platform User ID", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/get-by-platform-user-id", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/forgotPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/forgot [POST]_**\n\n**Special note for publisher-game scenario:** Game Client should provide game namespace path parameter and Publisher Client should provide publisher namespace path parameter.\n\nThe password reset code will be sent to the publisher account\u0026#39;s email address.", "operationId": "ForgotPassword", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [], "basic": [] } ], "summary": "Request Password Reset Code", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/request-password-reset" } }, "/iam/namespaces/{namespace}/users/listByLoginIds": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint(query by email list): _/iam/v3/public/namespaces/{namespace}/users/bulk/basic [POST]_**\n- **Substitute endpoint(query by user id list): _/iam/v3/admin/namespaces/{namespace}/users/search/bulk [POST]_**", "operationId": "GetUsersByLoginIds", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "List of LoginIDs. Separated by comma.", "in": "query", "name": "loginIds", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.PublicUsersResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get a List of Users By Their Login Id", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/list-by-login-ids", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/resetPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/reset [POST]_**", "operationId": "ResetPassword", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ResetPasswordRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014016\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1015073\u003c/td\u003e\u003ctd\u003enew password same as old password\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014021\u003c/td\u003e\u003ctd\u003everification code expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014019\u003c/td\u003e\u003ctd\u003everification code already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014020\u003c/td\u003e\u003ctd\u003everification code invalid\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014018\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1014017\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [], "basic": [] } ], "summary": "Reset User Password", "tags": [ "Users" ], "x-errorCodes": { "1014016": "unable to parse request body", "1014017": "user not found", "1014018": "verification code not found", "1014019": "verification code already used", "1014020": "verification code invalid", "1014021": "verification code expired", "1015073": "new password same as old password", "20000": "internal server error" }, "x-operationid": "iam/public/users/v1/reset-password" } }, "/iam/namespaces/{namespace}/users/search": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/search [GET]_**\nSearch all users that match the query on these fields: all login IDs (email address, phone number, and platform user id),\nuserID, display name, and on the specified namespace. If the query is not defined, then it searches all users on the specified namespace.", "operationId": "SearchUser", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "search query string (optional)", "in": "query", "name": "query", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.SearchUsersResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Search users", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/search", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:* [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/information [DELETE]_**", "operationId": "DeleteUser", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete User", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/delete", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint(Public): _/iam/v3/public/namespaces/{namespace}/users/{userId} [GET]_**\n- **Substitute endpoint(Admin): _/iam/v3/admin/namespaces/{namespace}/users/{userId} [GET]_**\n- **Note:**\n\tformat difference in response: Pascal case =\u0026gt; Camel case", "operationId": "GetUserByUserID", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Get User By User Id", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20008": "user not found" }, "x-operationid": "iam/public/users/v1/get", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint([PUT]): _/iam/v3/public/namespaces/{namespace}/users/me [PUT]_**\n- **Substitute endpoint([PATCH]): _/iam/v3/public/namespaces/{namespace}/users/me [PATCH]_**\n- **Substitute endpoint([PATCH]): _/iam/v4/public/namespaces/{namespace}/users/me [PATCH]_**\n- **Note:**\n\t1. Prefer [PATCH] if client support PATCH method\n\t2. Difference in V3/v4 request body, format difference: Pascal case =\u0026gt; Camel case\n\nSupports updating user based on given data. **Single request can update single field or multi fields.**\nSupported field {Country, DisplayName, LanguageTag}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\n\n**Several case of updating email address**\n- User want to update email address of which have been verified, NewEmailAddress response field will be filled with new email address\n- User want to update email address of which have not been verified, {LoginId, OldEmailAddress, EmailAddress} response field will be filled with new email address.\n- User want to update email address of which have been verified and updated before, {LoginId, OldEmailAddress, EmailAddress} response field will be filled with verified email before. NewEmailAddress response field will be filled with newest email address.", "operationId": "UpdateUser", "parameters": [ { "description": "\u003cul\u003e\u003cli\u003eCountry (Optional) \u003cbr\u003e use ISO3166-1 alpha-2 two letter, e.g. US.\u003c/li\u003e\u003cli\u003eDisplayName (Optional) string \u003c/li\u003e\u003cli\u003eLanguageTag (Optional) use Language e.g. en / en-US \u003c/li\u003e\u003c/ul\u003e", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10131\u003c/td\u003e\u003ctd\u003einvalid date of birth\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10155\u003c/td\u003e\u003ctd\u003ecountry is not defined\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10132\u003c/td\u003e\u003ctd\u003einvalid email address\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10131": "invalid date of birth", "10132": "invalid email address", "10133": "email already used", "10139": "platform account not found", "10154": "country not found", "10155": "country is not defined", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v1/update", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/ban": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans [POST]_**", "operationId": "BanUser", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BanCreateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.UserBanResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Ban a single user", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v1/ban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [CREATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/bans": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans [GET]_**", "operationId": "GetUserBanHistory", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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": { "items": { "$ref": "#/definitions/model.UserBanResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get user's bans history", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/list-bans", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/bans/{banId}/disable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans/{banId} [PATCH]_**\n\n**Notes for using IAM in publisher - game studio scenarios**\nAllows:\n- The admin user in publisher namespace disables user’s ban in publisher namespace.\n- The admin user in game namespace disables user’s ban in game namespace.\n- The admin user in publisher namespace disables user’s ban in publisher namespace.\n\nOther scenarios are not supported and will return 403: Forbidden.", "operationId": "DisableUserBan", "parameters": [ { "description": "Ban ID", "in": "path", "name": "banId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserBanResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10145\u003c/td\u003e\u003ctd\u003edisallow game access publisher user's ban\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Disable ban for a single user.", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10145": "disallow game access publisher user's ban", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found" }, "x-operationid": "iam/admin/users/v1/disable-ban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/bans/{banId}/enable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans/{banId} [PATCH]_**", "operationId": "EnableUserBan", "parameters": [ { "description": "Ban ID", "in": "path", "name": "banId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserBanResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10145\u003c/td\u003e\u003ctd\u003edisallow game access publisher user's ban\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10144\u003c/td\u003e\u003ctd\u003euser has no bans\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Enable ban for a single user", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10144": "user has no bans", "10145": "disallow game access publisher user's ban", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found" }, "x-operationid": "iam/admin/users/v1/enable-ban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/crosslink": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId} [POST]_**\n\nAccess token from original namespace is needed as authorization header. Access token from designated account needed as form parameter to verify the ownership of that account.\nWhen platformID (device platfom ID) is specified, platform login method for that specific platform ID is removed.\nThis means to protect account from second hand device usage.", "operationId": "ListCrossNamespaceAccountLink", "parameters": [ { "description": "Access token of the targeted account", "in": "formData", "name": "linkingToken", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Current platform ID", "in": "formData", "name": "platformId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Links existing account with another account in different namespace. ", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/link-accounts", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/disable": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/status [PATCH]_**\n\nFor **Deletion Account** purpose fill the reason with:\n- **DeactivateAccount** : if your deletion request comes from user\n- **AdminDeactivateAccount** : if your deletion request comes from admin", "operationId": "DisableUser", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableUserRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Disable a user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v1/disable", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/enable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/status [PATCH]_**", "operationId": "EnableUser", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Enable a user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/enable", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/information": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/information [DELETE]_**", "operationId": "DeleteUserInformation", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete user's information", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/delete", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:INFORMATION:USER:{userId} [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/information [GET]_**", "operationId": "GetUserInformation", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserInformation" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get user's information", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/get-information", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:INFORMATION:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/logins/histories": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/logins/histories [GET]_**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/logins/histories [GET]_**\n\nNotes:\n- Retrieves the first page of the data if \u0026#39;after\u0026#39; and \u0026#39;before\u0026#39; parameters is empty.\n- The maximum value of the limit is 100 and the minimum value of the limit is 1.\n- Retrieves the next page of the data if we provide \u0026#39;after\u0026#39; parameters with valid Unix timestamp.\n- Retrieves the previous page of the data if we provide \u0026#39;before\u0026#39; parameter with valid data Unix timestamp.", "operationId": "GetUserLoginHistories", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page (In Unix timestamp formats, e.g:1545114248)", "in": "query", "name": "after", "type": "number" }, { "description": "The cursor that points to query data for the previous page (In Unix timestamp formats, e.g:1545114248).", "in": "query", "name": "before", "type": "number" }, { "description": "The number of data retrieved in a page", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.LoginHistoriesResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get User's Login Histories", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/get-login-history", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:HISTORY:LOGIN:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": " **This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/password [PUT]_**", "operationId": "UpdatePassword", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserPasswordUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10142\u003c/td\u003e\u003ctd\u003enew password cannot be same with original\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10143\u003c/td\u003e\u003ctd\u003epassword not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Update User Password", "tags": [ "Users" ], "x-errorCodes": { "10142": "new password cannot be same with original", "10143": "password not match", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v1/update-password", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:PASSWORD:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/permissions": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions [POST]_**\n\nReplaces user\u0026#39;s permissions with the ones defined in body\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\nSyntax reference\n\nFields:\n1. Seconds: 0-59 * / , -\n2. Minutes: 0-59 * / , -\n3. Hours: 0-23 * / , -\n4. Day of month: 1-31 * / , - L W\n5. Month: 1-12 JAN-DEC * / , -\n6. Day of week: 0-6 SUN-SAT * / , - L #\n7. Year: 1970-2099 * / , -\n\nSpecial characters:\n1. *: all values in the fields, e.g. * in seconds fields indicates every second\n2. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n3. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n4. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n5. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n6. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n7. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.\n\n", "operationId": "SaveUserPermission", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.Permissions" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Save User Permissions", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/set-permissions", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/permissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions/{resource}/{action} [DELETE]_**", "operationId": "DeleteUserPermission", "parameters": [ { "description": "Action, value must be in range 1-15", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete User Permission", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/remove-permission", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [DELETE]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions [POST]_**\n\nUpdates existing permission (bitwise OR the action) if found one with same resource, otherwise appends a new permission\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\nSyntax reference\n\nFields:\n1. Seconds: 0-59 * / , -\n2. Minutes: 0-59 * / , -\n3. Hours: 0-23 * / , -\n4. Day of month: 1-31 * / , - L W\n5. Month: 1-12 JAN-DEC * / , -\n6. Day of week: 0-6 SUN-SAT * / , - L #\n7. Year: 1970-2099 * / , -\n\nSpecial characters:\t\n1. *: all values in the fields, e.g. * in seconds fields indicates every second\n2. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n3. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n4. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n5. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n6. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n7. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.", "operationId": "AddUserPermission", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdatePermissionScheduleRequest" } }, { "description": "Action, value must be in range 1-15", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Add User Permission", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/add-permission", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/platforms": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms [GET]_**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms [GET]_**\n\n## Justice Platform Account\nThe permission ’ADMIN:NAMESPACE:{namespace}:JUSTICE:USER:{userId}’ [READ] is required in order to read the UserID who linked with the user.", "operationId": "GetUserPlatformAccounts", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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": { "items": { "$ref": "#/definitions/accountcommon.UserLinkedPlatform" }, "type": "array" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get platform accounts linked to the user", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/list-platform-accounts", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace}": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace} [GET]_**\n\nRequires the client access token as the bearer token\nSupports publisher access to game and game access to publisher\nIf targetNamespace filled with publisher namespace, returns its publisher user id and publisher namespace.\nIf targetNamespace filled with game namespace, returns its game user id and game namespace. **Will create game user id if not exists.**", "operationId": "GetUserMapping", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "targetNamespace", "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/model.GetUserMapping" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get user mapping", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/get-mapping", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:JUSTICE:USER:{userId} [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace} [GET]_**\n\nRequires the client access token as the bearer token\n\nReturns user Justice platform account linked with the given user. If the user Justice platform account doesn\u0026#39;t exist in the designated namespace, automatically *creates and returns the new Justice platform account.*\nThe newly user Justice platform account is going to be forced to perform token grant through the given user and can\u0026#39;t perform password update\n\n### Read Justice Platform Account UserID \nWithout permission the UserID is going to be censored and replaced with “Redacted” text.", "operationId": "GetUserJusticePlatformAccount", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "targetNamespace", "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/model.GetUserJusticePlatformAccountResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get the Justice linked accounts on the designated namespace", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/get-or-create-accelbyte-account", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:JUSTICE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId} [POST]_**\n\n**Prerequisite:** Platform client configuration need to be added to database for specific platformId. Namespace service URL need to be specified (refer to required environment variables).\n\n## Supported platforms:\n- **steam**: The ticket’s value is the authentication code returned by Steam.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The ticket\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The ticket’s value is the authorization code returned by Facebook OAuth\n- **google**: The ticket’s value is the authorization code returned by Google OAuth\n- **oculus**: The ticket’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The ticket’s value is the authorization code returned by Twitch OAuth.\n- **android**: The ticket\u0026#39;s value is the Android’s device ID\n- **ios**: The ticket\u0026#39;s value is the iOS’s device ID.\n- **apple**: The ticket’s value is the authorization code returned by Apple OAuth.\n- **device**: Every device that doesn’t run Android and iOS is categorized as a device platform. The ticket\u0026#39;s value is the device’s ID.\n- **discord**: The ticket’s value is the authorization code returned by Discord OAuth.", "operationId": "PlatformLink", "parameters": [ { "description": "Ticket from platform", "in": "formData", "name": "ticket", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10163\u003c/td\u003e\u003ctd\u003eplatform is already linked with the user account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Link user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "10163": "platform is already linked with the user account", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v1/link-platform-account", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/platforms/{platformId}/unlink": { "post": { "consumes": [ "application/x-www-form-urlencoded", "text/plain" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId} [DELETE]_**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/all [DELETE]_**\n\n## Supported platforms:\n- **steam**\n- **steamopenid**\n- **facebook**\n- **google**\n- **oculus**\n- **twitch**\n- **android**\n- **ios**\n- **device**\n- **justice**: A user might have several \u0026#39;justice’ platform on different namespaces. That’s why the platform_namespace need to be specified when the platform ID is ‘justice’. The platform_namespace is the designated user’s namespace.\n\tUnlink user\u0026#39;s account with platform. \u0026#39;justice\u0026#39; platform might have multiple accounts from different namespaces linked. platform_namespace need to be specified when the platform ID is \u0026#39;justice\u0026#39;. \n\tUnlinking justice platform will enable password token grant and password update.", "operationId": "PlatformUnlink", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Namespace of the platform account to be unlinked", "in": "formData", "name": "platform_namespace", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Unlink user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v1/unlink-platform", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/publisher": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/publisher [GET]_**\n\n**Restriction:**\nPath Parameter *namespace* can be provided only with game namespace", "operationId": "GetPublisherUser", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.GetPublisherUserResponse" } }, "400": { "description": "Error Code: 7239 - Error Message: wrong namespace: required game namespace", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get Publisher User", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/get-publisher", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:PUBLISHER:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/roles": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles [PATCH]_**", "operationId": "SaveUserRoles", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "type": "string" }, "type": "array" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" }, "409": { "description": "Conflict" } }, "security": [ { "authorization": [] } ], "summary": "Save User Roles", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v1/set-roles", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/roles/{roleId}": { "delete": { "consumes": [ "application/json", "text/plain" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles/{roleId} [DELETE]_**", "operationId": "DeleteUserRole", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10159\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Delete User Role", "tags": [ "Users" ], "x-errorCodes": { "10156": "role not found", "10159": "operator is not a role manager", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found" }, "x-operationid": "iam/admin/users/v1/revoke-role", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [DELETE]" ] } ] }, "post": { "consumes": [ "application/json", "text/plain" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles/{roleId} [POST]_**", "operationId": "AddUserRole", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10159\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10160\u003c/td\u003e\u003ctd\u003euser already has the role\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10161\u003c/td\u003e\u003ctd\u003euser already the role member\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Add User Role", "tags": [ "Users" ], "x-errorCodes": { "10156": "role not found", "10159": "operator is not a role manager", "10160": "user already has the role", "10161": "user already the role member", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found" }, "x-operationid": "iam/admin/users/v1/assign-role", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/upgradeHeadlessAccount": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/headless/verify [POST]_**", "operationId": "upgradeHeadlessAccount", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "Conflict" } }, "security": [ { "authorization": [] } ], "summary": "Upgrade user account to full account (with email)", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/upgrade", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/upgradeHeadlessAccountWithVerificationCode": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/headless/code/verify [POST]_**\n\nUpgrades a headless account by linking it with an email address, username, and password, and immediately verifies the email address afterward. \n\nBy upgrading the headless account into a full account, the user could use the email address and password for using Justice IAM.\n\nIn order to get a verification code, please check the send verification code API.", "operationId": "UpgradeHeadlessAccountWithVerificationCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountWithVerificationCodeRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "Conflict" } }, "security": [ { "authorization": [] } ], "summary": "Upgrade headless account and automatically verified the email address if it is succeeded", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v1/upgrade-and-validate", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/verification": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n\t- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/code/verify [POST]_**\n\nRedeems a verification code sent to a user to verify the user\u0026#39;s contact address is correct\nAvailable ContactType : *email* or *phone*", "operationId": "UserVerification", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserVerificationRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10149\u003c/td\u003e\u003ctd\u003everification contact type doesn't match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10148\u003c/td\u003e\u003ctd\u003everification code context doesn't match the required context\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10162\u003c/td\u003e\u003ctd\u003einvalid verification\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Redeem verification code sent to user", "tags": [ "Users" ], "x-errorCodes": { "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10139": "platform account not found", "10148": "verification code context doesn't match the required context", "10149": "verification contact type doesn't match", "10152": "verification code not found", "10162": "invalid verification", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v1/validate-registration-code", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/verificationcode": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/code/request [POST]_**\n\nThe verification code is sent to either the phone number or email address. It depends on the LoginID\u0026#39;s value.\nAvailable contexts for use :\n1. **UserAccountRegistration**\n\ta context type used for verifying email address in user account registration. It returns 409 if the email address already verified. **_It is the default context if the Context field is empty_**\n2. **UpdateEmailAddress**\n\ta context type used for verify user before updating email address.(Without email address verified checking)\n3. **upgradeHeadlessAccount**\n\tThe context is intended to be used whenever the email address wanted to be automatically verified on upgrading a headless account. If this context used, IAM rejects the request if the loginId field\u0026#39;s value is already used by others by returning HTTP Status Code 409.", "operationId": "SendVerificationCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10146\u003c/td\u003e\u003ctd\u003euserID not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10140\u003c/td\u003e\u003ctd\u003euser verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Send verification code to user", "tags": [ "Users" ], "x-errorCodes": { "10133": "email already used", "10139": "platform account not found", "10140": "user verified", "10146": "userID not match", "10171": "email address not found", "20000": "internal server error", "20001": "unauthorized access", "20007": "too many requests", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v1/send-verification-code", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/oauth/authorize": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nSupports two response types:\n### 1. Response Type == \u0026#34;code\u0026#34;:\nReturns an authorization code that will be used by the IAM client to exchange for an access token. It supports two different headers, the basic and the bearer header. Each behaves differently.\n- **The basic header**\n\tThe basic header’s value is the base64 of the client ID and client secret. It is used by the developer whenever the developer authorizes a user on a same namespace.\n- **The bearer header**\n\tThe bearer header’s value is an access token. It is used by the developer whenever the developer authorizes a user on a different namespace. Validates user’s entitlement on the designated namespace for making sure the user is authorized for a designated namespace.\n\nFollowing are the responses:\n- **Authorize success**: redirects to the given URL with the following information: ?code={authorization code}\u0026amp;state={state}\n- **Authorize failure**: redirects to the given URL with the following information:?error=access_denied\u0026amp;error_description=...\n\n### 2. Response Type == \u0026#34;token\u0026#34; (Implicit) is deprecated. \n### Endpoint migration guide\n\n- **Substitute endpoint (for: basic header style)**: _/iam/v3/oauth/authorize [GET]_\n- **Substitute endpoint (for: bearer header style)**: \n\tstep1: /iam/v3/namespace/{namespace}/token/request [POST] =\u0026gt; get code\n\tstep2: /iam/v3/token/exchange [POST] =\u0026gt; get token by step1\u0026#39;s code\n- **Note:**\n\t1. V3 is standard OAuth2 flow and support PKCE\n\t2. Will not support implicit flow in v3.\n\n", "operationId": "Authorization", "parameters": [ { "description": "Client id", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "Redirect URI. The URI has to match one of the URIs set in client.", "in": "formData", "name": "redirect_uri", "required": true, "type": "string" }, { "default": "code", "description": "Response Type. Allowed values ['code', 'token'].", "enum": [ "code", "token" ], "in": "formData", "name": "response_type", "required": true, "type": "string" }, { "description": "Username", "in": "formData", "name": "login", "type": "string" }, { "description": "Password", "in": "formData", "name": "password", "type": "string" }, { "description": "Scope. The scope of request by roleId. Accept multiple roleIds separated by whitespace.", "in": "formData", "name": "scope", "type": "string" }, { "description": "State. Random value for preventing cross-site request forgery used by client.", "in": "formData", "name": "state", "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "OAuth2 authorize API", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-location-query": "PLACEHOLDER", "x-operationid": "iam/public/oauth2/v1/authorize" } }, "/iam/oauth/jwks": { "get": { "consumes": [ "*/*" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nServes public keys for verifying JWT access tokens generated by this service.\n\nWhen a client application wants to verify a JWT token, it needs to get the \u0026#39;kid\u0026#39; value found in the JWT token header and use it\n\tto look up the corresponding public key from a set returned by this API. The client application can then use that public key to verify the JWT.\n\nA client application might cache the keys so it doesn\u0026#39;t need to do request every time it needs to verify a JWT token. If a client application\n\tcaches the keys and a key with the same \u0026#39;kid\u0026#39; cannot be found in the cache, it should then try to refresh the keys by making a request to this\n\tendpoint again.\n\nPlease refer to the RFC for more information about JWK (JSON Web Key): https://tools.ietf.org/html/rfc7517\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/oauth/jwks [GET]_**", "operationId": "GetJWKS", "produces": [ "application/json" ], "responses": { "200": { "description": "JWKS returned", "schema": { "$ref": "#/definitions/oauthcommon.JWKSet" } } }, "security": [ { "authorization": [] } ], "summary": "JSON Web Key Set for verifying JWT", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/get-jwks" } }, "/iam/oauth/namespaces/{namespace}/platforms/{platformId}/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRequires all requests to have Authorization header set with Basic access authentication\nconstructed from client id and client secret. For publisher-game namespace schema : Specify only either platform_token or device_id. Device token grant\nshould be requested along with device_id parameter against game namespace. Another 3rd party platform token grant should be requested\nalong with platform_token parameter against publisher namespace.\n\nSupported platforms:\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The expected value of the platform token is the URL generated by Steam on web authentication\nThe JWT contains user\u0026#39;s active bans with its expiry date. List of ban types can be obtained from /iam/bans..\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/oauth/platforms/{platformId}/token [POST]_**", "operationId": "NamespaceScopedPlatformTokenGrant", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID to login with", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Device/hardware identifier", "in": "formData", "name": "device_id", "type": "string" }, { "description": "Mac address of device", "in": "formData", "name": "macAddress", "type": "string" }, { "description": "Token from platform auth", "in": "formData", "name": "platform_token", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Access Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponse" } }, "400": { "description": "General request error", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "OAuth2 access token generation specific to platform", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/grant-by-platform" } }, "/iam/oauth/namespaces/{namespace}/users/{userId}/revoke": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRequires all requests to have authorization header set with bearer token.\n\nRevokes all access tokens and refresh tokens a user has prior the revocation time. It is a convenient feature for the developer (or admin) who wanted to revokes all user\u0026#39;s access tokens and refresh tokens generated before some period of time.\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/oauth/admin/namespaces/{namespace}/users/{userId}/revoke [POST]_**", "operationId": "RevokeUser", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User to be revoked", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "User revoked" }, "401": { "description": "Invalid basic auth header" } }, "security": [ { "authorization": [] } ], "summary": "Revoke User's Tokens", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/admin/oauth2/v1/revoke-user", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/oauth/revocationlist": { "get": { "consumes": [ "*/*" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nReturns a list of revoked users and revoked tokens. List of revoked tokens in bloom filter format. Requires all requests to have Authorization header set with Basic access authentication constructed from client id and client secret.\nThe bloom filter uses MurmurHash3 algorithm for hashing the values\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/oauth/revocationlist [GET]_**", "operationId": "GetRevocationList", "produces": [ "application/json" ], "responses": { "200": { "description": "revocation list returned", "schema": { "$ref": "#/definitions/oauthapi.RevocationList" } }, "401": { "description": "Invalid basic auth header" } }, "summary": "OAuth2 revocation list API", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/list-revocations" } }, "/iam/oauth/revoke/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRevokes a token.\nRequires all requests to have Authorization header set with Basic access authentication constructed from client id and client secret or Bearer access authentication with valid access token.\n\n### Endpoint migration guide\n- **Substitute endpoint: _/v3/oauth/revoke [POST]_**", "operationId": "RevokeToken", "parameters": [ { "description": "Token to be revoked", "in": "formData", "name": "token", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token revoked or does not exist" }, "400": { "description": "Invalid input" }, "401": { "description": "Invalid basic auth header" } }, "security": [ { "authorization": [] } ], "summary": "OAuth2 token revocation API", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/revoke-token" } }, "/iam/oauth/revoke/user": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRevokes a user.\nRequires all requests to have Authorization header set with Bearer access authentication with valid access token.\nWhen other clients know that the userID has been revoked and the token is issued before the revocation, forcing a new token will contain banned permissions. \n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/oauth/admin/namespaces/{namespace}/users/{userId}/revoke [POST]_**", "operationId": "RevokeAUser", "parameters": [ { "description": "User to be revoked", "in": "formData", "name": "userID", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "User revoked or does not exist" }, "400": { "description": "Invalid input" }, "401": { "description": "Invalid basic auth header" } }, "security": [ { "authorization": [] } ], "summary": "OAuth2 user revocation API", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/revoke-user", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId}:ADMIN [UPDATE]" ] } ] } }, "/iam/oauth/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n\n### Endpoint migration guide\n \n- **Substitute endpoint: /iam/v3/oauth/token [POST]**\n- **Note: difference in V3 response:**\n\tformat difference(Pascal case =\u0026gt; Camel case): permissions field from Action =\u0026gt; action, Resource =\u0026gt; resource\n\nRequires all requests to have \u0026lt;code\u0026gt;Authorization\u0026lt;/code\u0026gt; header set with \u0026lt;code\u0026gt;Basic\u0026lt;/code\u0026gt; access authentication\nconstructed from client id and client secret.\n\nSupports different **grant types**:\n\n1. Grant Type == \u0026lt;code\u0026gt;client_credentials\u0026lt;/code\u0026gt;:\n\tChecks the client credentials provided through Authorization header.\n2. Grant Type == \u0026lt;code\u0026gt;password\u0026lt;/code\u0026gt;:\n\tThe grant type to use for authenticating a user, whether it\u0026#39;s by email / username and password combination\n\tor through platform.\n3. Grant Type == \u0026lt;code\u0026gt;refresh_token\u0026lt;/code\u0026gt;:\n\tUsed to get a new access token for a valid refresh token.\n4. Grant Type == \u0026lt;code\u0026gt;authorization_code\u0026lt;/code\u0026gt;:\n\tIt generates the user token by given the authorization\n\tcode which generated in \u0026#34;/authorize\u0026#34; API response. It should also pass\n\tin the redirect_uri, which should be the same as generating the\n\tauthorization code request.\n\t\nFor platform authentication, use grant type \u0026lt;code\u0026gt;password\u0026lt;/code\u0026gt;.\n\tThe \u0026lt;code\u0026gt;username\u0026lt;/code\u0026gt; field would be in form of\n\t\u0026lt;code\u0026gt;platform:\u0026lt;platform type\u0026gt;\u0026lt;/code\u0026gt;, for example\n\t\u0026lt;code\u0026gt;platform:steam\u0026lt;/code\u0026gt; for Steam. For the \u0026lt;code\u0026gt;password\u0026lt;/code\u0026gt;\n\tfield, set it to the authentication/authorization ticket or token obtainable through the\n\trespective platform SDK after authenticated the user to the platform. Supported platforms:\n\n- **steam** - use \u0026lt;code\u0026gt;platform:steam\u0026lt;/code\u0026gt; as the username and use the authentication ticket obtained\n\tfrom Steam through the Steam SDK as the password.\n- **ps4** - use \u0026lt;code\u0026gt;platform:ps4\u0026lt;/code\u0026gt; as the username and use the authorization code\n\tobtained from the PlayStation Network through a player PS4 unit as the password.\n- **live** - use \u0026lt;code\u0026gt;platform:live\u0026lt;/code\u0026gt; as the username and use token obtained from \n\tXbox Secure Token Service (XSTS) as the password.\n- **oculus** - use \u0026lt;code\u0026gt;platform:oculus\u0026lt;/code\u0026gt; as the username and use the \u0026lt;code\u0026gt;user_id:nonce\u0026lt;/code\u0026gt;\n\tas password obtained from Oculus through the Oculus SDK.\n\nThe access token and refresh token are in form of JWT token.\n\tAn access token JWT contains data which structure is similar to the\n\tResponse Class below, but without OAuth-related data. To verify a token, use the public keys\nobtained from the \u0026lt;code\u0026gt;/jwks\u0026lt;/code\u0026gt; endpoint below.\n\n## Access Token Content\n\nFollowing is the access token’s content:\n\n- **namespace**. It is the namespace the token was generated from.\t\t\t\n- **display_name**. The display name of the sub. It is empty if the token is generated from the client credential\t\t\t\n- **roles**. The sub’s roles. It is empty if the token is generated from the client credential\t\t\t\n- **namespace_roles**. The sub’s roles scoped to namespace. Improvement from roles, which make the role scoped to specific namespace instead of global to publisher namespace\t\t\t\n- **permissions**. The sub or aud’ permissions\t\t\t\n- **bans**. The sub’s list of bans. It is used by the IAM client for validating the token.\t\t\t\n- **jflgs**. It stands for Justice Flags. It is a special flag used for storing additional status information regarding the sub. It is implemented as a bit mask. Following explains what each bit represents:\n\t- 1: Email Address Verified\n\t- 2: Phone Number Verified\n\t- 4: Anonymous\n- **aud**. The aud is the client ID.\t\t\t\n- **iat**. The time the token issues at. It is in Epoch time format\t\t\t\n- **exp**. The time the token expires. It is in Epoch time format\t\t\t\n- **sub**. The UserID. The sub is omitted if the token is generated from client credential\n\t\t\t\n## Bans\n\nThe JWT contains user\u0026#39;s active bans with its expiry date. List of ban types can be obtained from /bans.\n\n## Track Login History\n\nTracks login history to detect suspicious login activity, please provide \u0026#34;device_id\u0026#34; (alphanumeric) in request header parameter otherwise we will set to \u0026#34;unknown\u0026#34;.\nAlign with General Data Protection Regulation in Europe, user login history will be kept within 28 days by default\u0026#34;", "operationId": "TokenGrant", "parameters": [ { "default": "client_credentials", "description": "Grant Type", "enum": [ "authorization_code", "client_credentials", "password", "refresh_token" ], "in": "formData", "name": "grant_type", "required": true, "type": "string" }, { "description": "Authorization code (used with grant type 'authorization_code')", "in": "formData", "name": "code", "type": "string" }, { "description": "Extend expiration date of refresh token. Only available for grant type 'password'", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false }, { "description": "Delegated namespace (used with grant type 'password' to perform token grant on another namespace)", "in": "formData", "name": "namespace", "type": "string" }, { "description": "Password (used with grant type 'password')", "in": "formData", "name": "password", "type": "string" }, { "description": "Redirect URI (used with grant type 'authorization_code')", "in": "formData", "name": "redirect_uri", "type": "string" }, { "description": "Refresh Token (used with grant type 'refresh_token')", "in": "formData", "name": "refresh_token", "type": "string" }, { "description": "Username (used with grant type 'password')", "in": "formData", "name": "username", "type": "string" }, { "description": "DeviceID (Used on grant type 'password' to track login history) ex. 90252d14544846d79f367148e3f9a3d9", "in": "header", "name": "Device-Id", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponse" } }, "400": { "description": "General request error", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "OAuth2 access token generation endpoint", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/grant-token" } }, "/iam/oauth/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRequires all requests to have Authorization header set with Basic access authentication constructed from client id and client secret.\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/oauth/verify [POST]_**\n- **Note: difference in V3 response:**\n\t1. format difference(Pascal case =\u0026gt; Camel case): permissions field from Action =\u0026gt; action, Resource =\u0026gt; resource", "operationId": "VerifyToken", "parameters": [ { "description": "Token to be verified", "in": "formData", "name": "token", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Access Token verified", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponse" } }, "400": { "description": "Access Token not exist or expired" } }, "summary": "OAuth2 token verification API", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v1/verify-token" } }, "/iam/roles": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles [GET]_**", "operationId": "GetRoles", "parameters": [ { "description": "- true if the expected result should only returns records with wildcard = true\n- false if the expected result should only returns records with wildcard = false\n- empty (omitted) if the expected result should returns records with no wildcard filter at all\n", "in": "query", "name": "isWildcard", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.RoleResponseWithManagers" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Roles", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/list", "x-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRole can only be assigned to other users by the role\u0026#39;s manager.\n\nIf role is an administrator role (i.e. AdminRole == true), it will list out the role\u0026#39;s members.\n\nAdministrator role can be created only when at least 1 manager is specified.\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles [POST]_**", "operationId": "CreateRole", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleCreateRequest" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/accountcommon.Role" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create Role", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/create", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [CREATE]", "ROLE:ADMIN [CREATE]" ] } ] } }, "/iam/roles/{roleId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId} [DELETE]_**", "operationId": "DeleteRole", "parameters": [ { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete Role", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/delete", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [DELETE]", "ROLE:ADMIN [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId} [GET]_**", "operationId": "GetRole", "parameters": [ { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get Role", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/get", "x-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId} [PATCH]_**", "operationId": "UpdateRole", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleUpdateRequest" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update Role", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/update", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/admin": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/admin [DELETE]_**", "operationId": "RemoveRoleAdmin", "parameters": [ { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Remove Role Admin Status", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/remove-admin-status", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nAdmin roles has its members listed in the role.\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/admin [GET]_**", "operationId": "GetRoleAdminStatus", "parameters": [ { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleAdminStatusResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get Role Admin Status", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/get-admin-status", "x-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nAdmin roles has its members listed in the role.\n\nRole can be set as admin role only when it has at least 1 manager.\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/admin [POST]_**", "operationId": "SetRoleAsAdmin", "parameters": [ { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Set Role as Admin Role", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/set-admin-status", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/managers": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/managers [DELETE]_**", "operationId": "RemoveRoleManagers", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleManagersRequest" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Remove Role Managers", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/internal/v1/remove-managers", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRole can only be assigned to other users by the role\u0026#39;s manager.\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/managers [GET]_**", "operationId": "GetRoleManagers", "parameters": [ { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleManagersResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get Role Managers", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/list-managers", "x-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nRole can only be assigned to other users by the role\u0026#39;s manager.\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/managers [POST]_**", "operationId": "AddRoleManagers", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleManagersRequest" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Add Role Managers", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/internal/v1/add-managers", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/members": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/members [DELETE]_**", "operationId": "RemoveRoleMembers", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleMembersRequest" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Remove Role Members", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/internal/v1/remove-members", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/members [GET]_**", "operationId": "GetRoleMembers", "parameters": [ { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleMembersResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get Role Members", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/list-members", "x-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nAdmin roles has its members listed in the role.\n\nRole can only be assigned to other users by the role\u0026#39;s manager.\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/members [POST]_**", "operationId": "AddRoleMembers", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleMembersRequest" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Add Role Members", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/internal/v1/add-members", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/permissions": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nReplaces role\u0026#39;s permissions with the ones defined in body\n\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\n\nSyntax reference\nFields:\n1. Seconds: 0-59 * / , -\n2. Minutes: 0-59 * / , -\n3. Hours: 0-23 * / , -\n4. Day of month: 1-31 * / , - L W\n5. Month: 1-12 JAN-DEC * / , -\n6. Day of week: 0-6 SUN-SAT * / , - L #\n7. Year: 1970-2099 * / , -\n\nSpecial characters:\n1. \\*: all values in the fields, e.g. \\* in seconds fields indicates every second\n2. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n3. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n4. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n5. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n6. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n7. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.\n\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/permissions [POST]_**", "operationId": "UpdateRolePermissions", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.Permissions" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update Role Permissions", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/update-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/permissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/roles/{roleId}/permissions/{resource}/{action} [DELETE]_**\n- **Substitute endpoint: _/iam/v4/admin/roles/{roleId}/permissions [DELETE]_**", "operationId": "DeleteRolePermission", "parameters": [ { "description": "Action", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete Role Permission", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/remove-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\nUpdates existing permission (bitwise OR the action) if found one with same resource, otherwise appends a new permission\n\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\n\nSyntax reference\nFields:\n- Seconds: 0-59 * / , -\n- Minutes: 0-59 * / , -\n- Hours: 0-23 * / , -\n- Day of month: 1-31 * / , - L W\n- Month: 1-12 JAN-DEC * / , -\n- Day of week: 0-6 SUN-SAT * / , - L #\n- Year: 1970-2099 * / , -\n\nSpecial characters:\n- \\**: all values in the fields, e.g. \\* in seconds fields indicates every second\n- /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n- ,: separate items of a list, e.g. MON,WED,FRI in day of week\n- -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n- L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n- W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n- #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.\n\n### Endpoint migration guide\n- **Substitute endpoint(update): _/iam/v3/admin/roles/{roleId}/permissions [PUT]_**\n- **Substitute endpoint(create): _/iam/v3/admin/roles/{roleId}/permissions [POST]_**", "operationId": "AddRolePermission", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdatePermissionScheduleRequest" } }, { "description": "Action", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Add Role Permission", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v1/add-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/agerestrictions": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/agerestrictions [GET]_**\n- **Note:**\n\tdifference in V3 response, format difference: Pascal case =\u0026gt; Camel case", "operationId": "AdminGetAgeRestrictionStatusV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.AgeRestrictionResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get age restriction status", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/age-restrictions/v2/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/agerestrictions [PATCH]_**", "operationId": "AdminUpdateAgeRestrictionConfigV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AgeRestrictionRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.AgeRestrictionResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update age restriction config value", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/age-restrictions/v2/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/countries/agerestrictions": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/agerestrictions/countries [GET]_**", "operationId": "GetListCountryAgeRestriction", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/accountcommon.CountryAgeRestriction" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get List Country age restriction", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/age-restrictions/v2/list-countries", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/countries/{countryCode}": { "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/agerestrictions/countries/{countryCode} [PATCH]_**", "operationId": "UpdateCountryAgeRestriction", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CountryAgeRestrictionRequest" } }, { "description": "Country Code", "in": "path", "name": "countryCode", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.Country" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update country's age restriction", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/age-restrictions/v2/update-country", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/search [GET]_**", "operationId": "AdminSearchUsersV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "platform ID", "in": "query", "name": "platformId", "required": true, "type": "string" }, { "description": "The cursor that points to ID of first item in for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "The cursor that points to ID of last item in for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "display name", "in": "query", "name": "displayName", "type": "string" }, { "description": "The number of data retrieved in a page", "in": "query", "name": "limit", "type": "integer" }, { "description": "login ID", "in": "query", "name": "loginId", "type": "string" }, { "description": "platform user ID", "in": "query", "name": "platformUserId", "type": "string" }, { "description": "role ID", "in": "query", "name": "roleId", "type": "string" }, { "description": "user ID", "in": "query", "name": "userId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.SearchUsersByPlatformIDResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Search Users", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v2/search", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId} [GET]_**", "operationId": "AdminGetUserByUserIdV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Get User By User Id", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20008": "user not found" }, "x-operationid": "iam/admin/users/v2/get", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId} [PATCH]_**\t\t\n\t\t\nSupports updating user based on given data. **Single request can update single field or multi fields.**\nSupported field {Country, DisplayName, LanguageTag}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\n\t\n**Several case of updating email address**\n- User want to update email address of which have been verified, NewEmailAddress response field will be filled with new email address.\n- User want to update email address of which have not been verified, {LoginId, OldEmailAddress, EmailAddress} response field will be filled with new email address. \n- User want to update email address of which have been verified and updated before, {LoginId, OldEmailAddress, EmailAddress} response field will be filled with verified email before. NewEmailAddress response field will be filled with newest email address.", "operationId": "AdminUpdateUserV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10131\u003c/td\u003e\u003ctd\u003einvalid date of birth\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10155\u003c/td\u003e\u003ctd\u003ecountry is not defined\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10132\u003c/td\u003e\u003ctd\u003einvalid email address\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10131": "invalid date of birth", "10132": "invalid email address", "10133": "email already used", "10139": "platform account not found", "10154": "country not found", "10155": "country is not defined", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v2/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/ban": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans [POST]_**", "operationId": "AdminBanUserV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BanCreateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.UserBanResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Ban a single user", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v2/ban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [CREATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/bans": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans [GET]_**", "operationId": "AdminGetUserBanV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Filter ban to only returns the active one", "in": "query", "name": "activeOnly", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.UserBanResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get user's bans", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v2/list-bans", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [READ]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/disable": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/status [PATCH]_**\n\t\t\nFor **Deletion Account** purpose fill the reason with:\n- **DeactivateAccount** : if your deletion request comes from user\n- **AdminDeactivateAccount** : if your deletion request comes from admin", "operationId": "AdminDisableUserV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableUserRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Disable a user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v2/disable", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/enable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/status [PATCH]_**", "operationId": "AdminEnableUserV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Enable a user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v2/enable", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/password [PUT]_**", "operationId": "AdminResetPasswordV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserPasswordUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10142\u003c/td\u003e\u003ctd\u003enew password cannot be same with original\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10143\u003c/td\u003e\u003ctd\u003epassword not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Update User Password", "tags": [ "Users" ], "x-errorCodes": { "10142": "new password cannot be same with original", "10143": "password not match", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v2/update-password", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PASSWORD:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link": { "delete": { "consumes": [ "application/x-www-form-urlencoded", "text/plain" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId} [DELETE]_**\t\t\t\n\n## Supported platforms:\n- **steam**\n- **steamopenid**\n- **facebook**\n- **google**\n- **oculus**\n- **twitch**\n- **android**\n- **ios**\n- **device**\n- **discord**\n\nDelete link of user\u0026#39;s account with platform. \u0026#39;justice\u0026#39; platform might have multiple accounts from different namespaces linked. platform_namespace need to be specified when the platform ID is \u0026#39;justice\u0026#39;.\nDelete link of justice platform will enable password token grant and password update.", "operationId": "AdminDeletePlatformLinkV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Namespace of the platform account to be deleted", "in": "formData", "name": "platform_namespace", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Delete the link of user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v2/unlink-platform", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/roles": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles [PATCH]_**", "operationId": "AdminCreateUserRolesV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "type": "string" }, "type": "array" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" }, "409": { "description": "Conflict" } }, "security": [ { "authorization": [] } ], "summary": "Save User Roles", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v2/create-roles", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles [PATCH]_**", "operationId": "AdminPutUserRolesV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "type": "string" }, "type": "array" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update User Roles, will replace all the existing roles", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v2/set-roles", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/public/namespaces/{namespace}/countries/{countryCode}/agerestrictions": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/agerestrictions/countries/{countryCode} [GET]_**", "operationId": "PublicGetCountryAgeRestriction", "parameters": [ { "description": "Country Code", "in": "path", "name": "countryCode", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.Country" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Public get age restriction by country code", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access" }, "x-operationid": "iam/public/age-restrictions/v2/get" } }, "/iam/v2/public/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users [POST]_**\n- **Substitute endpoint: _/iam/v4/public/namespaces/{namespace}/users [POST]_**\n- **Note:**\n\t1. v3 \u0026amp; v4 introduce optional verification code\n\t2. format difference(Pascal case =\u0026gt; Camel case)\n\nAvailable Authentication Types:\n1. *EMAILPASSWD*: an authentication type used for new user registration through email.\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.", "operationId": "PublicCreateUserV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserCreateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.UserCreateResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "Conflict" } }, "security": [ { "authorization": [] } ], "summary": "Create User", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v2/create" } }, "/iam/v2/public/namespaces/{namespace}/users/forgotPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/forgot [POST]_**\n\t\t\n**Special note for publisher-game scenario:** Game Client should provide game namespace path parameter and Publisher Client should provide publisher namespace path parameter.\nThe password reset code will be sent to the publisher account\u0026#39;s email address.", "operationId": "PublicForgotPasswordV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Request Password Reset Code", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20007": "too many requests", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v2/request-password-reset" } }, "/iam/v2/public/namespaces/{namespace}/users/resetPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/reset [POST]_**", "operationId": "PublicResetPasswordV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ResetPasswordRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10142\u003c/td\u003e\u003ctd\u003enew password cannot be same with original\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Reset User Password", "tags": [ "Users" ], "x-errorCodes": { "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10142": "new password cannot be same with original", "10152": "verification code not found", "20000": "internal server error", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v2/reset-password" } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint(Public): _/iam/v3/public/namespaces/{namespace}/users/{userId} [GET]_**\n- **Substitute endpoint(Admin): _/iam/v3/admin/namespaces/{namespace}/users/{userId} [GET]_**\n- **Note:**\n\tformat difference in response: Pascal case =\u0026gt; Camel case", "operationId": "PublicGetUserByUserIDV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Get User By User ID", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20008": "user not found" }, "x-operationid": "iam/public/users/v2/get" }, "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint([PUT]): _/iam/v3/public/namespaces/{namespace}/users/me [PUT]_**\n- **Substitute endpoint([PATCH]): _/iam/v3/public/namespaces/{namespace}/users/me [PATCH]_**\n- **Substitute endpoint([PATCH]): _/iam/v4/public/namespaces/{namespace}/users/me [PATCH]_**\n- **Note:**\n\t1. Prefer [PATCH] if client support PATCH method\n\t2. Difference in V3/v4 request body, format difference: Pascal case =\u0026gt; Camel case\n\t\t\nSupports updating user based on given data. **Single request can update single field or multi fields.**\nSupported field {Country, DisplayName, LanguageTag}", "operationId": "PublicUpdateUserV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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": { "items": { "$ref": "#/definitions/model.UserResponse" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10131\u003c/td\u003e\u003ctd\u003einvalid date of birth\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10155\u003c/td\u003e\u003ctd\u003ecountry is not defined\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10132\u003c/td\u003e\u003ctd\u003einvalid email address\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10131": "invalid date of birth", "10132": "invalid email address", "10133": "email already used", "10139": "platform account not found", "10154": "country not found", "10155": "country is not defined", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v2/update", "x-security": {} } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/bans": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/bans [GET]_**", "operationId": "PublicGetUserBan", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Filter ban to only returns the active one", "in": "query", "name": "activeOnly", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.UserBanResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get user's bans", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v2/list-bans" } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/password [PUT]_**", "operationId": "PublicUpdatePasswordV2", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserPasswordUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10142\u003c/td\u003e\u003ctd\u003enew password cannot be same with original\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10143\u003c/td\u003e\u003ctd\u003epassword not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Update User Password", "tags": [ "Users" ], "x-errorCodes": { "10142": "new password cannot be same with original", "10143": "password not match", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v2/update-password", "x-security": {} } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/platforms/justice": { "get": { "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms/justice [GET]_**\n\nRetrieves the list of Justice platform accounts linked to the given user.\n\n**Namespace restriction:** The {namespace} path parameter must be a **publisher namespace**. Passing a game namespace returns HTTP 400.", "operationId": "GetListJusticePlatformAccounts", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Publisher User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.GetUserMapping" }, "type": "array" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get User Justice Platform Accounts", "tags": [ "Users" ], "x-errorCodes": {}, "x-operationid": "iam/public/users/v2/list-accelbyte-accounts" } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link": { "delete": { "consumes": [ "application/x-www-form-urlencoded", "text/plain" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId} [DELETE]_**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/all [DELETE]_**\n\n## Supported platforms:\n- **steam**\n- **steamopenid**\n- **facebook**\n- **google**\n- **oculus**\n- **twitch**\n- **android**\n- **ios**\n- **device**\n- **discord**\n\nDelete link of user\u0026#39;s account with platform. \u0026#39;justice\u0026#39; platform might have multiple accounts from different namespaces linked. platform_namespace need to be specified when the platform ID is \u0026#39;justice\u0026#39;.\nDelete link of justice platform will enable password token grant and password update.", "operationId": "PublicDeletePlatformLinkV2", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Namespace of the platform account to be deleted", "in": "formData", "name": "platform_namespace", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Delete the link of user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v2/unlink-platform" }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "**This endpoint is deprecated.**\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId} [POST]_**\n\t\t\n**Prerequisite:** \nPlatform client configuration need to be added to database for specific platformId. Namespace service URL need to be specified (refer to required environment variables).\n\n## Supported platforms:\n- **steam**: The ticket’s value is the authentication code returned by Steam.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The ticket\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The ticket’s value is the authorization code returned by Facebook OAuth\n- **google**: The ticket’s value is the authorization code returned by Google OAuth\n- **oculus**: The ticket’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The ticket’s value is the authorization code returned by Twitch OAuth.\n- **android**: The ticket\u0026#39;s value is the Android’s device ID\n- **ios**: The ticket\u0026#39;s value is the iOS’s device ID.\n- **device**: Every device that doesn\u0026#39;t run Android and iOS is categorized as a device platform. The ticket\u0026#39;s value is the device’s ID.\n- **discord**: The ticket’s value is the authorization code returned by Discord OAuth.", "operationId": "PublicPlatformLinkV2", "parameters": [ { "description": "Ticket from platform", "in": "formData", "name": "ticket", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10163\u003c/td\u003e\u003ctd\u003eplatform is already linked with the user account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" } }, "security": [ { "authorization": [] } ], "summary": "Link user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "10163": "platform is already linked with the user account", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v2/link-platform-account" } }, "/iam/v3/admin/bans": { "get": { "description": "Ban type is the code\navailable for ban assignment. It is applicable globally for any namespace.", "operationId": "AdminGetBansTypeV3", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.BansV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get list of ban types", "tags": [ "Bans" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/bans/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:BAN [READ]" ] } ] } }, "/iam/v3/admin/bans/reasons": { "get": { "description": "Ban reasons is the code available to justify ban assignment. It is applicable globally for any namespace.", "operationId": "AdminGetListBanReasonV3", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.BanReasonsV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get list of ban reasons", "tags": [ "Bans" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/bans/v3/list-reasons", "x-security": [ { "userPermissions": [ "ADMIN:BAN [READ]" ] } ] } }, "/iam/v3/admin/clientConfig/permissions": { "delete": { "consumes": [ "application/json" ], "description": "Delete Client config permissions by module and group.", "operationId": "AdminDeleteConfigPermissionsByGroup", "parameters": [ { "description": "Permission group or module delete request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.PermissionSetDeleteGroupRequest" } }, { "description": "If the targeted group or module is currently selected by any client, the deletion will fail by default. Set to 'true' to first unselect that group from affected clients and then proceed.", "in": "query", "name": "forceDelete", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Client config permissions by module and group", "tags": [ "Clients Config V3" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/client-config/v3/delete-permission", "x-security": [ { "userPermissions": [ "ADMIN:CLIENTCONFIG [DELETE]" ] } ] }, "get": { "description": "Lists all available client permissions.", "operationId": "AdminListClientAvailablePermissions", "parameters": [ { "default": false, "description": "If exclude permissions", "in": "query", "name": "excludePermissions", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/clientmodel.ListClientPermissionSet" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "List Client available permissions", "tags": [ "Clients Config V3" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/client-config/v3/list-permissions", "x-security": {} }, "put": { "consumes": [ "application/json" ], "description": "Upserts client available permissions at the module level.\nOnly the modules listed in the request are processed - any other existing module is left untouched, so *callers do not need to include unchanged modules*. \n\n## Groups update behavior\n\nFor each module in the request, the \u0026#39;groups\u0026#39; array is the *full desired state* of that module\u0026#39;s groups - any existing group whose \u0026#39;groupId\u0026#39; is omitted is treated as ***removed***.\nIf a removed group is currently used by any client, the request will fails with 400 and nothing is saved, unless \u0026#39;forceDelete=true\u0026#39; query param is passed.\n", "operationId": "AdminUpdateAvailablePermissionsByModule", "parameters": [ { "description": "Permission modules upsert request body. Omitted groups will be removed.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ListUpsertModulesRequest" } }, { "default": false, "description": "If the update would remove a group that is currently selected by any client, the request will fail by default. Set to 'true' to first unselect that group from affected clients and then proceed.", "in": "query", "name": "forceDelete", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update or create Client permissions module", "tags": [ "Clients Config V3" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/client-config/v3/upsert-permissions", "x-security": [ { "userPermissions": [ "ADMIN:CLIENTCONFIG [UPDATE]" ] } ] } }, "/iam/v3/admin/clientConfig/permissions/package": { "patch": { "consumes": [ "application/json" ], "description": "Sets the package info for a permission module. Ignores the module if it is not found.", "operationId": "AdminUpdateModulePackage", "parameters": [ { "description": "Permission module package upsert request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.UpsertPermissionModulePackageRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Set permission module package info", "tags": [ "Clients Config V3" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients-config/v3/update-module-package", "x-security": [ { "userPermissions": [ "ADMIN:CLIENTCONFIG [UPDATE]" ] } ] } }, "/iam/v3/admin/clientConfig/templates": { "get": { "description": "Lists all available client templates.", "operationId": "AdminListClientTemplates", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/clientmodel.ListTemplatesResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "List Client templates", "tags": [ "Clients Config V3" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/client-config/v3/list-templates", "x-security": {} } }, "/iam/v3/admin/inputValidations": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "Returns the list of input validation configuration.\n\u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be returned if \u0026lt;code\u0026gt;isCustomRegex\u0026lt;/code\u0026gt; is true. Otherwise, it will be empty.\n**Substitute endpoint:** /iam/v3/admin/namespaces/{namespace}/inputValidations[GET]", "operationId": "AdminGetInputValidations", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.InputValidationsResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/input-validations/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:CONFIGURATION [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "Updates input validation configuration.\nSupported \u0026lt;code\u0026gt;field\u0026lt;/code\u0026gt;:\n- displayName\n- password\n- username\n- email\n- avatar\n\nIf \u0026lt;code\u0026gt;isCustomRegex\u0026lt;/code\u0026gt; is set to true, \u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be used as input validation and the other parameters will be ignored. Otherwise, \u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be ignored and regex for input validation will be generated based on the combination of the other parameters.\nIf \u0026lt;code\u0026gt;allowUnicode\u0026lt;/code\u0026gt; is set to true, unicode regex pattern will be use as the input validation and the other parameters will be ignored.\nSupported \u0026lt;code\u0026gt;letterCase\u0026lt;/code\u0026gt;:\n- lowercase\n- uppercase\n- mixed: uppercase and lowercase\n- any: uppercase and/or lowercase\n\nFlexible special character support with \u0026lt;code\u0026gt;allowAllSpecialCharacters\u0026lt;/code\u0026gt;.\nIf \u0026lt;code\u0026gt;allowAllSpecialCharacters\u0026lt;/code\u0026gt; is set to true, \u0026lt;code\u0026gt;specialCharacters\u0026lt;/code\u0026gt; will be forced to empty.\nSupported \u0026lt;code\u0026gt;specialCharacterLocation\u0026lt;/code\u0026gt;:\n- anywhere\n- middle\n\nIf \u0026lt;code\u0026gt;specialCharacters\u0026lt;/code\u0026gt; is empty, \u0026lt;code\u0026gt;specialCharacterLocation\u0026lt;/code\u0026gt; and \u0026lt;code\u0026gt;maxRepeatingSpecialCharacter\u0026lt;/code\u0026gt; will be ignored.\n\u0026lt;code\u0026gt;minCharType\u0026lt;/code\u0026gt; is used to identify how many required criteria in the regex. The supported criteria are number, letter, special character, and letter case. If set to 0 or 1, all criteria are optional. It can be set as much as the number of criteria enabled.\nIf \u0026lt;code\u0026gt;blockedWord\u0026lt;/code\u0026gt; is set by an admin, any user input containing a blocked word will be rejected during account creation, upgrade, or update.\nIf \u0026lt;code\u0026gt;avatarConfig\u0026lt;/code\u0026gt; is set, will use this config and skip all the other validation conditions.\n**Substitute endpoint:** /iam/v3/admin/namespaces/{namespace}/inputValidations[PUT]", "operationId": "AdminUpdateInputValidations", "parameters": [ { "description": "Array of input validation rule updates.", "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/model.InputValidationUpdatePayload" }, "type": "array" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10188\u003c/td\u003e\u003ctd\u003einput validation field not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Update Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "10188": "input validation field not found", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/input-validations/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:CONFIGURATION [UPDATE]" ] } ] } }, "/iam/v3/admin/inputValidations/{field}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "Resets input validation to the default input validation configurations.\n**Substitute endpoint:** /iam/v3/admin/namespaces/{namespace}/inputValidations/{field}[DELETE]", "operationId": "AdminResetInputValidations", "parameters": [ { "description": "Name of the input validation field to reset: email, username, displayName, password, avatar", "in": "path", "name": "field", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10188\u003c/td\u003e\u003ctd\u003einput validation field not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Reset Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "10188": "input validation field not found", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/input-validations/v3/reset", "x-security": [ { "userPermissions": [ "ADMIN:CONFIGURATION [DELETE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/admins": { "get": { "description": "List all users that has admin role (role that has admin_role attribute set to true).\nBehavior :\n- if query parameter is defined, searches users whose email address and display name match with the query\n- if roleId parameter is defined, searches users that have the defined roleId\n- if startDate and endDate parameters is defined, searches users which created on the certain date range\n- if startDate parameter is defined, searches users that created start from the defined date\n- if endDate parameter is defined, searches users that created until the defined date\n\nIn multi tenant mode :\n- if super admin search in super admin namespace, the result will be all admin users\n- if super admin search in game studio namespace, the result will be all admin users under the game studio namespace\n- if studio admin search in their studio namespace, the result will be all admin user in the game studio namespace\n\nReturns all admin from all namespace when called from publisher namespace.\nWhen not called from publisher namespace, returns all admin from the path namespace.", "operationId": "ListAdminsV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page. Composite values consist of created_at and id, the value is base64 encoded", "in": "query", "name": "after", "type": "string" }, { "description": "The cursor that points to query data for the previous page. Composite values consist of created_at and id, the value is base64 encoded", "in": "query", "name": "before", "type": "string" }, { "description": "End Date, format YYYY-MM-DD", "in": "query", "name": "endDate", "type": "string" }, { "description": "The maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" }, { "description": "Query, can be either display name or email address", "in": "query", "name": "query", "type": "string" }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "query", "name": "roleId", "type": "string" }, { "description": "Start Date, format YYYY-MM-DD", "in": "query", "name": "startDate", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.GetUsersResponseWithPaginationV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "List User Admins", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-admins", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/agerestrictions": { "get": { "description": "Retrieves the age restriction status for the namespace.", "operationId": "AdminGetAgeRestrictionStatusV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.AgeRestrictionResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10169\u003c/td\u003e\u003ctd\u003eage restriction not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get age restriction status", "tags": [ "Users" ], "x-errorCodes": { "10169": "age restriction not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/age-restrictions/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates the age restriction configuration for the namespace.", "operationId": "AdminUpdateAgeRestrictionConfigV3", "parameters": [ { "description": "Namespace age restriction update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AgeRestrictionRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.AgeRestrictionResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update age restriction config value", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/age-restrictions/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/agerestrictions/countries": { "get": { "description": "Retrieves the list of age restriction settings for all countries.", "operationId": "AdminGetListCountryAgeRestrictionV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.CountryV3Response" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get List Country age restriction", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/age-restrictions/v3/list-countries", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/agerestrictions/countries/{countryCode}": { "patch": { "consumes": [ "application/json" ], "description": "Updates the age restriction setting for the specified country.", "operationId": "AdminUpdateCountryAgeRestrictionV3", "parameters": [ { "description": "Country age restriction update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CountryAgeRestrictionV3Request" } }, { "description": "Country Code ", "in": "path", "name": "countryCode", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.CountryV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update country's age restriction", "tags": [ "Users" ], "x-errorCodes": { "10154": "country not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/age-restrictions/v3/update-country", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/bans/users": { "get": { "description": "Retrieves a paginated list of users who have active or history bans, filtered by ban type.", "operationId": "AdminGetBannedUsersV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Filter ban based on the ban status. If you set this, only active ban returned", "in": "query", "name": "activeOnly", "type": "boolean", "x-omitempty": false }, { "description": "Filter ban based on the ban type. You can see list of ban from GET /iam/v3/admin/bans", "in": "query", "name": "banType", "type": "string" }, { "description": "Pagination configuration for how much data need to be retrieved in on request, should be in positive number. Default is 20", "in": "query", "name": "limit", "type": "integer" }, { "description": "Pagination configuration of from what point the record will be selected, should be in positive number. Default is 0", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetUserBanV3Response" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get list of user filtered by ban types", "tags": [ "Bans" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/bans/v3/list-banned-users", "x-security": [ { "userPermissions": [ "ADMIN:BAN [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Bulk ban user with specific type of ban. Ban types and reason can be queried. The maximum limit value is 100 userIDs", "operationId": "AdminBanUserBulkV3", "parameters": [ { "description": "Bulk ban creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BulkBanCreateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.ListBulkUserBanResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk ban user", "tags": [ "Bans" ], "x-errorCodes": { "10139": "platform account not found", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/bans/v3/bulk-ban-users", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/bans/users/disabled": { "patch": { "consumes": [ "application/json" ], "description": "disable bulk ban user. The maximum limit value is 100", "operationId": "AdminUnbanUserBulkV3", "parameters": [ { "description": "Bulk ban revocation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BulkUnbanCreateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.ListBulkUserBanResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk unban user", "tags": [ "Bans" ], "x-errorCodes": { "10139": "platform account not found", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/bans/v3/bulk-unban-users", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/bantypes": { "get": { "description": "Ban type is the code\navailable for ban assignment. It is applicable globally for any namespace.", "operationId": "AdminGetBansTypeWithNamespaceV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.BansV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get list of ban types", "tags": [ "Bans" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/bans/v3/list-types", "x-security": [ { "userPermissions": [ "ADMIN:BAN [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/clients": { "get": { "description": "Retrieves all OAuth clients in the namespace.", "operationId": "AdminGetClientsByNamespaceV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Client id, should follow UUID version 4 without hyphen", "in": "query", "name": "clientId", "type": "string" }, { "description": "Client name, support fuzzy query", "in": "query", "name": "clientName", "type": "string" }, { "description": "Client type", "in": "query", "name": "clientType", "type": "string" }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" }, { "description": "the count to skip", "in": "query", "name": "offset", "type": "integer" }, { "description": "A flag to filter clients that are exempted from login queue. if skipLoginQueue parameter is not defined, search result will include both exempted and not exempted clients", "in": "query", "name": "skipLoginQueue", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/clientmodel.ClientsV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Clients by Namespace", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a new OAuth 2.0 client.\nA new client automatically granted with these scopes: commerce, account, analytics, publishing, social.\n**Note for Multi Tenant Mode (Confidential Client):**\nSuper admin can set any valid format permission with resource \u0026amp; action.\nStudio admin \u0026amp; game admin can only set permission with these 2 ways:\n* Permission module, available from _GET /iam/v3/admin/clientConfig/permissions_\n* Fixed prefix custom permissions, the allowed prefix are: \n\t1. ***CUSTOM:ADMIN:NAMESPACE:{namespace}*** \n\t2. ***CUSTOM:NAMESPACE:{namespace}***\n", "operationId": "AdminCreateClientV3", "parameters": [ { "description": "OAuth client creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientCreationV3Request" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/clientmodel.ClientV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10364\u003c/td\u003e\u003ctd\u003eclient exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create Client", "tags": [ "Clients" ], "x-errorCodes": { "10364": "client exists", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/clients/v3/create", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [CREATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates multiple OAuth 2.0 clients.\nSpecify only the fields you want to update in the request payload, e.g. {\u0026#34;clientName\u0026#34;:\u0026#34;E-commerce\u0026#34;, \u0026#34;baseUri\u0026#34;:\u0026#34;https://example.net\u0026#34;}\n\n**Note for Multi Tenant Mode (Confidential Client):**\nOnly Super Admins can set permission with resource and action.\nStudio admin \u0026amp; game admin can only set permission through the permission module.\nIf Studio admin \u0026amp; game admin need to set custom permission string, they must use the non-bulk API.\n\t\n**Fields Description:**\n- **clientName** : The client name. It should not be empty if the field exists in the body. e.g E-commerce\n- **namespace** : The namespace where the client lives. e.g sample-game\n- **redirectUri** : Contains the redirect URI used in OAuth callback. It should not be empty if the field exists in the body. e.g https://example.net/platform\n- **audiences** : List of target client IDs who is intended to receive the token. e.g [\u0026#34;eaaa65618fe24293b00a61454182b435\u0026#34;, \u0026#34;40073ee9bc3446d3a051a71b48509a5d\u0026#34;]\n- **baseUri** : A base URI of the application. It is used in the audience checking for making sure the token is used by the right resource server. Required if the application type is a server. e.g https://example.net/platform\n- **clientPermissions** : Contains the client\u0026#39;s permissions\n- **deletable** : The flag to identify whether client is deletable (optional). e.g. true\n- **clientPlatform** : available client platform (optional). default value: \u0026#34;\u0026#34;.\n\t- Playstation\n\t- Xbox\n\t- Steam\n\t- Epic\n\t- IOS\n\t- GooglePlay\n\t- Nintendo\n\t- Oculus\t\t\t\n- **twoFactorEnabled**: The flag to indicate whether 2FA validation is enable for this client. default value: false\n- **oauthAccessTokenExpiration**: a configurable expiration time for **access_token**, default value: 0 (mean fetch value from environment variable)\n- **oauthRefreshTokenExpiration**: a configurable expiration time for **refresh_token**, default value: 0 (mean fetch value from environment variable)\n- **oauthAccessTokenExpirationTimeUnit**: a configurable expiration time unit for **access_token**, will use previous value if not specified\n- **oauthRefreshTokenExpirationTimeUnit**: a configurable expiration time unit for **refresh_token**, will use previous value if not specified\n- **skipLoginQueue**: a flag to indicate whether this client should be exempted from login queue or not\n\n", "operationId": "AdminBulkUpdateClientsV3", "parameters": [ { "description": "Bulk OAuth client update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientsUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk Update Clients", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/clients/v3/bulk-update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/clients/{clientId}": { "delete": { "description": "Deletes the specified OAuth client.", "operationId": "AdminDeleteClientV3", "parameters": [ { "description": "Client ID, should follow UUID version 4 without hyphen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20009\u003c/td\u003e\u003ctd\u003erequest_conflict\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Client", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20009": "request_conflict", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v3/delete", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [DELETE]" ] } ] }, "get": { "description": "Retrieves an OAuth client by namespace and client ID. In multi-tenant mode, the admin portal client is accessible regardless of the namespace path.", "operationId": "AdminGetClientsbyNamespacebyIDV3", "parameters": [ { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/clientmodel.ClientV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Client by Namespace and Client ID", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v3/get", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates an OAuth 2.0 client. Specify only the fields you want to update in the request payload.\n\n**Note for Multi Tenant Mode (Confidential Client):**\nSuper admin can set any valid format permission with resource \u0026amp; action.\nStudio admin \u0026amp; game admin can only set permission with these 2 ways:\n* Permission module, available from _GET /iam/v3/admin/clientConfig/permissions_\n* Fixed prefix custom permissions, the allowed prefix are: \n\t1. ***CUSTOM:ADMIN:NAMESPACE:{namespace}*** \n\t2. ***CUSTOM:NAMESPACE:{namespace}***\n", "operationId": "AdminUpdateClientV3", "parameters": [ { "description": "OAuth client update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientUpdateV3Request" } }, { "description": "Client ID, should follow UUID version 4 without hyphen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/clientmodel.ClientV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Client", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/clients/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/clients/{clientId}/permissions": { "post": { "consumes": [ "application/json" ], "description": "**Note for Multi Tenant Mode:**\nStudio admin \u0026amp; game admin can only update custom permissions:\n* The allowed prefix are: 1. ***CUSTOM:ADMIN:NAMESPACE:{namespace}*** 2. ***CUSTOM:NAMESPACE:{namespace}***\n\n", "operationId": "AdminAddClientPermissionsV3", "parameters": [ { "description": "Array of permissions to add to the client.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.ClientPermissionsV3" } }, { "description": "Client ID, should follow UUID version 4 without hyphen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add Client Permissions", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/clients/v3/add-permissions", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "**Note for Multi Tenant Mode:**\nStudio admin \u0026amp; game admin can only add custom permissions:\n* The allowed prefix are: 1. ***CUSTOM:ADMIN:NAMESPACE:{namespace}*** 2. ***CUSTOM:NAMESPACE:{namespace}***\n* If the request body has new added/delete non-custom permission, the request will fail.\n\n", "operationId": "AdminUpdateClientPermissionV3", "parameters": [ { "description": "Array of permissions to replace the client's existing permissions.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.ClientPermissionsV3" } }, { "description": "Client ID, should follow UUID version 4 without hyphen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Client Permissions", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/clients/v3/update-permissions", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/clients/{clientId}/permissions/{resource}/{action}": { "delete": { "description": "**Note for Multi Tenant Mode:**\nStudio admin \u0026amp; game admin are only allowed to delete custom permissions:\n* The allowed prefix are: 1. ***CUSTOM:ADMIN:NAMESPACE:{namespace}*** 2. ***CUSTOM:NAMESPACE:{namespace}***\n\n", "operationId": "AdminDeleteClientPermissionV3", "parameters": [ { "description": "Action, value must be in range 1-15", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Client ID, should follow UUID version 4 without hyphen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Client Permission", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v3/delete-permission", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/config/{configKey}": { "get": { "description": "Returns the value of the specified config key. The namespace should be publisher namespace or studio namespace.\n\n**Supported config key:**\n * uniqueDisplayNameEnabled\n * usernameDisabled\n * mandatoryEmailVerificationEnabled\n", "operationId": "AdminGetConfigValueV3", "parameters": [ { "description": "config key", "in": "path", "name": "configKey", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ConfigValueResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Config Value", "tags": [ "Config" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error" }, "x-operationid": "iam/admin/config/v3/get" } }, "/iam/v3/admin/namespaces/{namespace}/countries": { "get": { "description": "Retrieves the list of countries for the namespace.", "operationId": "AdminGetCountryListV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "description": "Filter by blacklist. When true (default), excludes blacklisted countries from the result.", "in": "query", "name": "filterBlacklist", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "No Content", "schema": { "items": { "$ref": "#/definitions/model.CountryResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Country List", "tags": [ "Country" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/countries/v3/list" } }, "/iam/v3/admin/namespaces/{namespace}/countries/blacklist": { "get": { "description": "Retrieves the country blacklist for the namespace.", "operationId": "AdminGetCountryBlacklistV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.CountryBlacklistResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Country Blacklist", "tags": [ "Country" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/countries/v3/get-deny-list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MISC [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Updates the country blacklist for the namespace.", "operationId": "AdminAddCountryBlacklistV3", "parameters": [ { "description": "Country blacklist update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CountryBlacklistRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Country Blacklist", "tags": [ "Country" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/countries/v3/update-deny-list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MISC [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/inputValidations": { "get": { "description": "Returns the list of input validation configuration.\nSupported namespace:\n- publisher namespace\n- studio namespace\n\n\u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be returned if \u0026lt;code\u0026gt;isCustomRegex\u0026lt;/code\u0026gt; is true. Otherwise, it will be empty.", "operationId": "AdminGetNamespaceScopedInputValidations", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.InputValidationsResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/input-validations/v3/list-by-namespace", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:INPUTVALIDATION [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates input validation configuration.\nSupported namespace:\n- publisher namespace\n- studio namespace\n\nSupported \u0026lt;code\u0026gt;field\u0026lt;/code\u0026gt;:\n- displayName\n- password\n- username\n- email\n- avatar\n\nIf \u0026lt;code\u0026gt;isCustomRegex\u0026lt;/code\u0026gt; is set to true, \u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be used as input validation and the other parameters will be ignored. Otherwise, \u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be ignored and regex for input validation will be generated based on the combination of the other parameters. \nIf \u0026lt;code\u0026gt;allowUnicode\u0026lt;/code\u0026gt; is set to true, unicode regex pattern will be use as the input validation and the other parameters will be ignored.\nSupported \u0026lt;code\u0026gt;letterCase\u0026lt;/code\u0026gt;:\n- lowercase\n- uppercase\n- mixed: uppercase and lowercase\n- any: uppercase and/or lowercase\n\nTo allow flexible non-word special characters, use \u0026lt;code\u0026gt;allowAllSpecialCharacters\u0026lt;/code\u0026gt;.\nIf \u0026lt;code\u0026gt;allowAllSpecialCharacters\u0026lt;/code\u0026gt; is set to true, \u0026lt;code\u0026gt;specialCharacters\u0026lt;/code\u0026gt; will be forced to empty.\nSupported \u0026lt;code\u0026gt;specialCharacterLocation\u0026lt;/code\u0026gt;:\n- anywhere\n- middle\n\nIf \u0026lt;code\u0026gt;specialCharacters\u0026lt;/code\u0026gt; is empty, \u0026lt;code\u0026gt;specialCharacterLocation\u0026lt;/code\u0026gt; and \u0026lt;code\u0026gt;maxRepeatingSpecialCharacter\u0026lt;/code\u0026gt; will be ignored.\n\u0026lt;code\u0026gt;minCharType\u0026lt;/code\u0026gt; is used to identify how many required criteria in the regex. The supported criteria are number, letter, special character, and letter case. If set to 0 or 1, all criteria are optional. It can be set as much as the number of criteria enabled.\nIf \u0026lt;code\u0026gt;blockedWord\u0026lt;/code\u0026gt; is set by an admin, any user input containing a blocked word will be rejected during account creation, upgrade, or update.\nIf \u0026lt;code\u0026gt;avatarConfig\u0026lt;/code\u0026gt; is set, will use this config and skip all the other validation conditions.\n\nThese are the boundary values for string length:\nminLength: 1,\nmaxLength: 256", "operationId": "AdminUpdateNamespaceScopedInputValidations", "parameters": [ { "description": "Array of input validation rule updates.", "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/model.InputValidationUpdatePayload" }, "type": "array" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10188\u003c/td\u003e\u003ctd\u003einput validation field not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Update Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "10188": "input validation field not found", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/input-validations/v3/update-by-namespace", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:INPUTVALIDATION [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/inputValidations/{field}": { "delete": { "description": "Resets input validation to the default input validation configurations.\nSupported namespace:\n- publisher namespace\n- studio namespace", "operationId": "AdminResetNamespaceScopedInputValidations", "parameters": [ { "description": "Name of the input validation field to reset: email, username, displayName, password, avatar", "in": "path", "name": "field", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10188\u003c/td\u003e\u003ctd\u003einput validation field not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Reset Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "10188": "input validation field not found", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/input-validations/v3/reset-by-namespace", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:INPUTVALIDATION [DELETE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/loginAllowlist": { "get": { "description": "Returns the login allowlist configuration from the specific namespace.", "operationId": "AdminGetLoginAllowlistV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.LoginAllowlistResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get login allowlist", "tags": [ "Login Allowlist" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/allow-list/v3/get", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:LOGINALLOWLIST [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates the login allowlist configuration for a specific game namespace.\n\n**Note:** Only accepts game namespaces.", "operationId": "AdminUpdateLoginAllowlistV3", "parameters": [ { "description": "Login allowlist configuration request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LoginAllowlistRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10240\u003c/td\u003e\u003ctd\u003enamespace is not game namespace\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10470\u003c/td\u003e\u003ctd\u003erole is empty\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin update login allowlist", "tags": [ "Login Allowlist" ], "x-errorCodes": { "10240": "namespace is not game namespace", "10470": "role is empty", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/allow-list/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:LOGINALLOWLIST [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/all/clients": { "get": { "description": "Retrieves all third-party platform credentials.", "operationId": "RetrieveAllThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "All Active Third Party Credential Retrieved", "schema": { "items": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get All Third Party Platform Credential", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:*:CLIENT [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/all/clients/active": { "get": { "description": "Retrieves all active third-party platform credentials.", "operationId": "RetrieveAllActiveThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "All Active Third Party Credential Retrieved", "schema": { "items": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get All Active Third Party Platform Active Credential", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/list-active", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:*:CLIENT [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/sso": { "get": { "description": "Retrieves all SSO platform credentials for the namespace. Supports pagination via limit and offset parameters.", "operationId": "RetrieveAllSSOLoginPlatformCredentialV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "the maximum number of data that may be returned (1...100), default 100", "in": "query", "name": "limit", "type": "integer" }, { "description": "Offset, default 0", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "All Active SSO Credential Retrieved", "schema": { "items": { "$ref": "#/definitions/model.SSOPlatformCredentialResponse" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get All SSO Platform Credentials", "tags": [ "SSO Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/sso-credentials/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:*:SSO [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/clients": { "delete": { "description": "Deletes the third-party platform credential for the specified platform.", "operationId": "DeleteThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete Process Successful" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Third Party Platform Credential", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/delete", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:CLIENT [DELETE]" ] } ] }, "get": { "description": "Retrieves the third-party platform credential for the specified platform.", "operationId": "RetrieveThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Third Party Credential Found", "schema": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Retrieve Third Party Platform Credential", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/get", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:CLIENT [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates a third-party platform credential. Configure the Secret field according to the target platform (see field description). For generic OAuth flow, set GenericOauthFlow to true and configure the corresponding fields.", "operationId": "UpdateThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Third-party platform credential request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Third Party Platform Credential", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:CLIENT [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a third-party platform credential. Configure the Secret field according to the target platform (see field description). For generic OAuth flow, set GenericOauthFlow to true and configure the corresponding fields.", "operationId": "AddThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Third-party platform credential request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Third Party Credential Created", "schema": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add Third Party Platform Credential", "tags": [ "Third Party Credential" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/platform-credentials/v3/create", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:CLIENT [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/clients/domain": { "delete": { "consumes": [ "application/json" ], "description": "This is the API to unregister 3rd Platform domain.\nIf there is a ssoGroups in request body, then this request wil only delete the sso group from the target domain, it will not delete domain.", "operationId": "DeleteThirdPartyLoginPlatformDomainV3", "parameters": [ { "description": "Platform domain delete request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformDomainDeleteRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Domain unregister succeeded" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Unregister Third Party Platform Credential Domain", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/delete-domain", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENTDOMAIN [DELETE]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "This is the API to patch update 3rd Platform domain.\nThis API is a create or partial-update behavior. If it is update, it is a partial update behavior.\n\n**Request body:** Partial domain configuration update. Only provided fields will be updated.", "operationId": "PartialUpdateThirdPartyLoginPlatformDomainV3", "parameters": [ { "description": "Platform domain patch request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformDomainPatchRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Domain config partial updated", "schema": { "$ref": "#/definitions/model.PlatformDomainResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Partial Update Third Party Platform Credential Domain", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/update-domain", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENTDOMAIN [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This is the API to set 3rd Platform domain.\nThis API is a create-or-update behavior. If it is update, it is a replacement behavior.", "operationId": "UpdateThirdPartyLoginPlatformDomainV3", "parameters": [ { "description": "Platform domain update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformDomainUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Domain config updated", "schema": { "$ref": "#/definitions/model.PlatformDomainResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Set Third Party Platform Credential Domain", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/set-domain", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENTDOMAIN [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/sso": { "delete": { "description": "Deletes the SSO platform credential for the specified platform.", "operationId": "DeleteSSOLoginPlatformCredentialV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Delete Process Successful" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete SSO Platform Credential", "tags": [ "SSO Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/sso-credentials/v3/delete", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:SSO [DELETE]" ] } ] }, "get": { "description": "Retrieves the SSO platform credential for the specified platform.", "operationId": "RetrieveSSOLoginPlatformCredential", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "SSO Credential Found", "schema": { "$ref": "#/definitions/model.SSOPlatformCredentialResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "SSO Credential Not Found", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Retrieve SSO Platform Credential", "tags": [ "SSO Credential" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/sso-credentials/v3/get", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:SSO [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates the SSO platform credential for the specified platform.", "operationId": "UpdateSSOPlatformCredential", "parameters": [ { "description": "SSO platform credential update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SSOPlatformCredentialRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.SSOPlatformCredentialResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update SSO Platform Credential", "tags": [ "SSO Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/sso-credentials/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:SSO [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates an SSO platform credential for the specified platform.", "operationId": "AddSSOLoginPlatformCredential", "parameters": [ { "description": "SSO platform credential request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SSOPlatformCredentialRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "SSO Credential Created", "schema": { "$ref": "#/definitions/model.SSOPlatformCredentialResponse" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add SSO Platform Credential", "tags": [ "SSO Credential" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/sso-credentials/v3/create", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:SSO [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/users": { "post": { "consumes": [ "application/json" ], "description": "Admin List User ID By Platform User ID\nLists game user IDs from the given namespace by given platform ID and list of platform user ID.\n\nSupported platform:\n- steam\n- steamopenid\n- ps4web\n- ps4\n- ps5 \n- live\n- xblweb \n- oculus\n- oculusweb\n- facebook\n- google\n- googleplaygames\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- justice\n- epicgames\n- nintendo\n- awscognito\n- netflix\n- snapchat\n- oidc platform id\n\nNote:\n**nintendo platform user ID**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "operationId": "AdminListUserIDByPlatformUserIDsV3", "parameters": [ { "description": "Platform user ID lookup request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformUserIDRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "default": false, "description": "if this is true, the platform user id in response will be raw id, if it is false, some platform user id will be encrypted, eg: xbox; Note: this field is deprecated, please use: rawPUID", "in": "query", "name": "rawPID", "type": "boolean", "x-omitempty": false }, { "default": false, "description": "if this is true, the platform user id in response will be raw id, if it is false, some platform user id will be encrypted, eg: xbox", "in": "query", "name": "rawPUID", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.UserPlatforms" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin List User ID By Platform User ID", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-by-platform-id", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}": { "get": { "description": "Get User By Platform User ID\nReturns user information by given platform ID and platform user ID.\nSeveral platforms are grouped under account groups, you can use either platform ID or platform group as platformId path parameter.\nexample: for steam network platform, you can use steamnetwork / steam / steamopenid as platformId path parameter.\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1\n- **oculus**: if query by app user id, please set the query param **pidType** to **OCULUS_APP_USER_ID** (support game namespace only)\n", "operationId": "AdminGetUserByPlatformUserIDV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Platform User ID", "in": "path", "name": "platformUserId", "required": true, "type": "string" }, { "description": "Platform User ID Type", "in": "query", "name": "pidType", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get User By Platform User ID", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-by-platform-user-id", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/profileUpdateStrategies": { "get": { "description": "This API is for admin to get profile update strategy by namespace and field.\nNote: If the config is not found, this API will return a config with unlimited.\n", "operationId": "AdminGetProfileUpdateStrategyV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target field", "enum": [ "country", "display_name", "dob", "username" ], "in": "query", "name": "field", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.GetProfileUpdateStrategyConfigResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get profile update strategy by namespace and field.", "tags": [ "Profile Update Strategy" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/profile-update-strategies/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PROFILESTRATEGY [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Uses upsert behavior.", "operationId": "AdminUpdateProfileUpdateStrategyV3", "parameters": [ { "description": "Profile update strategy configuration request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdateProfileUpdateStrategyConfigRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target field", "enum": [ "country", "display_name", "dob", "username" ], "in": "query", "name": "field", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.SimpleProfileUpdateStrategyConfigs" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin update profile update strategy by namespace and field.", "tags": [ "Profile Update Strategy" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/profile-update-strategies/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PROFILESTRATEGY [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/roleoverride": { "get": { "description": "Get role override config.\nThis API has upsert behavior, if there is no config yet, it will create a new one with inactive status.\n", "operationId": "AdminGetRoleOverrideConfigV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": "USER", "description": "Role identity", "enum": [ "GAME_ADMIN", "USER", "VIEW_ONLY" ], "in": "query", "name": "identity", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleOverrideResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get role override config", "tags": [ "Override Role Config v3" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/role-override/v3/get", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:OVERRIDE [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "This API is for updating role override config.\nNote:\n \tThis API has upsert behavior, if there is no config yet, it will create a new one first.\n\t**Note for Multi Tenant Mode:**\n\tStudio/game admin:\n\t* only allow to add custom permission to additions.\n", "operationId": "AdminUpdateRoleOverrideConfigV3", "parameters": [ { "description": "Role override update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleOverrideUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": "USER", "description": "Role identity", "enum": [ "GAME_ADMIN", "USER", "VIEW_ONLY" ], "in": "query", "name": "identity", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleOverrideResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update role override config", "tags": [ "Override Role Config v3" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/role-override/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:OVERRIDE [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/roleoverride/source": { "get": { "description": "Get role source permission set.", "operationId": "AdminGetRoleSourceV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": "USER", "description": "Role identity", "enum": [ "GAME_ADMIN", "USER", "VIEW_ONLY" ], "in": "query", "name": "identity", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleOverrideSourceResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get role source permission set", "tags": [ "Override Role Config v3" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/role-override/v3/get-source", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:OVERRIDE [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/roleoverride/status": { "patch": { "consumes": [ "application/json" ], "description": "Enable or disable the target role override feature in path namespace.\nNote:\nThis API has upsert behavior, if there is no config yet, it will create a new one first.\n", "operationId": "AdminChangeRoleOverrideConfigStatusV3", "parameters": [ { "description": "Role override stats update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleOverrideStatsUpdateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": "USER", "description": "Role identity", "enum": [ "GAME_ADMIN", "USER", "VIEW_ONLY" ], "in": "query", "name": "identity", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleOverrideResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Change role override config active status", "tags": [ "Override Role Config v3" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/role-override/v3/update-status", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:OVERRIDE [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/roleoverride/{roleId}/permissions": { "get": { "description": "Get role namespace permission set.", "operationId": "AdminGetRoleNamespacePermissionV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RolePermissionResponseV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get role namespace permission", "tags": [ "Override Role Config v3" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/role-override/v3/get-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/roles/{roleId}/users": { "get": { "description": "Searches admin users which have the roleId.\n\nNotes : only accepts admin role. Admin Role is role which have admin status and members.\nUse [GET] /roles/{roleId}/admin to check the role status.", "operationId": "GetAdminUsersByRoleIdV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "integer" }, { "description": "The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "integer" }, { "description": "The maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetUsersResponseWithPaginationV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10157\u003c/td\u003e\u003ctd\u003especified role is not admin role\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Admin Users By RoleId", "tags": [ "Users" ], "x-errorCodes": { "10156": "role not found", "10157": "specified role is not admin role", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/list-assigned-users", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/tags": { "get": { "description": "Retrieves Account Identifier Tags used to identify and categorize user accounts.\nTag Name can be used for partial content search.\n", "operationId": "AdminQueryTagV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "the maximum number of data that may be returned (1...100), default 100", "in": "query", "name": "limit", "type": "integer" }, { "default": 0, "description": "Offset, default 0", "in": "query", "name": "offset", "type": "integer" }, { "description": "Tag Name", "in": "query", "name": "tagName", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.TagsGetResponseV3" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Query Account Identifier Tag", "tags": [ "Account Identifier Tag" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/admin/tags/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a new Account Identifier Tag for users, which can be used to identify and categorize user accounts.", "operationId": "AdminCreateTagV3", "parameters": [ { "description": "Tag creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.TagCreateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/accountcommon.TagResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create Account Identifier Tag", "tags": [ "Account Identifier Tag" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/tags/v3/create", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/tags/{tagId}": { "delete": { "description": "Deletes an Account Identifier Tag used to identify and categorize user accounts.", "operationId": "AdminDeleteTagV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Tag ID, should follow UUID version 4 without hyphen", "in": "path", "name": "tagId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "404": { "description": "", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Account Identifier Tag", "tags": [ "Account Identifier Tag" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/admin/tags/v3/delete", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [DELETE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates the details of an existing Account Identifier Tag used to identify and categorize user accounts.", "operationId": "AdminUpdateTagV3", "parameters": [ { "description": "Tag update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.TagUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Tag ID, should follow UUID version 4 without hyphen", "in": "path", "name": "tagId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.TagResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Account Identifier Tag", "tags": [ "Account Identifier Tag" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/tags/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users": { "get": { "description": "Searches for the user who owns the given email address.", "operationId": "AdminGetUserByEmailAddressV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Email Address, should follow OWASP email format", "in": "query", "name": "emailAddress", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User By Email Address", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-by-email", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Bulk updates users based on given data.\n------\nSupported fields:\n* skipLoginQueue\n\n", "operationId": "AdminBulkUpdateUsersV3", "parameters": [ { "description": "Bulk user update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UsersUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Users", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/bulk-update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/bans": { "post": { "consumes": [ "application/json" ], "description": "Returns user bans of userIDs specified in the payload.", "operationId": "AdminGetBulkUserBanV3", "parameters": [ { "description": "Bulk user ban query request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.GetBulkUserBansRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Filter ban based on the ban status. If you set this, only active ban returned", "in": "query", "name": "activeOnly", "type": "boolean", "x-omitempty": false }, { "description": "Filter ban based on the ban type. You can see list of ban from GET /iam/v3/admin/bans", "in": "query", "name": "banType", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetUserBanV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get bulk user bans", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/bulk-get-bans", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/bulk": { "post": { "consumes": [ "application/json" ], "description": "List User By User ID\nLists user information from the given list of userID and namespace.", "operationId": "AdminListUserIDByUserIDsV3", "parameters": [ { "description": "Bulk user query request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AdminBulkUserRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ListUserInformationResult" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "List User By User ID", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/admin/users/v3/bulk-get" } }, "/iam/v3/admin/namespaces/{namespace}/users/bulk/platforms": { "post": { "consumes": [ "application/json" ], "description": "Notes:\n- Bulk-retrieves basic user info by userId, max allowed 100 at a time\n- If namespace is game, will search by game user Id, other wise will search by publisher namespace\n", "operationId": "AdminBulkGetUsersPlatform", "parameters": [ { "description": "Bulk user IDs request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserIDsRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ListBulkUserPlatformsResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10185\u003c/td\u003e\u003ctd\u003epublisher namespace not allowed\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin bulk get users' platform info by user Ids", "tags": [ "Users" ], "x-errorCodes": { "10185": "publisher namespace not allowed", "20000": "internal server error", "20002": "validation error" }, "x-operationid": "iam/admin/users/v3/bulk-get-platforms", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/cursor": { "post": { "consumes": [ "application/json" ], "description": "1. **Cursor-Based User Retrieval**\n\tThis API fetches user records ordered by created_at ASC, user_id ASC to ensure a stable pagination order.\n\tPagination is handled using a cursor, which consists of created_at and user_id.\n2. **GraphQL-Like Querying**\n\tBy default, the API only returns the user ID.\n\tTo include additional fields in the response, specify them in the request body under the fields parameter.\n\t***Supported fields***:\n\t\t[\u0026#39;created_at\u0026#39;, \u0026#39;email_address\u0026#39;]\n\t\t***Note***: If a value is not in the allowed list, the API will ignore it.\n3. **Cursor Mechanics**\n\tThe cursor consists of created_at and user_id from the last retrieved record.\n\tThe next query fetches records strictly after the provided cursor.\n\t***The query applies the following ordering logic***:\n\t\tRecords with a later created_at timestamp are included.\n\t\tIf multiple records have the same created_at, only records with a higher user_id are included.\n\t\tThis ensures that records with the exact same created_at as the cursor are excluded from the next page to prevent duplication.\n4. **Usage**\n\tFor the first-time query, the request body does not require a cursor.\n\tIf the data array is empty, it indicates that the cursor has reached the end of the available records.\n", "operationId": "AdminCursorGetUserV3", "parameters": [ { "description": "Cursor-based user list request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CursorGetUserRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.CursorGetUserResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Cursor-Based User Retrieval", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-by-cursor", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/invite": { "post": { "consumes": [ "application/json" ], "description": "Invites an admin or non-admin user and assigns a role to them.\nThe role must be scoped to namespace based on the **{namespace}** value in path parameter.\nAn admin user can only assign role to namespaces that the admin user has the required permission.\nRole is optional, if not specified then it will only assign User role\n\nThe invited admin will also assigned with \u0026#34;User\u0026#34; role by default.", "operationId": "AdminInviteUserV3", "parameters": [ { "description": "User invitation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.InviteUserRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.InviteUserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Invite User", "tags": [ "Users" ], "x-errorCodes": { "10133": "email already used", "10154": "country not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/invite", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:INVITE [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/linkhistories": { "get": { "consumes": [ "application/json" ], "description": "If the limit is not defined, the default limit is 100.", "operationId": "AdminQueryThirdPlatformLinkHistoryV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform Id that want to be searched,\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "in": "query", "name": "platformId", "required": true, "type": "string" }, { "description": "the maximum number of data that may be returned (1...100), default 100", "in": "query", "name": "limit", "type": "integer" }, { "description": "Offset, default 0", "in": "query", "name": "offset", "type": "integer" }, { "description": "Platform user id", "in": "query", "name": "platformUserId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.LinkingHistoryResponseWithPaginationV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Search linking history of the query platform with platform user id", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/search-platform-linking-history", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/platforms/justice": { "get": { "description": "**Requires a publisher namespace.**\nReturns list of users ID and namespace with their Justice platform account, under a namespace. If user\ndoesn\u0026#39;t have Justice platform account, the linkedPlatforms will be empty array.\u0026#39;", "operationId": "AdminListUsersV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "number of returned data, default 100", "in": "query", "name": "limit", "type": "integer" }, { "description": "number of offset, default 0", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/accountcommon.ListUsersWithPlatformAccountsResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin List Users V3", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-users-with-accelbyte-account", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/search": { "get": { "consumes": [ "application/json" ], "description": "Behavior :\n- By default, searches all users on the specified namespace.\n- If query parameter is defined, searches users whose email address, display name, username, or third party partially match with the query.\n- The query parameter length must be between 3 and 30 characters. For email address queries (i.e., contains \u0026#39;@\u0026#39;), the allowed length is 3 to 40 characters. Otherwise, the database will not be queried.\n- If startDate and endDate parameters is defined, searches users which created on the certain date range.\n- If query, startDate and endDate parameters are defined, searches users whose email address and display name match and created on the certain date range.\n- If startDate parameter is defined, searches users that created start from the defined date.\n- If endDate parameter is defined, searches users that created until the defined date.\n- If platformId parameter is defined and by parameter is using thirdparty, searches users based on the platformId they have linked to.\n- If platformBy parameter is defined and by parameter is using thirdparty, searches users based on the platformUserId or platformDisplayName they have linked to, example value: platformUserId or platformDisplayName.\n- If limit is not defined, The default limit is 100.\n\nGraphQL-Like Querying:\n- By default, the API only returns the minimum fields -\u0026gt; [displayName, authType, createdAt, uniqueDisplayName, deletionStatus, enabled, emailAddress, skipLoginQueue, testAccount]\n- To include additional fields in the response, specify them in the request params.\n- Supported fields: [country, emailVerified, avatarUrl, enabled]\n- Note: If a value is not in the allowed list, the API will ignore it.\n\nIn Multi Tenant mode :\n\n- If super admin search in super admin namespace, the result will be all game admin user\n- If super admin search in game studio namespace, the result will be all game admin user and players under the game studio namespace\n- If super admin search in game namespace, the result will be all game admin users and players under the game namespace\n- If game admin search in their game studio namespace, the result will be all game admin user in the studio namespace\n- If game admin search in their game namespace, the result will be all player in the game namespace\n- If IAM client token (from studio namespace or game namespace) with ADMIN:NAMESPACE:{namespace}:USER permission searches in a game namespace, the result will be all players in that game namespace\n\n", "operationId": "AdminSearchUserV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Search by given attribute, possible values are emailAddress, displayName, uniqueDisplayName, username and thirdPartyPlatform", "in": "query", "name": "by", "type": "string" }, { "description": "End Date, format YYYY-MM-DD", "in": "query", "name": "endDate", "type": "string" }, { "default": false, "description": "A flag whether this request should include total count, default false", "in": "query", "name": "includeTotal", "type": "boolean", "x-omitempty": false }, { "description": "the maximum number of data that may be returned (1...100), default 100", "in": "query", "name": "limit", "type": "integer" }, { "description": "Offset, default 0", "in": "query", "name": "offset", "type": "integer" }, { "description": "Search platformBy given attribute, possible values are platformDisplayName", "in": "query", "name": "platformBy", "type": "string" }, { "description": "Platform Id that want to be searched. \n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "in": "query", "name": "platformId", "type": "string" }, { "description": "Search query value. The field to search is controlled by the 'by' parameter.", "in": "query", "name": "query", "type": "string" }, { "description": "comma separated role ids", "in": "query", "name": "roleIds", "type": "string" }, { "description": "comma separated selected fields.", "in": "query", "name": "selectedFields", "type": "string" }, { "description": "A flag to filter users that are exempted from login queue. if skipLoginQueue parameter is not defined, search result will include both exempted and not exempted users", "in": "query", "name": "skipLoginQueue", "type": "boolean", "x-omitempty": false }, { "description": "Start Date, format YYYY-MM-DD", "in": "query", "name": "startDate", "type": "string" }, { "description": "comma separated tag ids less than 4", "in": "query", "name": "tagIds", "type": "string" }, { "description": "A flag to filter test account. if testAccount parameter is not defined, search result will include both real and test accounts", "in": "query", "name": "testAccount", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.SearchUsersResponseWithPaginationV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Search User", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20007": "too many requests", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/search", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/search/bulk": { "post": { "consumes": [ "application/json" ], "description": "Searches users by the list of email addresses.", "operationId": "AdminGetBulkUserByEmailAddressV3", "parameters": [ { "description": "Email address list request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ListEmailAddressRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ListUserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Bulk User By Email Address", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/bulk-get-by-email", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}": { "get": { "consumes": [ "application/json" ], "description": "Retrieves the full user profile including email verification status, ban status, deletion status, and linked platform accounts.", "operationId": "AdminGetUserByUserIdV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get User By User ID", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates the user based on given data. **Single request can update single field or multi fields.**\nSupported field {country, displayName, languageTag, dateOfBirth, avatarUrl, userName, tags}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.\nAdmin can set Tags with array string data e.g. [\u0026#34;10e9a46ef6164b7e86d08e86605bd8cf\u0026#34;].\nAdmin also can reset user tags by sending empty array string e.g. [ ].\nUsers can have at most 5 tags. No duplicate tags allowed.\n\n**Response body logic when user updating email address:**\n- User want to update email address of which have been verified, NewEmailAddress response field will be filled with new email address.\n- User want to update email address of which have not been verified, {LoginId, OldEmailAddress, EmailAddress} response field will be filled with new email address.\n- User want to update email address of which have been verified and updated before, {LoginId, OldEmailAddress, EmailAddress} response field will be filled with verified email before. NewEmailAddress response field will be filled with newest email address.\n\n", "operationId": "AdminUpdateUserV3", "parameters": [ { "description": "Admin user update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10139": "platform account not found", "10154": "country not found", "10222": "unique display name already exists", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans": { "get": { "description": "Returns the first page of the data if after and before parameters is empty.", "operationId": "AdminGetUserBanV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Filter ban based on the ban status. If you set this, only active ban returned", "in": "query", "name": "activeOnly", "type": "boolean", "x-omitempty": false }, { "description": "Filter ban based on the date creation. If you set this, only user bans created after the date returned. The date is in ISO-8601. Example value: 2019-05-18T07:17:45Z. \u003cem\u003eDoesn't work yet\u003c/em\u003e", "in": "query", "name": "after", "type": "string" }, { "description": "Filter ban based on the date creation. If you set this, only user bans created before the date returned. The date is in ISO-8601. Example value: 2019-05-18T07:17:45Z. \u003cem\u003eDoesn't work yet\u003c/em\u003e", "in": "query", "name": "before", "type": "string" }, { "description": "The number of data returned in one query. The maximum value of the limit is 100 and the minimum value of the limit is 1. If you set this into -1, then it returns all data. Default: -1. \u003cem\u003eDoesn't work yet\u003c/em\u003e.", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetUserBanV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user's bans", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-bans", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Bans a user with specific type of ban. Ban types and reason can be queried.", "operationId": "AdminBanUserV3", "parameters": [ { "description": "Ban creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BanCreateRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.UserBanResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Ban a single user", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/ban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans/summary": { "get": { "description": "Retrieves a summary of the user\u0026#39;s ban history, including active and expired bans.", "operationId": "AdminGetUserBanSummaryV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetUserBanSummaryV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user's bans summary", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-ban-summary", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans/{banId}": { "patch": { "consumes": [ "application/json" ], "description": "Set ban status for a single user for a specific ban. Retrieve\nuser ban and choose the ban ID. Set the form parameter to true/false to enable\nor disable the ban.", "operationId": "AdminUpdateUserBanV3", "parameters": [ { "description": "Ban update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BanUpdateRequest" } }, { "description": "Ban ID, should follow UUID version 4 without hyphen", "in": "path", "name": "banId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserBanResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10145\u003c/td\u003e\u003ctd\u003edisallow game access publisher user's ban\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable or disable ban for a single user", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10145": "disallow game access publisher user's ban", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/update-ban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/code/request": { "post": { "consumes": [ "application/json" ], "description": "The verification code is sent to email address.\nAvailable contexts for use :\n- **UserAccountRegistration**\n\ta context type used for verifying email address in user account registration. It returns 409 if the email address already verified. \n\t**_It is the default context if the Context field is empty_**\n\n- **UpdateEmailAddress**\n\ta context type used for verify user before updating email address.(Without email address verified checking)\n\n- **upgradeHeadlessAccount**\n\tThe context is intended to be used whenever the email address wanted to be automatically verified on upgrading a headless account. \n\t\tIf this context used, IAM rejects the request if the email address is already used by others by returning HTTP Status Code 409.\n", "operationId": "AdminSendVerificationCodeV3", "parameters": [ { "description": "Verification code send request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10146\u003c/td\u003e\u003ctd\u003euserID not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10140\u003c/td\u003e\u003ctd\u003euser verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Send verification code to user", "tags": [ "Users" ], "x-errorCodes": { "10133": "email already used", "10139": "platform account not found", "10140": "user verified", "10146": "userID not match", "10171": "email address not found", "20001": "unauthorized access", "20002": "validation error", "20007": "too many requests", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/send-verification-code", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/code/verify": { "post": { "consumes": [ "application/json" ], "description": "Will verify account and consume code if validateOnly is set false in request body\t\nRedeems a verification code sent to a user to verify the user\u0026#39;s contact address is correct\nAvailable ContactType : **email** or **phone** ", "operationId": "AdminVerifyAccountV3", "parameters": [ { "description": "Email verification request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserVerificationRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10149\u003c/td\u003e\u003ctd\u003everification contact type doesn't match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10148\u003c/td\u003e\u003ctd\u003everification code context doesn't match the required context\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10162\u003c/td\u003e\u003ctd\u003einvalid verification\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Verify or consume verification code sent to user", "tags": [ "Users" ], "x-errorCodes": { "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10139": "platform account not found", "10148": "verification code context doesn't match the required context", "10149": "verification contact type doesn't match", "10152": "verification code not found", "10162": "invalid verification", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/validate-code", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/codes": { "get": { "description": "**[WARNING] This API is only for testing purpose.**\n\nGets the active user verification code.\nThere are some scenarios of getting verification codes, all of them will be returned:\n- After account registration\n- After reset password request\n- After headless account upgrade\n- After update email request\n\nThis API only accept publisher/studio namespace and userId.\n\nAction code: 10146", "operationId": "getUserVerificationCode", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.VerificationCodeResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get verification code sent to user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-verification-codes", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId}:CODE [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/deletion/status": { "get": { "description": "Retrieves the deletion status of the specified user account.", "operationId": "AdminGetUserDeletionStatusV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserDeletionStatusResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User Deletion Status", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-deletion-status", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DELETIONSTATUS:USER:{userId} [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates the deletion status of the specified user account.", "operationId": "AdminUpdateUserDeletionStatusV3", "parameters": [ { "description": "User deletion status update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdateUserDeletionStatusRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User Deletion Status", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/update-deletion-status", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DELETIONSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/distinctPlatforms": { "get": { "description": "Retrieves platform accounts linked to user.\nIt will query all linked platform accounts and result will be distinct \u0026amp; grouped, same platform we will pick oldest linked one.", "operationId": "AdminListUserAllPlatformAccountsDistinctV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.DistinctPlatformResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get distinct platform accounts linked to the user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-distinct-active-platform-accounts", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/headless/code/verify": { "post": { "consumes": [ "application/json" ], "description": "If validateOnly is set false, will upgrade headless account with verification code.\nUpgrades a headless account by linking it with an email address, username, and password, and immediately verifies the email address afterward.\nBy upgrading the headless account into a full account, the user could use the email address and password for using Justice IAM.\n\nTo obtain a verification code, use the send verification code API.\nAlso has the ability to update user data (if the user data field is specified) right after the upgrade account process is done.\nSupported user data fields :\n- displayName\n- dateOfBirth : format YYYY-MM-DD, e.g. 2019-04-29\n- country : format ISO3166-1 alpha-2 two letter, e.g. US", "operationId": "AdminUpgradeHeadlessAccountV3", "parameters": [ { "description": "Headless account upgrade with verification code request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountWithVerificationCodeRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10155\u003c/td\u003e\u003ctd\u003ecountry is not defined\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10149\u003c/td\u003e\u003ctd\u003everification contact type doesn't match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10148\u003c/td\u003e\u003ctd\u003everification code context doesn't match the required context\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10153\u003c/td\u003e\u003ctd\u003euser exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10170\u003c/td\u003e\u003ctd\u003eaccount is already a full account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Verify or consume verification code. ", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10139": "platform account not found", "10148": "verification code context doesn't match the required context", "10149": "verification contact type doesn't match", "10152": "verification code not found", "10153": "user exist", "10154": "country not found", "10155": "country is not defined", "10170": "account is already a full account", "10213": "country is blocked", "10222": "unique display name already exists", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/upgrade-and-validate", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/information": { "delete": { "description": "**WARNING:** Deletes user data directly from the database, bypassing the GDPR flow. Use with caution as this action is irreversible.", "operationId": "AdminDeleteUserInformationV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete user's information", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/delete", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:INFORMATION:USER:{userId} [DELETE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/logins/histories": { "get": { "description": "- This API only accept publisher/studio namespace and userId.\n- The maximum value of the limit is 100 and the minimum value of the limit is 1.\n- Returns the first page of the data if \u0026lt;code\u0026gt;after\u0026lt;/code\u0026gt; and \u0026lt;code\u0026gt;before\u0026lt;/code\u0026gt; parameters is empty.\n- Returns the next page of the data if we provide \u0026lt;code\u0026gt;after\u0026lt;/code\u0026gt; parameters with valid Unix timestamp.\n- Returns the previous page of the data if we provide \u0026lt;code\u0026gt;before\u0026lt;/code\u0026gt; parameter with valid Unix timestamp.", "operationId": "AdminGetUserLoginHistoriesV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page (In Unix timestamp formats, e.g:1545114248)", "in": "query", "name": "after", "type": "number" }, { "description": "The cursor that points to query data for the previous page (In Unix timestamp formats, e.g:1545114248).", "in": "query", "name": "before", "type": "number" }, { "description": "The number of data retrieved in a page. Default: 100", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.LoginHistoriesResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get User's Login Histories", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-login-history", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:HISTORY:LOGIN:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "description": "Updates the password for the specified user. This is an admin operation that does not require the user\u0026#39;s current password.", "operationId": "AdminResetPasswordV3", "parameters": [ { "description": "Password update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserPasswordUpdateV3Request" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10142\u003c/td\u003e\u003ctd\u003enew password cannot be same with original\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10143\u003c/td\u003e\u003ctd\u003epassword not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User Password", "tags": [ "Users" ], "x-errorCodes": { "10142": "new password cannot be same with original", "10143": "password not match", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/update-password", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PASSWORD:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions": { "delete": { "consumes": [ "application/json" ], "description": "Removes multiple permissions from a user in bulk.", "operationId": "AdminDeleteUserPermissionBulkV3", "parameters": [ { "description": "Array of permission delete requests.", "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/model.PermissionDeleteRequest" }, "type": "array" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete User Permission", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/bulk-remove-permissions", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [DELETE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Appends user\u0026#39;s permissions with the ones defined in body.\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\nSyntax reference\nFields:\n1. Seconds: 0-59 * / , -\n1. Minutes: 0-59 * / , -\n1. Hours: 0-23 * / , -\n1. Day of month: 1-31 * / , - L W\n1. Month: 1-12 JAN-DEC * / , -\n1. Day of week: 0-6 SUN-SAT * / , - L #\n1. Year: 1970-2099 * / , -\n\nSpecial characters:\n1. *: all values in the fields, e.g. * in seconds fields indicates every second\n1. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n1. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n1. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n1. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n1. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n1. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.", "operationId": "AdminAddUserPermissionsV3", "parameters": [ { "description": "Array of permissions to assign.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.Permissions" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Add User Permissions", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/add-permission", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [CREATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Replaces the user\u0026#39;s permissions with the ones defined in the request body. Supports scheduled permissions using cron or date range syntax.", "operationId": "AdminUpdateUserPermissionV3", "parameters": [ { "description": "Array of permissions to assign.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.Permissions" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update User Permissions", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/set-permissions", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions/{resource}/{action}": { "delete": { "description": "Removes a specific permission (identified by resource and action) from the specified user.", "operationId": "AdminDeleteUserPermissionV3", "parameters": [ { "description": "Action (1..15)", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete User Permission", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/remove-permission", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [DELETE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms": { "get": { "description": "Gets platform accounts that are already linked with user account.\nAction code : 10128\n\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1\n\n## Justice Platform Account\nThe permission ’ADMIN:NAMESPACE:{namespace}:JUSTICE:USER:{userId}’ [READ] is required in order to read the UserID who linked with the user.\n", "operationId": "AdminGetUserPlatformAccountsV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "DEPRECATED. The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "DEPRECATED. The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "DEPRECATED. the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" }, { "description": "Platform ID, query specific platform account", "in": "query", "name": "platformId", "type": "string" }, { "description": "Target Namespace, query platform account on specific namespace", "in": "query", "name": "targetNamespace", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.UserLinkedPlatformsResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get platform accounts linked to the user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-platform-accounts", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/distinct": { "get": { "description": "Retrieves only 3rd party platform accounts linked to user.\nIt will query platform accounts and result will be distinct \u0026amp; grouped, same platform we will pick oldest linked one.\n------\nSupported status:\n - LINKED\n - RESTRICTIVELY_UNLINKED\n - UNLINKED\n - ALL\n", "operationId": "AdminListAllDistinctPlatformAccountsV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "status", "in": "query", "name": "status", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.DistinctPlatformResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get distinct platforms linked to the user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/list-distinct-platform-accounts", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice": { "get": { "description": "Retrieves the list of Justice platform accounts linked to the given user.\n\n**Namespace restriction:** The {namespace} path parameter must be a **publisher namespace**. Passing a game namespace returns HTTP 400.", "operationId": "AdminGetListJusticePlatformAccounts", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Publisher User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.GetUserMapping" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20025\u003c/td\u003e\u003ctd\u003enot a publisher user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User Justice Platform Accounts", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20025": "not a publisher user" }, "x-operationid": "iam/admin/users/v3/list-accelbyte-accounts", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace}": { "get": { "description": "Supports publisher access to game and game access to publisher.\nIf targetNamespace filled with publisher namespace then returns its publisher user id and publisher namespace.\nIf targetNamespace filled with game namespace then returns its game user id and game namespace.", "operationId": "AdminGetUserMapping", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target namespace", "in": "path", "name": "targetNamespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "description": "Create target namespace account if not found", "in": "query", "name": "createIfNotFound", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetUserMappingV3" } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get user mapping", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-mapping", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:JUSTICE:USER:{userId} [READ]" ] } ] }, "post": { "description": "Create Justice User from Publisher User information. It will check first if Justice User on target namespace already exist.", "operationId": "AdminCreateJusticeUser", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target namespace", "in": "path", "name": "targetNamespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.CreateJusticeUserResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create Justice User from Publisher User", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/admin/users/v3/create-from-publisher", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/link": { "post": { "consumes": [ "application/json" ], "description": "Force linking platform account to user User Account. Intended for admin to forcefully link account to user.\nBy default, these cases are not allowed\n- The platform account current is linked by another account\n- The target account ever linked this platform\u0026#39;s another account\n", "operationId": "AdminLinkPlatformAccount", "parameters": [ { "description": "Platform account link request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LinkPlatformAccountRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": true, "description": "this query is for this case: if target platform account current is linked with another account\n- true: will unlink from other account and force link to current target AGS account.\n- false: will link failed and response conflict details\n- empty: default is true", "in": "query", "name": "skipConflict", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10163\u003c/td\u003e\u003ctd\u003eplatform is already linked with the user account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10200\u003c/td\u003e\u003ctd\u003elink to a different platform account is not allowed\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10173\u003c/td\u003e\u003ctd\u003eplatform is already linked with another user account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Link a Platform User Account to User Account", "tags": [ "Users" ], "x-errorCodes": { "10163": "platform is already linked with the user account", "10173": "platform is already linked with another user account", "10200": "link to a different platform account is not allowed", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/admin/users/v3/link-platform-account-forced", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/link/histories": { "get": { "description": "This API is for admin to get user\u0026#39;s link history.\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "operationId": "AdminGetUserLinkHistoriesV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Target platform id", "in": "query", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.UserPlatformLinkHistories" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get user's platform link histories.", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-platform-linking-history", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## Supported platforms:\n- **steam**\n- **steamopenid**\n- **facebook**\n- **google**\n- **googleplaygames**\n- **oculus**\n- **twitch**\n- **android**\n- **ios**\n- **apple**\n- **device**\n- **discord**\n- **awscognito**\n- **epicgames**\n- **nintendo**\n- **snapchat**\n\nUnlink user\u0026#39;s account from a specific platform. \u0026#39;justice\u0026#39; platform might have multiple accounts from different namespaces linked.\n_platformNamespace_ need to be specified when the platform ID is \u0026#39;justice\u0026#39;.\nUnlink user\u0026#39;s account from justice platform will enable password token grant and password update.\nIf you want to unlink user\u0026#39;s account in a game namespace, you have to specify _platformNamespace_ to that game namespace.\n", "operationId": "AdminPlatformUnlinkV3", "parameters": [ { "description": "Platform unlink request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UnlinkUserPlatformRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin unlink user's account from specific platform", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/unlink-platform", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/all": { "delete": { "consumes": [ "application/json" ], "description": "Unlink user\u0026#39;s account from third platform in all namespaces.\nSeveral platforms are grouped under account groups, you can use either platform ID or platform group as platformId path parameter. \nexample: to unlink steam third party account, you can use steamnetwork / steam / steamopenid as platformId path parameter.\n\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1\n\nUnlink platform account associated with a group:\nIf user unlink platform account associated with a group, the API logic will unlink all of platform account under that group as well. \nexample: if user unlink from ps4, the API logic will unlink ps5 and ps4web as well", "operationId": "AdminPlatformUnlinkAllV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin unlink user's account from specific platform for all namespaces", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/unlink-platform-all", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "**Prerequisite:** Platform client configuration need to be added to database for specific platformId. Namespace service URL need to be specified (refer to required environment variables).\n## Supported platforms:\n- **steam**: The ticket’s value is the authentication code returned by Steam.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The ticket\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The ticket’s value is the authorization code returned by Facebook OAuth\n- **google**: The ticket’s value is the authorization code returned by Google OAuth\n- **googleplaygames**: The ticket’s value is the authorization code returned by Google play games OAuth\n- **oculus**: The ticket’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The ticket’s value is the authorization code returned by Twitch OAuth.\n- **android**: The ticket\u0026#39;s value is the Android’s device ID\n- **ios**: The ticket\u0026#39;s value is the iOS’s device ID.\n- **apple**: The ticket’s value is the authorization code returned by Apple OAuth.\n- **device**: Every device that does’nt run Android and iOS is categorized as a device platform. The ticket\u0026#39;s value is the device’s ID.\n- **discord**: The ticket’s value is the authorization code returned by Discord OAuth.\n- **awscognito**: The ticket’s value is the aws cognito access token (JWT).\n- **epicgames**: The ticket’s value is an access-token obtained from Epicgames EOS Account Service.\n- **nintendo**: The ticket’s value is the authorization code(id_token) returned by Nintendo OAuth.", "operationId": "AdminPlatformLinkV3", "parameters": [ { "description": "Ticket from platform", "in": "formData", "name": "ticket", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10163\u003c/td\u003e\u003ctd\u003eplatform is already linked with the user account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Link user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "10163": "platform is already linked with the user account", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/link-platform-account", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link/histories": { "delete": { "deprecated": true, "description": "This API is for admin to delete user\u0026#39;s linking history with target platform id.\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1\n\n----\n**Substitute endpoint**: /v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link/restrictions\n", "operationId": "AdminDeleteUserLinkingHistoryByPlatformIDV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target platform id", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin remove user's platform linking history.", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/delete-platform-linking-history", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link/restrictions": { "delete": { "description": "This API is for admin to delete user\u0026#39;s linking restriction with target platform id.\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "operationId": "AdminDeleteUserLinkingRestrictionByPlatformIDV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target platform id", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin remove user's platform linking restriction.", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/delete-platform-linking-restriction", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/linkStatus": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Admin get the link status of the third party platform token with user id.\n\nChecks whether the third party user represented by third party token is\nlinked with the corresponding user id.\n\n## Supported platforms:\n- **steam**: The platform_token’s value is the authentication code returned by Steam.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The platform_token\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The platform_token’s value is the authorization code returned by Facebook OAuth\n- **google**: The platform_token’s value is the authorization code returned by Google OAuth\n- **googleplaygames**: The platform_token’s value is the authorization code returned by Google play games OAuth\n- **oculus**: The platform_token’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The platform_token’s value is the authorization code returned by Twitch OAuth.\n- **discord**: The platform_token’s value is the authorization code returned by Discord OAuth\n- **android**: The device_id is the Android’s device ID\n- **ios**: The device_id is the iOS’s device ID.\n- **apple**: The platform_token’s value is the authorization code returned by Apple OAuth.(We will use this code to generate APP token)\n- **device**: Every device that does’nt run Android and iOS is categorized as a device. The device_id is the device’s ID.\n- **justice**: The platform_token’s value is the designated user’s access token.\n- **epicgames**: The platform_token’s value is an access-token obtained from Epicgames EOS Account Service.\n- **ps4**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **ps5**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **nintendo**: The platform_token’s value is the authorization code(id_token) returned by Nintendo OAuth.\n- **awscognito**: The platform_token’s value is the aws cognito access token or id token (JWT).\n- **live**: The platform_token’s value is xbox XSTS token\n- **xblweb**: The platform_token’s value is code returned by xbox after login\n- **netflix**: The platform_token’s value is GAT (Gamer Access Token) returned by Netflix backend\n- **snapchat**: The platform_token’s value is the authorization code returned by Snapchat OAuth.\n", "operationId": "AdminGetThirdPartyPlatformTokenLinkStatusV3", "parameters": [ { "description": "Platform Token", "in": "formData", "name": "platformToken", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "UserId", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.TokenThirdPartyLinkStatusResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10208\u003c/td\u003e\u003ctd\u003eplatform token expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get the link status of the third party platform token with user id.", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10208": "platform token expired", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20003": "forbidden access" }, "x-operationid": "iam/admin/users/v3/get-platform-link-status", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/metadata": { "get": { "description": "Gets user single platform account metadata.\n\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "operationId": "AdminGetUserSinglePlatformAccount", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Publisher or game User ID", "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "description": "By default, this API will query the platform account in the specified namespace path only. If 'crossNamespace' is set to true, it will query across all namespaces and find one.", "in": "query", "name": "crossNamespace", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserPlatformMetadata" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get user single platform account metadata", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-platform-account-metadata", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "**Deprecated.** Only removes roles from the legacy roles entity.\n\n**Substitute endpoint:** /iam/v4/admin/namespaces/{namespace}/users/{userId}/roles [DELETE]", "operationId": "AdminDeleteUserRolesV3", "parameters": [ { "description": "Array of role IDs to remove.", "in": "body", "name": "body", "required": true, "schema": { "items": { "type": "string" }, "type": "array" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete User Roles", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/revoke-roles", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [DELETE]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "User\u0026#39;s roles will be replaced with roles from request body.\nAn admin user can only assign role with **namespace** (in request body) if the admin user has required permission which is same as the required permission of [AdminAddUserRoleV4].", "operationId": "AdminSaveUserRoleV3", "parameters": [ { "description": "Array of namespace-role assignment requests.", "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/model.NamespaceRoleRequest" }, "type": "array" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e422\u003c/td\u003e\u003ctd\u003erequest is unprocessable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Save User Role V3", "tags": [ "Users" ], "x-errorCodes": { "10156": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body", "422": "request is unprocessable" }, "x-operationid": "iam/admin/users/v3/set-roles", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles/{roleId}": { "delete": { "deprecated": true, "description": "**Deprecated.** Only removes roles from the legacy roles entity.\n\n**Substitute endpoint:** /iam/v4/admin/namespaces/{namespace}/users/{userId}/roles [DELETE]", "operationId": "AdminDeleteUserRoleV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10159\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete User Role", "tags": [ "Users" ], "x-errorCodes": { "10156": "role not found", "10159": "operator is not a role manager", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/revoke-role", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [DELETE]" ] } ] }, "post": { "deprecated": true, "description": "**Deprecated.** Only assigns roles in the legacy roles entity.\n\n**Substitute endpoint:** /iam/v4/admin/namespaces/{namespace}/users/{userId}/roles [POST]", "operationId": "AdminAddUserRoleV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10159\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10160\u003c/td\u003e\u003ctd\u003euser already has the role\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10161\u003c/td\u003e\u003ctd\u003euser already the role member\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add User Role", "tags": [ "Users" ], "x-errorCodes": { "10156": "role not found", "10159": "operator is not a role manager", "10160": "user already has the role", "10161": "user already the role member", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/assign-role", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/state": { "get": { "consumes": [ "application/json" ], "description": "Retrieves the current account state (enabled/disabled, email verification, deletion status) for the specified user.", "operationId": "AdminGetUserStateByUserIdV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserStateResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get User State By User ID", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/get-state", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/status": { "patch": { "consumes": [ "application/json" ], "description": "Disables or enables a user account.", "operationId": "AdminUpdateUserStatusV3", "parameters": [ { "description": "User enabled/disabled status update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdateUserStatusRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update user status", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/update-status", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/trustly/identity": { "patch": { "consumes": [ "application/json" ], "description": "Only accepts **Client Token**.\nIntended for specific scenarios where **email notifications are disabled**.\nThe user\u0026#39;s email will be marked as verified\n\nNote:\n- emailAddress or password field are optional\n- request body can\u0026#39;t be empty\n\t\n", "operationId": "AdminTrustlyUpdateUserIdentity", "parameters": [ { "description": "User identity (email/username) update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserIdentityUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User Identity", "tags": [ "Users" ], "x-errorCodes": { "10133": "email already used", "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v3/update-trusted-identity", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:IDENTITY [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/verify": { "put": { "description": "Force-verifies a user\u0026#39;s account without requiring a verification code.\n\n**Note:**\n- namespace: only accepts publisher/studio namespaces\n- userId: only accepts publisher/studio user IDs", "operationId": "AdminVerifyUserWithoutVerificationCodeV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10140\u003c/td\u003e\u003ctd\u003euser verified\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Verify user without verification code", "tags": [ "Users" ], "x-errorCodes": { "10140": "user verified", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v3/force-verify", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/{clientId}/secret": { "put": { "consumes": [ "application/json" ], "description": "Updates the client secret for the specified OAuth client.", "operationId": "AdminUpdateClientSecretV3", "parameters": [ { "description": "Client secret update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.V3ClientUpdateSecretRequest" } }, { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Update Client Secret", "tags": [ "Clients" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/clients/v3/update-secret", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/platforms/{platformId}/availability": { "get": { "description": "This is the API to check specific 3rd party platform availability.\nPassing platform group name or it\u0026#39;s member will return same platform availability data\nSupported third party platform and platform group:\n- PSN group(psn)\n\t- ps4web\n\t- ps4\n\t- ps5\n", "operationId": "AdminCheckThirdPartyLoginPlatformAvailabilityV3", "parameters": [ { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Platform Availability Check Retrieved", "schema": { "$ref": "#/definitions/model.CheckAvailabilityResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10226\u003c/td\u003e\u003ctd\u003ethird party platform is not supported\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Check 3rd party platform availability", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10226": "third party platform is not supported", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/platform-credentials/v3/check-availability", "x-security": [ { "userPermissions": [ "ADMIN:PLATFORM [READ]" ] } ] } }, "/iam/v3/admin/platforms/{platformId}/defaults": { "get": { "description": "Returns the built-in default configuration values for a given platform.", "operationId": "GetThirdPartyLoginPlatformDefaultsV3", "parameters": [ { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Platform defaults retrieved", "schema": { "$ref": "#/definitions/model.PlatformDefaultsResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Third Party Platform Defaults", "tags": [ "Third Party Credential" ], "x-errorCodes": {}, "x-operationid": "iam/admin/platform-credentials/v3/get-defaults", "x-security": {} } }, "/iam/v3/admin/roles": { "get": { "description": "Retrieves a paginated list of roles.", "operationId": "AdminGetRolesV3", "parameters": [ { "description": "The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "- true if the expected result should only returns records with wildcard = true\n- false if the expected result should only returns records with wildcard = false\n- empty (omitted) if the expected result should returns records with no wildcard filter at all", "in": "query", "name": "isWildcard", "type": "boolean", "x-omitempty": false }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleResponseWithManagersAndPaginationV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Roles", "tags": [ "Roles" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/list", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a new role.", "operationId": "AdminCreateRoleV3", "parameters": [ { "description": "Role creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleCreateV3Request" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/accountcommon.RoleV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10466\u003c/td\u003e\u003ctd\u003einvalid role members\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create Role", "tags": [ "Roles" ], "x-errorCodes": { "10466": "invalid role members", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v3/create", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [CREATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}": { "delete": { "description": "Deletes a role by its ID. Removes the role from all assigned users first.", "operationId": "AdminDeleteRoleV3", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20009\u003c/td\u003e\u003ctd\u003erequest_conflict\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20009": "request_conflict", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/delete", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [DELETE]" ] } ] }, "get": { "description": "Retrieves a role by its ID.", "operationId": "AdminGetRoleV3", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/get", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates a role.", "operationId": "AdminUpdateRoleV3", "parameters": [ { "description": "Role update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleUpdateRequestV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v3/update", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/admin": { "delete": { "description": "Removes admin status from a role.", "operationId": "AdminRemoveRoleAdminV3", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Remove Role Admin Status", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/remove-admin-status", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Admin roles has its members listed in the role.", "operationId": "AdminGetRoleAdminStatusV3", "parameters": [ { "description": "Role id, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleAdminStatusResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Role Admin Status", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/get-admin-status", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "description": "Admin roles has its members listed in the role.\nRole can be set as admin role only when it has at least 1 manager.", "operationId": "AdminUpdateAdminRoleStatusV3", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10467\u003c/td\u003e\u003ctd\u003erole has no manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Set Role as Admin Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "10467": "role has no manager", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/update-admin-status", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/managers": { "delete": { "consumes": [ "application/json" ], "description": "Role can only be assigned to other users by the role\u0026#39;s manager.", "operationId": "AdminRemoveRoleManagersV3", "parameters": [ { "description": "Role managers update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleManagersRequestV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Remove Role Managers", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/internal/v3/remove-managers", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Role can only be assigned to other users by the role\u0026#39;s manager.", "operationId": "AdminGetRoleManagersV3", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleManagersResponsesV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Role Managers", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/list-managers", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Role can only be assigned to other users by the role\u0026#39;s manager.", "operationId": "AdminAddRoleManagersV3", "parameters": [ { "description": "Role managers update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleManagersRequestV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10468\u003c/td\u003e\u003ctd\u003erole manager exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add Role Managers", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "10468": "role manager exist", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/internal/v3/add-managers", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/members": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "Admin roles has its members listed in the role.\nRole can only be assigned to other users by the role\u0026#39;s manager.\nDeprecate: Suggest to use this: AdminRevokeUserFromRoleV4", "operationId": "AdminRemoveRoleMembersV3", "parameters": [ { "description": "Role members update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleMembersRequestV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10457\u003c/td\u003e\u003ctd\u003especified role is not admin role\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10459\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Remove Role Members", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "10457": "specified role is not admin role", "10459": "operator is not a role manager", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/internal/v3/remove-members", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Admin roles has its members listed in the role.", "operationId": "AdminGetRoleMembersV3", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleMembersResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Role Members", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/list-members", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Admin roles has its members listed in the role.\nRole can only be assigned to other users by the role\u0026#39;s manager.", "operationId": "AdminAddRoleMembersV3", "parameters": [ { "description": "Role members update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleMembersRequestV3" } }, { "description": "Role id", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10457\u003c/td\u003e\u003ctd\u003especified role is not admin role\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10459\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10469\u003c/td\u003e\u003ctd\u003erole member exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add Role Members", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "10457": "specified role is not admin role", "10459": "operator is not a role manager", "10469": "role member exist", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/internal/v3/add-members", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/permissions": { "delete": { "consumes": [ "application/json" ], "operationId": "AdminDeleteRolePermissionsV3", "parameters": [ { "description": "Array of role member user IDs to remove.", "in": "body", "name": "body", "required": true, "schema": { "items": { "type": "string" }, "type": "array" } }, { "description": "Role id", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete Role Permissions", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/remove-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Attaches permission(s) into the role.\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\nSyntax reference\nFields:\n1. Seconds: 0-59 * / , -\n1. Minutes: 0-59 * / , -\n1. Hours: 0-23 * / , -\n1. Day of month: 1-31 * / , - L W\n1. Month: 1-12 JAN-DEC * / , -\n1. Day of week: 0-6 SUN-SAT * / , - L #\n1. Year: 1970-2099 * / , -\n\nSpecial characters:\n1. *: all values in the fields, e.g. * in seconds fields indicates every second\n1. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n1. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n1. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n1. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n1. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n1. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.", "operationId": "AdminAddRolePermissionsV3", "parameters": [ { "description": "Array of permissions to replace for the role.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.PermissionsV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add Role Permissions", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v3/add-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Replaces role\u0026#39;s permissions with the ones defined in body.\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\nSyntax reference\nFields:\n1. Seconds: 0-59 * / , -\n1. Minutes: 0-59 * / , -\n1. Hours: 0-23 * / , -\n1. Day of month: 1-31 * / , - L W\n1. Month: 1-12 JAN-DEC * / , -\n1. Day of week: 0-6 SUN-SAT * / , - L #\n1. Year: 1970-2099 * / , -\n\nSpecial characters:\n1. *: all values in the fields, e.g. * in seconds fields indicates every second\n1. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n1. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n1. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n1. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n1. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n1. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.", "operationId": "AdminUpdateRolePermissionsV3", "parameters": [ { "description": "Array of permissions to assign to the role.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.PermissionsV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Role Permissions", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v3/update-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/permissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "description": "Deletes a specific permission from a role.", "operationId": "AdminDeleteRolePermissionV3", "parameters": [ { "description": "Action, value must be in range 1-15", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Resource Name", "in": "path", "name": "resource", "required": true, "type": "string" }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Role Permission", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v3/remove-permission", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/users/me": { "get": { "description": "Get my user data", "operationId": "AdminGetMyUserV3", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get My User", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20022": "token is not user token" }, "x-operationid": "iam/admin/users/v3/get-my", "x-security": {} } }, "/iam/v3/authenticate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Authenticates a user account. Validates user\u0026#39;s email / username and password.\nDeactivated or login-banned users are unable to login.\nRedirect URI and Client ID must be specified as a pair and only used to redirect to the specified redirect URI in case the requestId is no longer valid.\n\n## Device Cookie Validation\n\nDevice Cookie is used to protect the user account from brute force login attack, [more detail from OWASP](https://owasp.org/www-community/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies).\nIt will read the device cookie from cookie **auth-trust-id**. If device cookie not found, it will generate a new one and sets it into the cookie on successful authentication.", "operationId": "UserAuthenticationV3", "parameters": [ { "description": "Account password", "in": "formData", "name": "password", "required": true, "type": "string" }, { "description": "Request ID", "in": "formData", "name": "request_id", "required": true, "type": "string" }, { "description": "Account username", "in": "formData", "name": "user_name", "required": true, "type": "string" }, { "description": "Client ID", "in": "formData", "name": "client_id", "type": "string" }, { "description": "Extend expiration date of refresh token", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false }, { "description": "Redirect URI", "in": "formData", "name": "redirect_uri", "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirect successful requests to consent page with \"list of consent\" in query params.", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "summary": "Authentication API", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-location-query": "code", "x-operationid": "iam/public/oauth2/v3/authenticate" } }, "/iam/v3/authenticateWithLink": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Authenticates a user account and performs platform linking. Validates user\u0026#39;s email / username and password.\nIf user already enabled 2FA, invoke _/mfa/verify_ using **mfa_token** from the response.\n\n## Device Cookie Validation\nDevice Cookie is used to protect the user account from brute force login attack, [more detail from OWASP](https://owasp.org/www-community/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies).\nIt will read the device cookie from cookie **auth-trust-id**. If device cookie not found, it will generate a new one and sets it into the cookie on successful authentication.\n\n## Login Queue\nWhen the Login Queue is enabled and at capacity, this API returns a 401 Unauthorized response, with the queue ticket included in the response body.", "operationId": "AuthenticationWithPlatformLinkV3", "parameters": [ { "description": "Client ID", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "Platform linking Token", "in": "formData", "name": "linkingToken", "required": true, "type": "string" }, { "description": "Account password", "in": "formData", "name": "password", "required": true, "type": "string" }, { "description": "Account username", "in": "formData", "name": "username", "required": true, "type": "string" }, { "description": "Extend expiration date of refresh token", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to authenticate and link platform account.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "400": { "description": "Invalid username or password.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "Need 2FA.", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "User already link this platform's another account'.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Authentication with platform link", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": { "10213": "country is blocked" }, "x-operationid": "iam/public/oauth2/v3/authenticate-with-link" } }, "/iam/v3/authenticateWithLink/forward": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Authenticates a user account and performs platform linking. Validates user\u0026#39;s email / username and password.\nIf user already enabled 2FA, invoke _/mfa/verify_ using **mfa_token** from the response.\n\n## Device Cookie Validation\n\nDevice Cookie is used to protect the user account from brute force login attack, [more detail from OWASP](https://owasp.org/www-community/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies).\nIt will read the device cookie from cookie **auth-trust-id**. If device cookie not found, it will generate a new one and sets it into the cookie on successful authentication.", "operationId": "AuthenticateAndLinkForwardV3", "parameters": [ { "description": "Client ID", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "Platform linking Token", "in": "formData", "name": "linkingToken", "required": true, "type": "string" }, { "description": "Account password", "in": "formData", "name": "password", "required": true, "type": "string" }, { "description": "Account username", "in": "formData", "name": "username", "required": true, "type": "string" }, { "description": "Extend expiration date of refresh token", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirect to clients redirection URL with code or redirect to login web with error on the query parameter", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Authentication with platform link, the response will be a forward", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/authenticate-with-link-forward" } }, "/iam/v3/config/public": { "get": { "operationId": "PublicGetSystemConfigV3", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.InternalConfigResponseV3" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Public System Config Value", "tags": [ "Config" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/config/v3/get-public" } }, "/iam/v3/headless/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Creates a headless account after 3rd-party platform authentication and returns a token.\nThe \u0026#39;linkingToken\u0026#39; in request body is received from \u0026#34;/platforms/{platformId}/token\u0026#34; when 3rd platform account is not linked to any account yet and createHeadless param is set to false.", "operationId": "GenerateTokenByNewHeadlessAccountV3", "parameters": [ { "description": "Platform linking Token", "in": "formData", "name": "linkingToken", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" }, { "description": "Extend expiration date of refresh token", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to create headless account and response token info.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "400": { "description": "Invalid platform linking token or clientID not match.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Platform linking token not found.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "summary": "Create headless account and response token", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": { "10213": "country is blocked" }, "x-operationid": "iam/public/oauth2/v3/generate-token-for-headless-account" } }, "/iam/v3/link/code/request": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Requests a one-time code [8 characters] for a headless account to link or upgrade to a full account.\nShould specify the target platform id and current user should already linked to this platform.\nCurrent user should be a headless account.\n## Supported platforms:\n- **steam**\n- **steamopenid**\n- **facebook**\n- **google**\n- **googleplaygames**\n- **oculus**\n- **twitch**\n- **discord**\n- **android**\n- **ios**\n- **apple**\n- **device**\n- **justice**\n- **epicgames**\n- **ps4**\n- **ps5**\n- **nintendo**\n- **awscognito**\n- **live**\n- **xblweb**\n- **netflix**\n- **snapchat**", "operationId": "RequestOneTimeLinkingCodeV3", "parameters": [ { "description": "Target platform ID for linking", "in": "formData", "name": "platformId", "required": true, "type": "string" }, { "description": "Redirect uri", "in": "formData", "name": "redirectUri", "type": "string" }, { "description": "State", "in": "formData", "name": "state", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to one time code.", "schema": { "$ref": "#/definitions/oauthmodel.OneTimeLinkingCodeResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate One-Time Linking Code", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/request-one-time-linking-code", "x-security": {} } }, "/iam/v3/link/code/validate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Validates a one-time link code.", "operationId": "ValidateOneTimeLinkingCodeV3", "parameters": [ { "description": "one time linking code", "in": "formData", "name": "oneTimeLinkCode", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to validate one time code.", "schema": { "$ref": "#/definitions/oauthmodel.OneTimeLinkingCodeValidationResponse" } } }, "security": [], "summary": "Validate One-Time Linking Code", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/validate-one-time-linking-code" } }, "/iam/v3/link/token/exchange": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Generates the user\u0026#39;s token by one-time link code.\nIt requires a code which can be generated from \u0026lt;code\u0026gt;/iam/v3/link/code/request [POST]\u0026lt;/code\u0026gt; or \u0026lt;code\u0026gt;/iam/v3/public/users/me/link/redirection [GET]\u0026lt;/code\u0026gt;.\n\nSupports creating a transient token by utilizing the **isTransient** param:\n**isTransient=true** will generate a transient token with a short Time Expiration and without a refresh token\n**isTransient=false** will consume the one-time code and generate the access token with a refresh token.", "operationId": "RequestTokenByOneTimeLinkCodeResponseV3", "parameters": [ { "description": "client id", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "one time linking code", "in": "formData", "name": "oneTimeLinkCode", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" }, { "default": false, "description": "will produce transient token ", "in": "formData", "name": "isTransient", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to generate user token by one time link code.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } } }, "security": [], "summary": "Generate Token by Headless Account's One-Time Link Code", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/exchange-token-with-linking-code" } }, "/iam/v3/location/country": { "get": { "consumes": [ "*/*" ], "description": "Returns the country location based on the request.", "operationId": "GetCountryLocationV3", "produces": [ "application/json" ], "responses": { "200": { "description": "Country Location info returned", "schema": { "$ref": "#/definitions/oauthmodel.CountryLocationResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Country Location", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/get-country-location" } }, "/iam/v3/logout": { "post": { "consumes": [ "*/*" ], "description": "Removes **access_token** and **refresh_token** from the cookie.", "operationId": "Logout", "produces": [ "application/json" ], "responses": { "204": { "description": "Logout successfully" } }, "security": [ { "authorization": [] } ], "summary": "Logout", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/logout", "x-security": {} } }, "/iam/v3/namespace/{namespace}/token/request": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Requests the code to exchange for a new token.\nThe target new token\u0026#39;s clientId should NOT be same with current using one.\nPath namespace should be target namespace.\nClient ID should match the target namespace.\n\nThe code in response can be consumed by \u0026lt;code\u0026gt;/iam/v3/token/exchange [POST]\u0026lt;/code\u0026gt;", "operationId": "RequestTokenExchangeCodeV3", "parameters": [ { "description": "Client ID for target namespace", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Value generated by transforming code verifier using code challenge method.", "in": "query", "name": "code_challenge", "type": "string" }, { "default": "plain", "description": "Method that is used to transform code verifier to code challenge", "enum": [ "S256", "plain" ], "in": "query", "name": "code_challenge_method", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to request token exchange code.", "schema": { "$ref": "#/definitions/oauthmodel.TargetTokenCodeResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Request code to get a new token", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/request-token-exchange-code", "x-security": {} } }, "/iam/v3/oauth/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/platformToken": { "get": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Admin Retrieve User Third Party Platform Token\nRetrieves third party platform token for users that logged in using a third party platform.\nIf the user has not linked the requested platform in the game namespace, attempts to retrieve the token from the publisher namespace.\nPassing platform group name or it\u0026#39;s member will return same access token that can be used across the platform members.\nIf platformUserId provided, IAM will prefer to get platform token by platform user id.\n\nNotes:\nThe third party platform and platform group covered for this is:\n- (psn) ps4web\n- (psn) ps4\n- (psn) ps5\n- epicgames\n- twitch\n- awscognito\n- amazon\n- eaorigin\n- snapchat\n- twitch\n- live", "operationId": "AdminRetrieveUserThirdPartyPlatformTokenV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "UserId", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Platform user id.", "in": "query", "name": "platformUserId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenThirdPartyResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "Unauthorized access", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "404": { "description": "Platform Token Not Found", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Retrieve User Third Party Platform Token", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/admin/oauth2/v3/get-platform-token", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/oauth/admin/namespaces/{namespace}/users/{userId}/revoke": { "post": { "consumes": [ "*/*" ], "description": "Revokes all access tokens and refresh tokens a user has prior to the revocation time.\n\n**Namespace restriction for includeGameNamespace:** When the query parameter includeGameNamespace is set to true, the {namespace} path parameter must be a **publisher namespace**. Passing a game namespace with includeGameNamespace=true returns HTTP 400.", "operationId": "RevokeUserV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User to be revoked", "in": "path", "name": "userId", "required": true, "type": "string" }, { "default": false, "description": "\u003cp\u003eThis queryParameter only works when utilizing userID and namespace publisher.\u003c/p\u003e \u003cp\u003eIf true, the system will revoke all game account under the publisher account.\u003c/p\u003e", "in": "query", "name": "includeGameNamespace", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "204": { "description": "user revoked" }, "400": { "description": "invalid input", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Token is not exist, expired, or invalid", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "insufficient permission", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke User's Tokens", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/admin/oauth2/v3/revoke-user", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/oauth/authorize": { "get": { "consumes": [ "*/*" ], "description": "Initializes OAuth2.0 authorization code flow.\nStores the authorization request and redirects to the login page with the authorization request id.\nThe user can then do the authentication on the login page.\nThe user will be redirected back to the requesting client with authorization code if successfully authenticated.\n\nOnly authorization code flow is supported; implicit flow is not supported.\n- **Authorize success**: \n\tredirects to login page with the following information: ?request_id={authorization_request_id}\n- **Authorize failure**: \n\tredirects to the given redirect uri with the following information:\n\t?error={error_code}\u0026amp;error_description={error description}\t\t\t\t\n\nFor Public Client case, it\u0026#39;s mandatory to fill **code_challenge** to avoid authorization code interception attack.\nPlease refer to the RFC for more information about Proof Key for Code Exchange(PKCE): https://datatracker.ietf.org/doc/html/rfc7636 \n\nFollowing are the error code based on the specification:\n- invalid_request: The request is missing a required parameter, \n\tincludes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.\n- server_error: \n\tThe authorization server encountered an unexpected condition that prevented it from fulfilling the request.\n- unauthorized_client: The client is not authorized to request a token using this method.\n- access_denied: The resource owner or authorization server denied the request.\n- invalid_scope: The requested scope is invalid, unknown, or malformed.\n- unsupported_response_type: The authorization server does not support obtaining a token using this method.\n- temporarily_unavailable: The authorization server is currently unable to handle the request \n\tdue to a temporary overloading or maintenance of the server.\nPlease refer to the RFC for more information about authorization code flow: https://tools.ietf.org/html/rfc6749#section-4.1", "operationId": "AuthorizeV3", "parameters": [ { "description": "Registered client ID", "in": "query", "name": "client_id", "required": true, "type": "string" }, { "default": "code", "description": "Supported response type : 'code'", "enum": [ "code" ], "in": "query", "name": "response_type", "required": true, "type": "string" }, { "description": "The platform should be blocked in login website, for example, the platform that generate the one time link code should be blocked in login website", "in": "query", "name": "blockedPlatformId", "type": "string" }, { "description": "Value generated by transforming code verifier using code challenge method. Mandatory for public client.", "in": "query", "name": "code_challenge", "type": "string" }, { "default": "plain", "description": "Method that is used to transform code verifier to code challenge", "enum": [ "S256", "plain" ], "in": "query", "name": "code_challenge_method", "type": "string" }, { "default": true, "description": "If create new headless account when login by new third platform user", "in": "query", "name": "createHeadless", "type": "boolean", "x-omitempty": false }, { "default": false, "description": "If need use new login web based OAuth flow", "in": "query", "name": "loginWebBased", "type": "boolean", "x-omitempty": false }, { "description": "The nonce parameter complies with the OIDC standard documentation: https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest", "in": "query", "name": "nonce", "type": "string" }, { "description": "One time link code for headless account to link. Can get from [/iam/v3/link/code/request]", "in": "query", "name": "oneTimeLinkCode", "type": "string" }, { "description": "Redirect URI registered for requesting client. Required if client registered with multiple redirect URI. Registered redirect uri will be assigned if left empty.", "in": "query", "name": "redirect_uri", "type": "string" }, { "default": "commerce account social publishing analytics", "description": "Defines the requested access request scope. Can be multiple values delimited by whitespace.", "in": "query", "name": "scope", "type": "string" }, { "description": "Random value for preventing cross-site request forgery used by client.", "in": "query", "name": "state", "type": "string" }, { "description": "Custom query to tell authorization web which page to present to user", "in": "query", "name": "target_auth_page", "type": "string" }, { "default": false, "description": "Use Redirect URI as the Login URL after resetting password when got locked", "in": "query", "name": "useRedirectUriAsLoginUrlWhenLocked", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirected to login page with either request_id or error.", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "summary": "OAuth2 authorize API", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-location-query": "request_id", "x-operationid": "iam/public/oauth2/v3/authorize" } }, "/iam/v3/oauth/introspect": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Returns information about an access token intended to be used by resource servers or other internal servers.\nRequires authorized requests header with valid basic or bearer token.", "operationId": "TokenIntrospectionV3", "parameters": [ { "description": "Access Token / Refresh Token", "in": "formData", "name": "token", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/oauthmodel.TokenIntrospectResponse" } }, "400": { "description": "invalid input", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "invalid bearer or basic authorization header", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "basic": [] }, { "authorization": [] } ], "summary": "OAuth2 token introspection API", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/check-token" } }, "/iam/v3/oauth/jwks": { "get": { "consumes": [ "*/*" ], "description": "Serves public keys for verifying JWT access tokens generated by this service.\nWhen a client application wants to verify a JWT token, it needs to get the \u0026#39;kid\u0026#39; value found in the JWT token header and use it\nto look up the corresponding public key from a set returned by this API. The client application can then use that public key to verify the JWT.\nA client application might cache the keys so it doesn\u0026#39;t need to do a request every time it needs to verify a JWT token. If a client application\ncaches the keys and a key with the same \u0026#39;kid\u0026#39; cannot be found in the cache, it should then try to refresh the keys by making a request to this\nAPI again.\nPlease refer to the RFC for more information about JWK (JSON Web Key): https://tools.ietf.org/html/rfc7517", "operationId": "GetJWKSV3", "produces": [ "application/json" ], "responses": { "200": { "description": "JWKS returned", "schema": { "$ref": "#/definitions/oauthcommon.JWKSet" } } }, "security": [ { "authorization": [] } ], "summary": "JSON Web Key Set for verifying JWT", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/get-jwks" } }, "/iam/v3/oauth/mfa/code": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Send 2FA code\nSends the 2FA code.", "operationId": "SendMFAAuthenticationCode", "parameters": [ { "description": "client id", "in": "formData", "name": "clientId", "required": true, "type": "string" }, { "description": "factor", "in": "formData", "name": "factor", "required": true, "type": "string" }, { "description": "mfa token", "in": "formData", "name": "mfaToken", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Code sent" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10189\u003c/td\u003e\u003ctd\u003einvalid factor\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Send 2FA code", "tags": [ "OAuth2.0" ], "x-errorCodes": { "10189": "invalid factor", "20000": "internal server error", "20002": "validation error", "20003": "forbidden access", "20007": "too many requests", "20008": "user not found" }, "x-operationid": "iam/public/oauth2/v3/send-mfa-code" } }, "/iam/v3/oauth/mfa/factor/change": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Change 2FA method\nChanges the 2FA method. Only enabled methods are accepted.\nSupported methods:\n- authenticator\n- backupCode\n- email", "operationId": "Change2FAMethod", "parameters": [ { "description": "factor", "in": "formData", "name": "factor", "required": true, "type": "string" }, { "description": "mfa token", "in": "formData", "name": "mfaToken", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Method changed" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10189\u003c/td\u003e\u003ctd\u003einvalid factor\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Change 2FA method", "tags": [ "OAuth2.0" ], "x-errorCodes": { "10189": "invalid factor", "20000": "internal server error", "20002": "validation error", "20007": "too many requests" }, "x-operationid": "iam/public/oauth2/v3/change-mfa-method" } }, "/iam/v3/oauth/mfa/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Verifies the 2FA code.\n\n## 2FA remember device\nTo remember device for 2FA, the request should provide cookie: device_token or header: Device-Token", "operationId": "Verify2FACode", "parameters": [ { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "factor", "in": "formData", "name": "factor", "required": true, "type": "string" }, { "description": "mfa token", "in": "formData", "name": "mfaToken", "required": true, "type": "string" }, { "description": "remember device", "in": "formData", "name": "rememberDevice", "required": true, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Verify 2FA code", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/verify-mfa-code" } }, "/iam/v3/oauth/mfa/verify/forward": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Verifies the 2FA code.\n\nThis is a forward version for \u0026#39;/mfa/verify\u0026#39;. If there is any error, it will redirect to login website with error details.\nIf success, it will forward to auth request redirect url.\nIf got error, it will forward to login website.\n\n## 2FA remember device\nTo remember device for 2FA, the request should provide cookie: device_token or header: Device-Token", "operationId": "Verify2FACodeForward", "parameters": [ { "description": "client id", "in": "formData", "name": "clientId", "required": true, "type": "string" }, { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "factor", "in": "formData", "name": "factor", "required": true, "type": "string" }, { "description": "mfa token", "in": "formData", "name": "mfaToken", "required": true, "type": "string" }, { "description": "default factor, can be retrieved from the previous step", "in": "formData", "name": "defaultFactor", "type": "string" }, { "description": "factors, can be retrieved from the previous step", "in": "formData", "name": "factors", "type": "string" }, { "default": false, "description": "remember device", "in": "formData", "name": "rememberDevice", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirect to clients redirection URL with code or redirect to login web with error on the query parameter", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Verify 2FA code", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/verify-mfa-code-forward" } }, "/iam/v3/oauth/namespace/{namespace}/register": { "post": { "consumes": [ "application/json" ], "description": "Implements OAuth 2.0 Dynamic Client Registration Management Protocol as defined in RFC 7591. \n\nEnables public users to register with an authorization server, obtaining an OAuth client dynamically without manual intervention.\n\n📋 Standards Compliance: This API fully conforms to RFC 7591 specifications for OAuth 2.0 Dynamic Client Registration.\n\n⚠️ Security Notice: Protected by IP-based rate limiting to prevent abuse while maintaining RFC 7591 compliance.\n", "operationId": "OAuthDynamicClientRegisterWithNamespaceV3", "parameters": [ { "description": "OAuth client registration update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/oauthmodel.ClientRegistrationRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/oauthmodel.ClientRegisterResponse" } }, "400": { "description": "\nPossible error field values in the response:\n\u003cul\u003e\n\u003cli\u003einvalid_client_metadata\u003c/li\u003e\n\u003cli\u003einvalid_client_namespace\u003c/li\u003e\n\u003c/ul\u003e", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\nPossible error field values in the response:\n\u003cul\u003e\n\u003cli\u003eserver_error\u003c/li\u003e\n\u003c/ul\u003e", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "501": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003enot implemented\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "[Dynamic client register] Register Client", "tags": [ "OAuth2.0" ], "x-errorCodes": { "20007": "too many requests", "20024": "not implemented" }, "x-operationid": "iam/public/oauth2/v3/dynamic-client-register-by-namespace" } }, "/iam/v3/oauth/namespaces/{namespace}/users/{userId}/platforms/{platformId}/platformToken": { "get": { "consumes": [ "*/*" ], "description": "Retrieve User Third Party Platform Token\nRetrieves third party platform token for users that logged in using a third party platform.\nIf the user has not linked the requested platform in the game namespace, attempts to retrieve the token from the publisher namespace.\nPassing platform group name or it\u0026#39;s member will return same access token that can be used across the platform members. \n\nThe third party platform and platform group covered for this is:\n- (psn) ps4web\n- (psn) ps4\n- (psn) ps5\n- epicgames\n- twitch\n- awscognito\n- \u0026lt;amazon/li\u0026gt;\n- eaorigin\n- snapchat\n- twitch\n- live\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "RetrieveUserThirdPartyPlatformTokenV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "UserId. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenThirdPartyResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "Unauthorized access", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "404": { "description": "Platform Token Not Found", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Retrieve User Third Party Platform Token", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/get-platform-token", "x-security": {} } }, "/iam/v3/oauth/platforms/{platformId}/authorize": { "get": { "consumes": [ "*/*" ], "description": "Generate url to request auth code from third party platform\n## Supported platforms:\n- **steamopenid** Redirects to steam login page, then redirects back to the platform authenticate API after successfully authenticating user steam.\n- **xblweb** Redirects to xbox login page, then redirects back to the platform authenticate API after successfully authenticating xbox user.\n- **ps4web** Redirects to psn login page, then redirects back to the platform authenticate API after successfully authenticating psn user.\n- **epicgames** Redirects to Epicgames OAuth login page, then redirects to the platform authenticate API after successfully authenticating an Epicgames credential.\n- **twitch** Redirects to twitch login page, then redirects back to the platform authenticate API after successfully authenticating twitch user.\n- **azure** Redirects to azure login page, then redirects back to the platform authenticate(saml) API after successfully authenticating azure user.\n- **facebook** Redirects to facebook login page, then redirects back to the platform authenticate API after successfully authenticating facebook user.\n- **google** Redirects to google login page, then redirects back to the platform authenticate API after successfully authenticating google user.\n- **snapchat** Redirects to snapchat login page, then redirects back to the platform authenticate API after successfully authenticating snapchat user.\n- **discord** Redirects to discord login page, then redirects back to the platform authenticate API after successfully authenticating discord user.\n- **amazon** Redirects to amazon login page, then redirects back to the platform authenticate API after successfully authenticating amazon user.\n- **oculusweb** Redirects to oculus login page, then redirects back to Login Website page after successfully authenticating oculus user.", "operationId": "AuthCodeRequestV3", "parameters": [ { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Request ID retrieved from authorize API ([GET] iam/v3/oauth/authorize)", "in": "query", "name": "request_id", "required": true, "type": "string" }, { "description": "Client ID", "in": "query", "name": "client_id", "type": "string" }, { "description": "Redirect URI", "in": "query", "name": "redirect_uri", "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirect to client’s redirect URI with either code or error on the query parameter", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Generate URL to Request Auth Code from Third Party Platform", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-location-query": "code", "x-operationid": "iam/public/oauth2/v3/authorize-platform" } }, "/iam/v3/oauth/platforms/{platformId}/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Platform token grant specifically used for performing token grant using platform, e.g. Steam, Device, etc.\nAutomatically creates a headless account if the account associated with the platform does not exist yet, unless the createHeadless param is set to false.\nRequires all requests to have Authorization header set with Basic access authentication constructed from client id and client secret (only if using Confidential Client type). For more details on client types, refer to the [documentation guide](https://docs.accelbyte.io/gaming-services/modules/foundations/identity-access/authorization/manage-access-control-for-applications/#iam-client-types)\n\n## Request Payload\nDevice token grant should be requested along with device_id parameter. \nThe other 3rd party platform token grant should be requested along with platform_token parameter.\n\n## Supported platforms\n- **steam**: The platform_token’s value is the binary ticket returned by Steam.\n\tIf this ticket was generated by Steam GetAuthTicketForWebApi with version \u0026gt;= 1.57, then platform token should use this style: \u0026lt;code\u0026gt;{identity}:{ticket}\u0026lt;/code\u0026gt;, the \u0026lt;code\u0026gt;{identity}\u0026lt;/code\u0026gt; was the parameter to call GetAuthTicketForWebApi when the ticket was created. Note: Do not contain \u0026lt;code\u0026gt;:\u0026lt;/code\u0026gt; in this \u0026lt;code\u0026gt;{identity}\u0026lt;/code\u0026gt;.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The platform_token\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The platform_token’s value is the authorization code returned by Facebook OAuth\n- **google**: The platform_token’s value is the authorization code or idToken returned by Google OAuth\n- **googleplaygames**: The platform_token’s value is the authorization code or idToken returned by Google play games OAuth\n- **oculus**: The platform_token’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The platform_token’s value is the authorization code returned by Twitch OAuth.\n- **discord**: The platform_token’s value is the authorization code returned by Discord OAuth\n- **android**: The device_id is the Android’s device ID\n- **ios**: The device_id is the iOS’s device ID.\n- **apple**: The platform_token’s value is the authorization code or idToken returned by Apple OAuth.(We will use this code to generate APP token)\n- **device**: Every device that doesn\u0026#39;t run Android and iOS is categorized as a device. The device_id is the device’s ID.\n- **justice**: The platform_token’s value is the designated user’s access token.\n- **epicgames**: The platform_token’s value is an access-token or authorization code obtained from Epicgames EOS Account Service.\n- **ps4**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **ps5**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **nintendo**: The platform_token’s value is the id_token returned by Nintendo OAuth.\n- **awscognito**: The platform_token’s value is the aws cognito access token or id token (JWT).\n- **live**: The platform_token’s value is xbox XSTS token\n- **xblweb**: The platform_token’s value is code returned by xbox after login\n- **netflix**: The platform_token’s value is GAT (Gamer Access Token) returned by Netflix backend\n- **snapchat**: The platform_token’s value is the authorization code returned by Snapchat OAuth.\n- **for specific generic oauth (OIDC)**: The platform_token’s value should be the same type as created OIDC auth type whether it is auth code, idToken or bearerToken.\n\n## Account Group\nSeveral platforms are grouped under account groups. The accounts on these platforms have the same platform user id. \nLogin using one of these platform will returns the same IAM user. \nFollowing is the current registered account grouping:\n- Steam group(steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group(psn)\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox) \n\t- live\n\t- xblweb\n- Oculus group(oculusgroup) \n\t- oculus\n\t- oculusweb\n\n## Access Token Content\nFollowing is the access token’s content:\n- **namespace**. It is the namespace the token was generated from.\n- **display_name**. The display name of the sub. It is empty if the token is generated from the client credential\n- **roles** (deprecated). The sub’s roles. It is empty if the token is generated from the client credential\n- **namespace_roles**. The sub’s roles scoped to namespace. Improvement from roles, which make the role scoped to specific namespace instead of global to publisher namespace\n- **permissions**. The sub or aud’ permissions\n- **bans**. The sub’s list of bans. It is used by the IAM client for validating the token.\n- **jflgs**. It stands for Justice Flags. It is a special flag used for storing additional status information regarding the sub. It is implemented as a bit mask. Following explains what each bit represents:\n\t- 1: Email Address Verified\n\t- 2: Phone Number Verified\n\t- 4: Anonymous\n\t- 8: Suspicious Login\n- **aud**. The aud is the client ID.\n- **iat**. The time the token issues at. It is in Epoch time format\n- **exp**. The time the token expires. It is in Epoch time format\n- **sub**. The UserID. The sub is omitted if the token is generated from client credential\n\n## Bans\nThe JWT contains user\u0026#39;s active bans with its expiry date. List of ban types can be obtained from /bans.\n\t\t\n## 2FA remember device\nTo remember device for 2FA, the request should provide cookie: device_token or header: Device-Token\n\n## Login Queue\nWhen the Login Queue is enabled and at capacity, this API returns a 401 Unauthorized response, with the queue ticket included in the response body.\n\n## Legal eligibility check\nIf user hasn\u0026#39;t accepted required legal policy (if any), the field \u0026lt;code\u0026gt;is_comply\u0026lt;/code\u0026gt; will be false in response and response token will have no permission.", "operationId": "PlatformTokenGrantV3", "parameters": [ { "description": "Platform ID to login with", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" }, { "description": "Client ID, only accept UUID version 4 without hyphen", "in": "formData", "name": "client_id", "type": "string" }, { "default": true, "description": "If directly create new account when not linked yet", "in": "formData", "name": "createHeadless", "type": "boolean", "x-omitempty": false }, { "description": "Device/hardware identifier", "in": "formData", "name": "device_id", "type": "string" }, { "description": "Mac address of device", "in": "formData", "name": "macAddress", "type": "string" }, { "description": "Token from platform auth", "in": "formData", "name": "platform_token", "type": "string" }, { "description": "Service label, it's used to validate PSN app when set AppId on ps5/ps4", "in": "formData", "name": "serviceLabel", "type": "number" }, { "default": false, "description": "If need skip set cookie. Default is false", "in": "formData", "name": "skipSetCookie", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponse" } }, "400": { "description": "General request error", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "503": { "description": "Third Party Server timeout or unavailable", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "summary": "OAuth2 access token generation specific to platform", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/grant-by-platform" } }, "/iam/v3/oauth/revocationlist": { "get": { "consumes": [ "*/*" ], "description": "Returns a list of revoked users and revoked tokens. List of revoked tokens in bloom filter format.\nRequires all requests to have Authorization header set with Basic access authentication constructed from client id and client secret.\nThe bloom filter uses MurmurHash3 algorithm for hashing the values", "operationId": "GetRevocationListV3", "produces": [ "application/json" ], "responses": { "200": { "description": "Revocation list returned", "schema": { "$ref": "#/definitions/oauthapi.RevocationList" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "summary": "OAuth2 revocation list API", "tags": [ "OAuth2.0" ], "x-errorCodes": { "20001": "unauthorized access" }, "x-operationid": "iam/public/oauth2/v3/list-revocations" } }, "/iam/v3/oauth/revoke": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Revokes a token.\nRequires authorized requests header with Basic Authentication from the client that established the token.", "operationId": "TokenRevocationV3", "parameters": [ { "description": "Access token / Refresh token", "in": "formData", "name": "token", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token revoked or does not exist" }, "400": { "description": "Invalid input", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Invalid basic auth header", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "summary": "OAuth2 token revocation API", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/revoke-token" } }, "/iam/v3/oauth/simultaneousLogin": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "# This API is in ALPHA, avoid using this API for now, reach out to AB support for inquiries\n\t\nSimultaneous login flow. \n\nThe primary goals of this project are to entitle players to authenticate on a native PC platform(Steam/Epic) and the PlayStation platform, \nlink their accounts, and provide support for platform sync with a valid 3rd platform access token.\n\n## Given a valid native ticket and empty simultaneous ticket, these cases will be failed\n- Native ticket\u0026#39;s account is not linked AGS account yet\n- Native ticket\u0026#39;s account is linked AGS account, but AGS account is not linked simultaneous platform yet\n- Native ticket\u0026#39;s account is linked AGS account, AGS account is linked simultaneous platform but there is no available simultaneous token.(only if this platform is expected to store the platform token)\n\n## Given a valid native ticket and empty simultaneous ticket, this case will be success\n- Native ticket\u0026#39;s account already linked AGS account, this AGS account already linked simultaneous platform. There is valid simultaneous token.(this is required only when this simultaneous is expected to cache platform token)\n\n## Given a valid native ticket token and valid simultaneous ticket, these cases will be failed\n#### Native ticket\u0026#39;s account is already linked with AGS account\n- Native linked AGS account is linked this simultaneous platform but is different with simultaneous ticket\u0026#39;s account\n- Native linked AGS account is not linked with simultaneous but has a linking history with simultaneous platform and it is different with simultaneous ticket\u0026#39;s account\n#### Native ticket\u0026#39;s account is not linked with AGS account and Simultaneous ticket\u0026#39;s account is already linked wth AGS account\n- Simultaneous linked AGS account is linked this native platform but is different with native ticket\u0026#39;s account\n- Simultaneous linked AGS account is not linked with native but has a linking history with native platform and it is different with native ticket\u0026#39;s account\n\n## Given a valid native ticket and valid simultaneous ticket, these cases will be success\n- Native ticket\u0026#39;s account \u0026amp; Simultaneous ticket\u0026#39;s account are both not linked to AGS account yet\n- Native ticket\u0026#39;s account \u0026amp; Simultaneous ticket\u0026#39;s account are already linked to same AGS account\n", "operationId": "SimultaneousLoginV3", "parameters": [ { "description": "Native platform id", "enum": [ "epicgames", "steam" ], "in": "formData", "name": "nativePlatform", "required": true, "type": "string" }, { "description": "Native platform ticket", "in": "formData", "name": "nativePlatformTicket", "required": true, "type": "string" }, { "description": "Simultaneous platform", "in": "formData", "name": "simultaneousPlatform", "type": "string" }, { "description": "Simultaneous ticket, can be authCode,authTicket,authToken", "in": "formData", "name": "simultaneousTicket", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10216\u003c/td\u003e\u003ctd\u003eNative ticket is required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10215\u003c/td\u003e\u003ctd\u003eSimultaneous ticket is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10220\u003c/td\u003e\u003ctd\u003eNative ticket's account linked AGS account is different with the one which simultaneous ticket's linked to\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10219\u003c/td\u003e\u003ctd\u003eNative ticket's account linked AGS is already linked simultaneous but different with the input simultaneous ticket's\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10217\u003c/td\u003e\u003ctd\u003eNative ticket's account linked AGS account has different linking history with input simultaneous ticket's\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10221\u003c/td\u003e\u003ctd\u003eSimultaneous ticket's account linked AGS is already linked native but different with the input native ticket's\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10218\u003c/td\u003e\u003ctd\u003eSimultaneous ticket's account linked AGS account has different linking history with input native ticket's\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Simultaneous login", "tags": [ "OAuth2.0" ], "x-errorCodes": { "10215": "Simultaneous ticket is required", "10216": "Native ticket is required", "10217": "Native ticket's account linked AGS account has different linking history with input simultaneous ticket's", "10218": "Simultaneous ticket's account linked AGS account has different linking history with input native ticket's", "10219": "Native ticket's account linked AGS is already linked simultaneous but different with the input simultaneous ticket's", "10220": "Native ticket's account linked AGS account is different with the one which simultaneous ticket's linked to", "10221": "Simultaneous ticket's account linked AGS is already linked native but different with the input native ticket's", "20000": "internal server error", "20001": "unauthorized access" }, "x-operationid": "iam/public/oauth2/v3/login-simultaneous" } }, "/iam/v3/oauth/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Supports grant type:\n1. Grant Type == \u0026lt;code\u0026gt;authorization_code\u0026lt;/code\u0026gt;:\n\tIt generates the user token by given the authorization\n\tcode which generated in \u0026#34;/iam/v3/authenticate\u0026#34; API response. It should also pass\n\tin the redirect_uri, which should be the same as generating the\n\tauthorization code request.\n2. Grant Type == \u0026lt;code\u0026gt;password\u0026lt;/code\u0026gt;:\n\tThe grant type to use for authenticating a user, whether it\u0026#39;s by email / username and password combination\n\tor through platform.\n3. Grant Type == \u0026lt;code\u0026gt;refresh_token\u0026lt;/code\u0026gt;:\n\tUsed to get a new access token for a valid refresh token.\n4. Grant Type == \u0026lt;code\u0026gt;client_credentials\u0026lt;/code\u0026gt;:\n\tIt generates a token by checking the client credentials provided through Authorization header.\n5. Grant Type == \u0026lt;code\u0026gt;urn:ietf:params:oauth:grant-type:extend_client_credentials\u0026lt;/code\u0026gt;:\n\tIt generates a token by checking the client credentials provided through Authorization header. \n\tIt only allows publisher/studio namespace client. \n\tIn generated token:\n\t1. There wil be no roles, namespace_roles \u0026amp; permission. \n\t2. The scope will be fixed as \u0026#39;extend\u0026#39;.\n\t3. There will have a new field \u0026#39;extend_namespace\u0026#39;, the value is from token request body.\n\n## Access Token Content\nFollowing is the access token’s content:\n- **namespace**. It is the namespace the token was generated from.\n- **display_name**. The display name of the sub. It is empty if the token is generated from the client credential\n- **roles** (deprecated). The sub’s roles. It is empty if the token is generated from the client credential\n- **namespace_roles**. The sub’s roles scoped to namespace. Improvement from roles, which make the role scoped to specific namespace instead of global to publisher namespace\n- **permissions**. The sub or aud’ permissions\n- **bans**. The sub’s list of bans. It is used by the IAM client for validating the token.\n- **jflgs**. It stands for Justice Flags. It is a special flag used for storing additional status information regarding the sub. It is implemented as a bit mask. Following explains what each bit represents:\n\t- 1: Email Address Verified\n\t- 2: Phone Number Verified\n\t- 4: Anonymous\n\t- 8: Suspicious Login\n- **aud**. The aud is the targeted resource server.\n- **iat**. The time the token issues at. It is in Epoch time format\n- **exp**. The time the token expires. It is in Epoch time format\n- **client_id**. The UserID. The sub is omitted if the token is generated from client credential\t\n- **scope**. The scope of the access request, expressed as a list of space-delimited, case-sensitive strings\n\n## Bans\nThe JWT contains user\u0026#39;s active bans with its expiry date. List of ban types can be obtained from /bans.\n\n## Device Cookie Validation\n_**For grant type \u0026#34;password\u0026#34; only**_\nDevice Cookie is used to protect the user account from brute force login attack, \u0026lt;a target=\u0026#34;_blank\u0026#34; href=\u0026#34;https://owasp.org/www-community/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies\u0026#34;\u0026gt;more detail from OWASP\u0026lt;a\u0026gt;.\nIt will read the device cookie from cookie **Auth-Trust-Id**. If device cookie not found, it will generate a new one and sets it into the response body **auth_trust_id** on successful login.\n\n## Track Login History\nIt will track login history to detect suspicious login activity. Provide **Device-Id** (alphanumeric) in the request header, otherwise it will be set to \u0026#34;unknown\u0026#34;.\nAlign with General Data Protection Regulation in Europe, user login history will be kept within 28 days by default\u0026#34;\n\n## 2FA remember device\nTo remember device for 2FA, the request should provide cookie: device_token or header: Device-Token\n\n## Login Queue\n_**For grant type \u0026#34;code\u0026#34; and \u0026#34;password\u0026#34; only**_\nWhen the Login Queue is enabled and at capacity, this API returns a 401 Unauthorized response, with the queue ticket included in the response body.\n\n## Legal eligibility check\nIf it is a user token request and user hasn\u0026#39;t accepted required legal policy (if any), the field \u0026lt;code\u0026gt;is_comply\u0026lt;/code\u0026gt; will be false in response and response token will have no permission.", "operationId": "TokenGrantV3", "parameters": [ { "default": "authorization_code", "description": "Grant Type", "enum": [ "authorization_code", "client_credentials", "password", "refresh_token", "urn:ietf:params:oauth:grant-type:extend_client_credentials" ], "in": "formData", "name": "grant_type", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" }, { "description": "Client Id (used with grant type 'authorization_code')", "in": "formData", "name": "client_id", "type": "string" }, { "description": "Confidential Client Secret (used with grant type 'authorization_code' when using confidential client with client_secret_post authentication method, i.e. not using HTTP Basic authentication)", "in": "formData", "name": "client_secret", "type": "string" }, { "description": "The authorization code received from the authorization server (used with grant type 'authorization_code')", "in": "formData", "name": "code", "type": "string" }, { "description": "Code verifier received from the authorization server", "in": "formData", "name": "code_verifier", "type": "string" }, { "description": "extend namespace, Used on grant type 'urn:ietf:params:oauth:grant-type:extend_client_credentials'.", "in": "formData", "name": "extendNamespace", "type": "string" }, { "description": "Extend expiration date of refresh token. Only available for grant type 'password'", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false }, { "description": "Password (used with grant type 'password')", "in": "formData", "name": "password", "type": "string" }, { "description": "Redirect URI (used with grant type 'authorization_code')", "in": "formData", "name": "redirect_uri", "type": "string" }, { "description": "Refresh Token (used with grant type 'refresh_token'). This field is optional if the request header provides the \"refresh_token\" cookie", "in": "formData", "name": "refresh_token", "type": "string" }, { "default": "commerce account social publishing analytics", "description": "Defines the access token scope when using grant type 'password' or 'client_credentials'. Can be multiple values delimited by whitespace.", "in": "formData", "name": "scope", "type": "string" }, { "description": "User Name (used with grant type 'password')", "in": "formData", "name": "username", "type": "string" }, { "description": "Auth-Trust-Id for Device Cookie Validation (Used on grant type 'password')", "in": "header", "name": "Auth-Trust-Id", "type": "string" }, { "description": "DeviceID (Used on grant type 'password' to track login history) ex. 90252d14544846d79f367148e3f9a3d9", "in": "header", "name": "device_id", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenWithDeviceCookieResponseV3" } }, "400": { "description": "InvalidRequest", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "Unauthorized access", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "429": { "description": "Too many failed auth attempt", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "summary": "OAuth2 access token generation", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/grant-token" } }, "/iam/v3/oauth/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Requires Basic authentication (Base64-encoded ClientID:ClientSecret) in the Authorization header.", "operationId": "VerifyTokenV3", "parameters": [ { "description": "Token to be verified", "in": "formData", "name": "token", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Access Token verified", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "400": { "description": "Access Token not exist or expired" } }, "summary": "OAuth2 token verification API", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/verify-token" } }, "/iam/v3/platforms/{platformId}/authenticate": { "get": { "consumes": [ "*/*" ], "description": "Authenticates the user\u0026#39;s platform account. Validates the user against their respective platform.\nDeactivated or login-banned users are unable to login.\nIf already linked with a Justice account or matches SSO conditions, redirects to the client\u0026#39;s redirect URL with code — then invoke \u0026#39;/iam/v3/oauth/token\u0026#39; with grant_type=authorization_code.\nIf not yet linked with a Justice account and SSO conditions do not match, redirects to the client\u0026#39;s account linking page.\n## Supported platforms:\n- **steamopenid** — Steam login page will redirect to this API after login success\n\tas previously defined on openID request parameter \u0026lt;code\u0026gt;openid.return_to\u0026lt;/code\u0026gt; when request login to steam\n\thttps://openid.net/specs/openid-authentication-2_0.html#anchor27\n- **ps4web** — PS4 login page will redirect to this API after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;\n\thttps://ps4.siedev.net/resources/documents/WebAPI/1/Auth_WebAPI-Reference/0002.html#0GetAccessTokenUsingAuthorizationCode\n- **xblweb** — XBL login page will redirect to this API after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;\n- **epicgames** — Epicgames login page will redirect to this API after login success\n\tor an error occurred. If error, it redirects to the login page.\n- **twitch** — Twitch login page will redirect to this API after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;\n- **facebook** — Facebook login page will redirect to this API after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;\n- **google** — Google login page will redirect to this API after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;\n- **snapchat** — Snapchat login page will redirect to this API after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;\n- **discord** — Discord login page will redirect to this API after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;", "operationId": "PlatformAuthenticationV3", "parameters": [ { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "State that contains request ID retrieved from authorize endpoint ([GET] iam/v3/oauth/authorize)", "in": "query", "name": "state", "required": true, "type": "string" }, { "description": "The authorization code from 3rd party OAuth server", "in": "query", "name": "code", "type": "string" }, { "description": "The error message from 3rd party OAuth server", "in": "query", "name": "error", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.assoc_handle", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.claimed_id", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.identity", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.mode", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.ns", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.op_endpoint", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.response_nonce", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.return_to", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.sig", "type": "string" }, { "description": "[steamopenid] Steam OpenID response parameters https://openid.net/specs/openid-authentication-2_0.html#positive_assertions", "in": "query", "name": "openid.signed", "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirect to clients redirection URL with either code or error on the query parameter", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Platform Authentication API", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-location-query": "PLACEHOLDER", "x-operationid": "iam/public/oauth2/v3/authenticate-platform" } }, "/iam/v3/platforms/{platformId}/token/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Validates the third party platform token. For some platforms, also refreshes the token stored in IAM.\nDoes not generate any event or AB access/refresh token.\nCan be used by game clients to refresh the third party token if a platform token not found error is received (e.g., HTTP 404 from IAP/DLC).\n\n## Platforms will refresh stored token:\n- **twitch**: The platform_token’s value is the authorization code returned by Twitch OAuth.\n- **epicgames**: The platform_token’s value is an access-token or authorization code obtained from Epicgames EOS Account Service.\n- **ps4**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **ps5**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **amazon**: The platform_token’s value is authorization code.\n- **awscognito**: The platform_token’s value is the aws cognito access token or id token (JWT).\n- **live**: The platform_token’s value is xbox XSTS token\n- **snapchat**: The platform_token’s value is the authorization code returned by Snapchat OAuth.\n- **for specific generic oauth (OIDC)**: The platform_token’s value should be the same type as created OIDC auth type whether it is auth code, idToken or bearerToken.", "operationId": "PlatformTokenRefreshV3", "parameters": [ { "description": "Platform Token", "in": "formData", "name": "platform_token", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.PlatformTokenRefreshResponseV3" } }, "400": { "description": "General request error", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "503": { "description": "Third Party Server timeout or unavailable", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Platform Token Validation", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/verify-platform-token" } }, "/iam/v3/public/inputValidations": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "Returns the list of input validation configuration.\n\u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be returned if \u0026lt;code\u0026gt;isCustomRegex\u0026lt;/code\u0026gt; is true. Otherwise, it will be empty.\n**Substitute endpoint:** /iam/v3/public/namespaces/{namespace}/inputValidations[GET]", "operationId": "PublicGetInputValidations", "parameters": [ { "default": true, "description": "default true, will return default language if languageCode is empty or language not available", "in": "query", "name": "defaultOnEmpty", "type": "boolean", "x-omitempty": false }, { "description": "Language Code for description", "in": "query", "name": "languageCode", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.InputValidationsPublicResponse" } }, "404": { "description": "Data not found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [], "summary": "Public Get Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/input-validations/v3/list" } }, "/iam/v3/public/inputValidations/{field}": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "Returns input validation configuration by field.\n**Substitute endpoint:** /iam/v3/public/namespaces/{namespace}/inputValidations/{field}[GET]", "operationId": "PublicGetInputValidationByField", "parameters": [ { "description": "Name of the input validation field to get: email, username, displayName, password or avatar", "in": "path", "name": "field", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.InputValidationConfigVersion" } }, "404": { "description": "Data not found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public Get Input Validation by field", "tags": [ "InputValidations" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/input-validations/v3/get" } }, "/iam/v3/public/namespaces/{namespace}/agerestrictions/countries/{countryCode}": { "get": { "description": "Get age restriction by country code. It will always get by publisher namespace", "operationId": "PublicGetCountryAgeRestrictionV3", "parameters": [ { "description": "Country Code ", "in": "path", "name": "countryCode", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.CountryV3Response" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Public get age restriction by country code", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access" }, "x-operationid": "iam/public/age-restrictions/v3/get" } }, "/iam/v3/public/namespaces/{namespace}/config/{configKey}": { "get": { "description": "Returns the value of the specified config key. The namespace should be publisher namespace or studio namespace.\nNote: does not require any authorization.\n\n**Supported config key:**\n * uniqueDisplayNameEnabled\n * usernameDisabled\n * mandatoryEmailVerificationEnabled\n * verificationCodeType\n\nIf the key is verificationCodeType, then possible value format will be \u0026#39;{collection}:{N}\u0026#39;; example: \u0026#39;ABCDEFGHI:6\u0026#39;, \u0026#39;ABCDEFGHI1234:8\u0026#39;,\u0026#39;01234567894:7\u0026#39;\n", "operationId": "PublicGetConfigValueV3", "parameters": [ { "description": "config key", "in": "path", "name": "configKey", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ConfigValueResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Config Value", "tags": [ "Config" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error" }, "x-operationid": "iam/public/config/v3/get" } }, "/iam/v3/public/namespaces/{namespace}/countries": { "get": { "description": "Retrieves the list of countries, excluding those on the blacklist.", "operationId": "PublicGetCountryListV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.CountryResponse" }, "type": "array" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Country List", "tags": [ "Country" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/countries/v3/list" } }, "/iam/v3/public/namespaces/{namespace}/inputValidations": { "get": { "description": "Supported namespace:\n- publisher namespace\n- studio namespace\n\nReturns the list of input validation configuration.\n\u0026lt;code\u0026gt;regex\u0026lt;/code\u0026gt; parameter will be returned if \u0026lt;code\u0026gt;isCustomRegex\u0026lt;/code\u0026gt; is true. Otherwise, it will be empty.", "operationId": "PublicGetNamespaceScopedInputValidations", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "description": "default true, will return default language if languageCode is empty or language not available", "in": "query", "name": "defaultOnEmpty", "type": "boolean", "x-omitempty": false }, { "description": "Language Code for description", "in": "query", "name": "languageCode", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.InputValidationsPublicResponse" } }, "404": { "description": "Data not found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public Get Input Validations", "tags": [ "InputValidations" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/input-validations/v3/list-by-namespace" } }, "/iam/v3/public/namespaces/{namespace}/inputValidations/{field}": { "get": { "description": "Returns input validation configuration by field.\nSupported namespace:\n- publisher namespace\n- studio namespace", "operationId": "PublicGetNamespaceScopedInputValidationByField", "parameters": [ { "description": "Name of the input validation field to get: email, username, displayName, password or avatar", "in": "path", "name": "field", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.InputValidationConfigVersion" } }, "404": { "description": "Data not found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public Get Input Validation by field", "tags": [ "InputValidations" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/input-validations/v3/get-by-field" } }, "/iam/v3/public/namespaces/{namespace}/platforms/clients/active": { "get": { "description": "Retrieves all active third-party platform credentials for the namespace.", "operationId": "RetrieveAllActiveThirdPartyLoginPlatformCredentialPublicV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "All Active Third Party Credential Retrieved", "schema": { "items": { "$ref": "#/definitions/model.PublicThirdPartyPlatformInfo" }, "type": "array" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get All Active Third Party Platform Credentials", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/platform-credentials/v3/list-active-oidc" } }, "/iam/v3/public/namespaces/{namespace}/platforms/clients/oidc": { "get": { "description": "Retrieves all active OIDC platform credentials filtered by client ID.", "operationId": "RetrieveActiveOIDCClientsPublicV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Client ID", "in": "query", "name": "clientId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "All Active OIDC Credential Retrieved", "schema": { "items": { "$ref": "#/definitions/model.PublicThirdPartyPlatformInfo" }, "type": "array" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10175\u003c/td\u003e\u003ctd\u003ethird party credential not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Active OIDC Platform Credentials by Client ID", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error" }, "x-operationid": "iam/public/platform-credentials/v3/list-oidc" } }, "/iam/v3/public/namespaces/{namespace}/platforms/{platformId}/users": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "List User ID By Platform User ID\nLists game user IDs from the given namespace by given platform ID and list of platform user ID.\n\nSupported platform:\n- steam\n- steamopenid\n- ps4web\n- ps4\n- ps5 \n- live\n- xblweb \n- oculus\n- oculusweb\n- facebook\n- google\n- googleplaygames\n- twitch\n- discord\n- apple\n- device\n- justice\n- epicgames\n- nintendo\n- awscognito\n- netflix\n- snapchat\n- oidc platform id\n\nNote:\n**nintendo platform user ID**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "operationId": "PublicListUserIDByPlatformUserIDsV3", "parameters": [ { "description": "Platform user ID lookup request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformUserIDRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "default": false, "description": "if this is true, the platform user id in response will be raw id, if it is false, some platform user id will be encrypted, eg: xbox; Note: this field is deprecated, please use: rawPUID", "in": "query", "name": "rawPID", "type": "boolean", "x-omitempty": false }, { "default": false, "description": "if this is true, the platform user id in response will be raw id, if it is false, some platform user id will be encrypted, eg: xbox", "in": "query", "name": "rawPUID", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.UserPlatforms" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "List User ID By Platform User ID", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/list-by-platform-id", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}": { "get": { "deprecated": true, "description": "Get User By Platform User ID.\nReturns user information by given platform ID and platform user ID.\nSeveral platforms are grouped under account groups, you can use either platform ID or platform group as platformId path parameter.\nexample: for steam network platform, you can use steamnetwork / steam / steamopenid as platformId path parameter.\n**Note**: this is deprecated, substitute endpoint: /iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId} [GET]\n\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "operationId": "PublicGetUserByPlatformUserIDV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Platform User ID", "in": "path", "name": "platformUserId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User By Platform User ID", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v3/get-by-platform-user-id", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/profileUpdateStrategies": { "get": { "description": "This API is for public user to get profile update strategy by namespace and field.\nNote: If the config is not found, this API will return a config with unlimited.\n", "operationId": "PublicGetProfileUpdateStrategyV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target field", "enum": [ "country", "display_name", "dob", "username" ], "in": "query", "name": "field", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.GetProfileUpdateStrategyConfigResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public get profile update strategy by namespace and field.", "tags": [ "Profile Update Strategy" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/public/profile-update-strategies/v3/list" } }, "/iam/v3/public/namespaces/{namespace}/requests/{requestId}/async/status": { "get": { "description": "Retrieves the linking status. The user must be logged in and can only request their own linking status.", "operationId": "PublicGetAsyncStatus", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Request ID of the link status", "in": "path", "name": "requestId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ReAuthRequest" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Linking Progress Status", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-linking-status", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users": { "get": { "description": "Searches all users on the specified namespace that match the query on these fields: display name, unique display name, username or by 3rd party display name.\nThe query length must be between 3 and 30 characters. For email address queries (i.e. contains \u0026#39;@\u0026#39;), the allowed length is 3 to 40 characters. Otherwise, the database will not be queried.\nThe default limit value is 20.\n\n## Searching by 3rd party platform\n\n**Note: searching by 3rd party platform display name will use exact query, not fuzzy query.**\n\nStep when searching by 3rd party platform display name:\n 1. set __by__ to __thirdPartyPlatform__\n 2. set __platformId__ to the _supported platform id_\n 3. set __platformBy__ to __platformDisplayName__\n\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1\n\n## IP Rate Limit validation\n\nThis API have IP Rate Limit validation, which activates when triggered excessively from the same IP address (throw 429 http error).\nThe default rule: 10 max request per 30 seconds (per unique IP address).\n\nTo mitigate potential unexpected issues in your implementation, consider adhering to these best practices as illustrated in the following examples:\n* Delay invoking the Search API if the player continues typing in the search box, and only utilize the latest input provided.\n* Prevent players from double-clicking or making multiple clicks within a short time frame.", "operationId": "PublicSearchUserV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Search by given attribute, possible values are displayName, uniqueDisplayName, username, and thirdPartyPlatform", "in": "query", "name": "by", "type": "string" }, { "description": "The number of data retrieved in a page, default 20", "in": "query", "name": "limit", "type": "integer" }, { "description": "The number of offset, default 0", "in": "query", "name": "offset", "type": "integer" }, { "description": "Search platformBy given attribute, possible value is platformDisplayName", "in": "query", "name": "platformBy", "type": "string" }, { "description": "Platform Id that want to be searched.", "in": "query", "name": "platformId", "type": "string" }, { "description": "Query, can be either display name or username. Max character is 50", "in": "query", "name": "query", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.PublicUserInformationResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Search User", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20007": "too many requests", "20008": "user not found", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/search", "x-security": {} }, "post": { "consumes": [ "application/json" ], "description": "Available Authentication Types:\n1. **EMAILPASSWD**: an authentication type used for new user registration through email.\n\n**Note**:\n * **uniqueDisplayName**: this is required when uniqueDisplayNameEnabled/UNIQUE_DISPLAY_NAME_ENABLED is true.\n * **code**: this is required when mandatoryEmailVerificationEnabled config is true. please refer to the config from /iam/v3/public/namespaces/{namespace}/config/{configKey} [GET] API.\n\t\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.\nSupports accepting agreements for the created user. Supply the accepted agreements in acceptedPolicies attribute.", "operationId": "PublicCreateUserV3", "parameters": [ { "description": "User registration request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserCreateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.UserCreateResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create User", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10152": "verification code not found", "10154": "country not found", "10213": "country is blocked", "10222": "unique display name already exists", "20000": "internal server error", "20002": "validation error", "20003": "forbidden access", "20007": "too many requests", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v3/create" } }, "/iam/v3/public/namespaces/{namespace}/users/availability": { "get": { "description": "Check user\u0026#39;s account availability. \nAvailable field :\n- displayName\n- uniqueDisplayName\n- username\n\nIf request include access token with user ID data, that user ID will be excluded from availability check.\nFor example, in case user update his emailAddress, he can use his own emailAddress to update his account.\n\nResponse Code :\n- Account Available : 404 (not found)\n- Account Not Available : 204 (no content)", "operationId": "CheckUserAvailability", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "field name that want to be checked", "in": "query", "name": "field", "required": true, "type": "string" }, { "description": "query or value that want to be checked", "in": "query", "name": "query", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Not Found" }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Check user's account availability", "tags": [ "Users" ], "x-errorCodes": { "20002": "validation error" }, "x-operationid": "iam/public/users/v3/check-availability" } }, "/iam/v3/public/namespaces/{namespace}/users/bulk/basic": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "Notes:\n- Bulk-retrieves basic user info by userId, max allowed 100 at a time\n- If namespace is game, will search by game user Id, other wise will search by publisher namespace\n- **Result will include displayName(if it exists)**\n- **Substitute endpoint:** /iam/v3/public/namespaces/{namespace}/users/platforms [POST]\n", "operationId": "PublicBulkGetUsers", "parameters": [ { "description": "Bulk user IDs request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserIDsRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ListBulkUserResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10185\u003c/td\u003e\u003ctd\u003epublisher namespace not allowed\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Bulk get users' basic info by user Id", "tags": [ "Users" ], "x-errorCodes": { "10185": "publisher namespace not allowed", "20000": "internal server error", "20002": "validation error" }, "x-operationid": "iam/public/users/v3/bulk-get-basic" } }, "/iam/v3/public/namespaces/{namespace}/users/code/request": { "post": { "consumes": [ "application/json" ], "description": "Validates the request\u0026#39;s email address.\nIf it already been used, will response 409.\nIf it is available, we will send a verification code to this email address.\nThis code can be verified by this [API](#operations-Users-PublicVerifyRegistrationCode).", "operationId": "PublicSendRegistrationCode", "parameters": [ { "description": "Registration verification code send request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendRegisterVerificationCodeRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Send verification code to new unregistered account's email address", "tags": [ "Users" ], "x-errorCodes": { "10133": "email already used", "20002": "validation error", "20007": "too many requests", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v3/send-verification-code" } }, "/iam/v3/public/namespaces/{namespace}/users/code/verify": { "post": { "consumes": [ "application/json" ], "description": "Verify the registration code", "operationId": "PublicVerifyRegistrationCode", "parameters": [ { "description": "Registration code verification request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.VerifyRegistrationCode" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Code is valid" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Verify the registration code", "tags": [ "Users" ], "x-errorCodes": { "10138": "code not match", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v3/validate-registration-code" } }, "/iam/v3/public/namespaces/{namespace}/users/forgot": { "post": { "consumes": [ "application/json" ], "description": "**Special note for publisher-game scenario:**\nGame Client should provide game namespace path parameter and Publisher\nClient should provide publisher namespace path parameter.\nThe password reset code will be sent to the publisher account\u0026#39;s email address.", "operationId": "PublicForgotPasswordV3", "parameters": [ { "description": "Forgot password request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ForgotPasswordRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Request Password Reset Code", "tags": [ "Users" ], "x-errorCodes": { "20002": "validation error", "20007": "too many requests", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v3/request-password-reset" } }, "/iam/v3/public/namespaces/{namespace}/users/input/validation": { "post": { "consumes": [ "application/json" ], "description": "Validate user\u0026#39;s input. \n--------\n**note:** \n- checks the input validation and profanity filter service (if this is enabled)\n- the namespace should be publisher namespace\n", "operationId": "PublicValidateUserInput", "parameters": [ { "description": "User input validation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserInputValidationRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserInputValidationResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Validate user's input.", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/users/v3/validate-input" } }, "/iam/v3/public/namespaces/{namespace}/users/invite/{invitationId}": { "get": { "description": "Validates a user invitation. When not found, it could also mean the invitation has expired.", "operationId": "GetAdminInvitationV3", "parameters": [ { "description": "Invitation ID, should follow UUID version 4 without hyphen", "in": "path", "name": "invitationId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserInvitationV3" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10180\u003c/td\u003e\u003ctd\u003eadmin invitation not found or expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User Invitation", "tags": [ "Users" ], "x-errorCodes": { "10180": "admin invitation not found or expired", "20000": "internal server error" }, "x-operationid": "iam/public/users/v3/get-invitation" }, "post": { "consumes": [ "application/json" ], "description": "Creates a user from saved roles when creating invitation and submitted data.\nUser will be able to login after submitting data.\nAvailable Authentication Types:\nEMAILPASSWD: an authentication type used for new user registration through email.\n\n**Note**:\n * **uniqueDisplayName**: this is required when uniqueDisplayNameEnabled/UNIQUE_DISPLAY_NAME_ENABLED is true.\n\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.", "operationId": "CreateUserFromInvitationV3", "parameters": [ { "description": "User registration request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserCreateRequestV3" } }, { "description": "Invitation ID, should follow UUID version 4 without hyphen", "in": "path", "name": "invitationId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.UserCreateResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10180\u003c/td\u003e\u003ctd\u003eadmin invitation not found or expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create User From Invitation", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10154": "country not found", "10180": "admin invitation not found or expired", "10213": "country is blocked", "10222": "unique display name already exists", "20000": "internal server error", "20002": "validation error", "20003": "forbidden access" }, "x-operationid": "iam/public/users/v3/create-from-invitation" } }, "/iam/v3/public/namespaces/{namespace}/users/me": { "patch": { "consumes": [ "application/json" ], "description": "Updates the user based on given data. **Single request can update single field or multi fields.**\nSupported field {country, displayName, languageTag, dateOfBirth, avatarUrl, userName}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.\n**Response body logic when user updating email address:**\n- User want to update email address of which have been verified, newEmailAddress response field will be filled with new email address.\n- User want to update email address of which have not been verified, { oldEmailAddress, emailAddress} response field will be filled with new email address.\n- User want to update email address of which have been verified and updated before, { oldEmailAddress, emailAddress} response field will be filled with verified email before. newEmailAddress response field will be filled with newest email address.\n", "operationId": "PublicPartialUpdateUserV3", "parameters": [ { "description": "User profile update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PublicUserUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10235\u003c/td\u003e\u003ctd\u003edate of birth not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10236\u003c/td\u003e\u003ctd\u003eusername not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10237\u003c/td\u003e\u003ctd\u003edisplay name not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10238\u003c/td\u003e\u003ctd\u003ecountry not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10154": "country not found", "10213": "country is blocked", "10222": "unique display name already exists", "10235": "date of birth not allowed to update", "10236": "username not allowed to update", "10237": "display name not allowed to update", "10238": "country not allowed to update", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/update-my", "x-security": {} }, "put": { "consumes": [ "application/json" ], "description": "Updates the user based on given data. **Single request can update single field or multi fields.**\nSupported field {country, displayName, languageTag, dateOfBirth, avatarUrl, userName}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.\n**Response body logic when user updating email address:**\n- User want to update email address of which have been verified, newEmailAddress response field will be filled with new email address.\n- User want to update email address of which have not been verified, { oldEmailAddress, emailAddress} response field will be filled with new email address.\n- User want to update email address of which have been verified and updated before, { oldEmailAddress, emailAddress} response field will be filled with verified email before. newEmailAddress response field will be filled with newest email address.\n\n**Important notes:**\nProvides PATCH support for clients that do not support PATCH natively, e.g. UE4 before v4.23 released.\nIf the client support PATCH method, use [PATCH] /iam/v3/public/namespaces/{namespace}/users/me instead", "operationId": "UpdateUserV3", "parameters": [ { "description": "User profile update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PublicUserUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10235\u003c/td\u003e\u003ctd\u003edate of birth not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10236\u003c/td\u003e\u003ctd\u003eusername not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10237\u003c/td\u003e\u003ctd\u003edisplay name not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10238\u003c/td\u003e\u003ctd\u003ecountry not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10154": "country not found", "10213": "country is blocked", "10222": "unique display name already exists", "10235": "date of birth not allowed to update", "10236": "username not allowed to update", "10237": "display name not allowed to update", "10238": "country not allowed to update", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/set-my", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/code/request": { "post": { "consumes": [ "application/json" ], "description": "The verification code is sent to email address\nAvailable contexts for use : \n1. **UserAccountRegistration**\n\ta context type used for verifying email address in user account registration. It returns 409 if the email address already verified. \n\t**_It is the default context if the Context field is empty_**\n2. **UpdateEmailAddress**\n\ta context type used for verify user before updating email address.(Without email address verified checking)\n3. **upgradeHeadlessAccount**\n\tThe context is intended to be used whenever the email address wanted to be automatically verified on upgrading a headless account.\n\tIf this context used, IAM rejects the request if the email address is already used by others by returning HTTP Status Code 409.\n", "operationId": "PublicSendVerificationCodeV3", "parameters": [ { "description": "Verification code send request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10146\u003c/td\u003e\u003ctd\u003euserID not match\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10140\u003c/td\u003e\u003ctd\u003euser verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Send verification code to user", "tags": [ "Users" ], "x-errorCodes": { "10133": "email already used", "10139": "platform account not found", "10140": "user verified", "10146": "userID not match", "10171": "email address not found", "20001": "unauthorized access", "20002": "validation error", "20007": "too many requests", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/send-my-verification-code", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/code/verify": { "post": { "consumes": [ "application/json" ], "description": "Will consume code if validateOnly is set false\nRedeems a verification code sent to a user to verify the user\u0026#39;s contact address is correct\nAvailable ContactType : **email**", "operationId": "PublicUserVerificationV3", "parameters": [ { "description": "Email verification request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserVerificationRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10149\u003c/td\u003e\u003ctd\u003everification contact type doesn't match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10148\u003c/td\u003e\u003ctd\u003everification code context doesn't match the required context\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10141\u003c/td\u003e\u003ctd\u003eemail verified\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Validate or consume verification code sent to user", "tags": [ "Users" ], "x-errorCodes": { "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10141": "email verified", "10148": "verification code context doesn't match the required context", "10149": "verification contact type doesn't match", "10152": "verification code not found", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/validate-code", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/headless/code/verify": { "post": { "consumes": [ "application/json" ], "description": "If validateOnly is set false, consume code and upgrade headless account and automatically verified the email address if it is succeeded.\nUpgrades a headless account by linking it with an email address, username, and password, and immediately verifies the email address afterward.\n\nBy upgrading the headless account into a full account, the user could use the email address and password for using Justice IAM.\n\nTo obtain a verification code, use the send verification code API.\nAlso has the ability to update user data (if the user data field is specified) right after the upgrade account process is done.\nSupported user data fields :\n- displayName\n- dateOfBirth : format YYYY-MM-DD, e.g. 2019-04-29\n- country : format ISO3166-1 alpha-2 two letter, e.g. US", "operationId": "PublicUpgradeHeadlessAccountV3", "parameters": [ { "description": "Headless account upgrade with verification code request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountWithVerificationCodeRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10155\u003c/td\u003e\u003ctd\u003ecountry is not defined\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10149\u003c/td\u003e\u003ctd\u003everification contact type doesn't match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10148\u003c/td\u003e\u003ctd\u003everification code context doesn't match the required context\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10153\u003c/td\u003e\u003ctd\u003euser exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10170\u003c/td\u003e\u003ctd\u003eaccount is already a full account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Verify or consume verification code.", "tags": [ "Users" ], "x-errorCodes": { "10130": "user under age", "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10139": "platform account not found", "10148": "verification code context doesn't match the required context", "10149": "verification contact type doesn't match", "10152": "verification code not found", "10153": "user exist", "10154": "country not found", "10155": "country is not defined", "10170": "account is already a full account", "10213": "country is blocked", "10222": "unique display name already exists", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/upgrade-and-validate-my", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/headless/verify": { "post": { "consumes": [ "application/json" ], "description": "if set NeedVerificationCode = true, IAM will send verification code into email\nuser can use that verification code to verify user through /iam/v3/public/namespaces/{namespace}/users/me/code/verify", "operationId": "PublicVerifyHeadlessAccountV3", "parameters": [ { "description": "Headless account upgrade request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountV3Request" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": false, "description": "default false, will send verification code to email if true", "in": "query", "name": "needVerificationCode", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10153\u003c/td\u003e\u003ctd\u003euser exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10170\u003c/td\u003e\u003ctd\u003eaccount is already a full account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Upgrade user headless account to full account (with email)", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "10153": "user exist", "10170": "account is already a full account", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/start-upgrade-my", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/password": { "put": { "consumes": [ "application/json" ], "description": "Updates the authenticated user\u0026#39;s password. Requires the current password and a new password to be provided.", "operationId": "PublicUpdatePasswordV3", "parameters": [ { "description": "Password update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserPasswordUpdateV3Request" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10142\u003c/td\u003e\u003ctd\u003enew password cannot be same with original\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10143\u003c/td\u003e\u003ctd\u003epassword not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10228\u003c/td\u003e\u003ctd\u003einvalid mfa token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User Password", "tags": [ "Users" ], "x-errorCodes": { "10142": "new password cannot be same with original", "10143": "password not match", "10228": "invalid mfa token", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20007": "too many requests", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/update-my-password", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/justice/{targetNamespace}": { "post": { "description": "Create Justice User from Publisher User information. It will check first if Justice User on target namespace already exist.", "operationId": "PublicCreateJusticeUser", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target namespace", "in": "path", "name": "targetNamespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.CreateJusticeUserResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create Justice User from Publisher User", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/create-from-publisher", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## Supported platforms:\n- **steam**\n- **steamopenid**\n- **facebook**\n- **google**\n- **googleplaygames**\n- **oculus**\n- **twitch**\n- **android**\n- **ios**\n- **apple**\n- **device**\n- **discord**\n- **awscognito**\n- **epicgames**\n- **nintendo**\n\nUnlink user\u0026#39;s account from a specific platform. \u0026#39;justice\u0026#39; platform might have multiple accounts from different namespaces linked.\n_platformNamespace_ need to be specified when the platform ID is \u0026#39;justice\u0026#39;.\nUnlink user\u0026#39;s account from justice platform will enable password token grant and password update.\nIf you want to unlink user\u0026#39;s account in a game namespace, you have to specify _platformNamespace_ to that game namespace.", "operationId": "PublicPlatformUnlinkV3", "parameters": [ { "description": "Platform unlink request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UnlinkUserPlatformRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public unlink user's account from specific platform", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/unlink-platform", "x-security": {} }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "**Prerequisite:** \nPlatform client configuration need to be added to database for specific platformId. Namespace service URL need to be specified (refer to required environment variables).\n## Supported platforms:\n- **steam**: The ticket’s value is the binary ticket returned by Steam.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The ticket\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The ticket’s value is the authorization code returned by Facebook OAuth\n- **google**: The ticket’s value is the authorization code returned by Google OAuth\n- **googleplaygames**: The ticket’s value is the authorization code returned by Google play games OAuth\n- **oculus**: The ticket’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The ticket’s value is the authorization code returned by Twitch OAuth.\n- **android**: The ticket\u0026#39;s value is the Android’s device ID\n- **ios**: The ticket\u0026#39;s value is the iOS’s device ID.\n- **apple**: The ticket’s value is the authorization code returned by Apple OAuth.\n- **device**: Every device that doesn\u0026#39;t run Android and iOS is categorized as a device platform. The ticket\u0026#39;s value is the device’s ID.\n- **discord**: The ticket’s value is the authorization code returned by Discord OAuth.\n- **ps4web**: The ticket’s value is the authorization code returned by PSN OAuth.\n- **ps4**: The ticket’s value is the authorization code returned by PSN OAuth.\n- **ps5**: The ticket’s value is the authorization code returned by PSN OAuth.\n- **xblweb**: The ticket’s value is the authorization code returned by XBox Live OAuth.\n- **live**: The ticket’s value is the XSTS token.\n- **awscognito**: The ticket’s value is the aws cognito access token (JWT).\n- **epicgames**: The ticket’s value is an access-token or authorization code obtained from Epicgames EOS Account Service.\n- **nintendo**: The ticket’s value is the id_token returned by Nintendo OAuth.\n- **netflix**: The ticket’s value is GAT (Gamer Access Token) returned by Netflix backend.\n- **snapchat**: The ticket’s value is authorization code returned by Snapchat OAuth.\n- **for specific generic oauth (OIDC)**: The platform_token’s value should be the same type as created OIDC auth type whether it is auth code, idToken or bearerToken.", "operationId": "PublicPlatformLinkV3", "parameters": [ { "description": "Ticket from platform, not contain whitespace", "in": "formData", "name": "ticket", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "[Special case for ps4web and xblweb platform] The same redirectUri as when the client request authorization code. The redirectUri when client request auth code need to be exactly same with redirectUri when IAM requesting exchange token to the Platform (ps4web, xblweb)", "in": "formData", "name": "redirectUri", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10174\u003c/td\u003e\u003ctd\u003eplatform client not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10163\u003c/td\u003e\u003ctd\u003eplatform is already linked with the user account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10172\u003c/td\u003e\u003ctd\u003eplatform user is already linked with the account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10173\u003c/td\u003e\u003ctd\u003eplatform is already linked with another user account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Link user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "10163": "platform is already linked with the user account", "10172": "platform user is already linked with the account", "10173": "platform is already linked with another user account", "10174": "platform client not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/link-platform-account", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/all": { "delete": { "consumes": [ "application/json" ], "description": "Unlink user\u0026#39;s account from third platform in all namespaces.\nSeveral platforms are grouped under account groups, you can use either platform ID or platform group as platformId path parameter. \nexample: to unlink steam third party account, you can use steamnetwork / steam / steamopenid as platformId path parameter.\n\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1\n\t\nUnlink platform account associated with a group:\nIf user unlink platform account associated with a group, the API logic will unlink all of platform account under that group as well. \nexample: if user unlink from ps4, the API logic will unlink ps5 and ps4web as well", "operationId": "PublicPlatformUnlinkAllV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public unlink user's account from specific platform for all namespaces", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/unlink-platform-all", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/force": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Force linking user account with platform. \nIf this platform account was already linked to another user account, force linking is performed and the platform is removed from the conflicting user account, not only from the current request namespace but also from all the enrolled namespaces.\nIf current user have linked to this platform with another platform account (include once linked but it is unlinked now), it will not allow user to perform linking.\n## Supported platforms:\n- **steam**: The platform_token’s value is the binary ticket returned by Steam.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The platform_token\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The platform_token’s value is the authorization code returned by Facebook OAuth\n- **google**: The platform_token’s value is the authorization code returned by Google OAuth\n- **googleplaygames**: The platform_token’s value is the authorization code returned by Google play games OAuth\n- **oculus**: The platform_token’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The platform_token’s value is the authorization code returned by Twitch OAuth.\n- **discord**: The platform_token’s value is the authorization code returned by Discord OAuth\n- **android**: The device_id is the Android’s device ID\n- **ios**: The device_id is the iOS’s device ID.\n- **apple**: The platform_token’s value is the authorization code returned by Apple OAuth.(We will use this code to generate APP token)\n- **device**: Every device that does’nt run Android and iOS is categorized as a device. The device_id is the device’s ID.\n- **justice**: The platform_token’s value is the designated user’s access token.\n- **epicgames**: The platform_token’s value is an access-token obtained from Epicgames EOS Account Service.\n- **ps4**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **ps5**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **nintendo**: The platform_token’s value is the id_token returned by Nintendo OAuth.\n- **awscognito**: The platform_token’s value is the aws cognito access token or id token (JWT).\n- **live**: The platform_token’s value is xbox XSTS token\n- **xblweb**: The platform_token’s value is code returned by xbox after login\n- **netflix**: The platform_token’s value is GAT (Gamer Access Token) returned by Netflix backend\n- **snapchat**: The platform_token’s value is the authorization code returned by Snapchat OAuth.\n- **for specific generic oauth (OIDC)**: The platform_token’s value should be the same type as created OIDC auth type whether it is auth code, idToken or bearerToken.", "operationId": "PublicForcePlatformLinkV3", "parameters": [ { "description": "Token from platform auth", "in": "formData", "name": "ticket", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10174\u003c/td\u003e\u003ctd\u003eplatform client not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10163\u003c/td\u003e\u003ctd\u003eplatform is already linked with the user account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10172\u003c/td\u003e\u003ctd\u003eplatform user is already linked with the account\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Force linking user's account with platform", "tags": [ "Users" ], "x-errorCodes": { "10163": "platform is already linked with the user account", "10172": "platform user is already linked with the account", "10174": "platform client not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/force-link-platform", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/link": { "get": { "description": "Generates a redirect to a third party login page for account linking authentication.\n\nSupported platforms:\n- ps4web\n- xblweb\n- steamopenid\n- epicgames\n- facebook\n- twitch\n- google\n- apple\n- snapchat\n- discord\n- amazon\n- oculusweb\n\n## New API version\n\nThis API remains fully functional, but \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/reauth\u0026lt;/code\u0026gt; is recommended for new integrations.\n", "operationId": "PublicWebLinkPlatform", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform Id to be linked", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Client ID", "in": "query", "name": "clientId", "type": "string" }, { "description": "Redirect URI", "in": "query", "name": "redirectUri", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.WebLinkingResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10174\u003c/td\u003e\u003ctd\u003eplatform client not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Initiate Platform Web Linking", "tags": [ "Users" ], "x-errorCodes": { "10174": "platform client not found", "10365": "client not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-platform-web-link", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/link/establish": { "get": { "description": "Callback endpoint for the third party to redirect to after authentication to complete the linking process for the IAM account.\nAfter successfully perform the account linking, it will redirect to the **redirectUri** defined when calling the \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/link\u0026lt;/code\u0026gt; endpoint.\n\nSupported platforms:\n- ps4web\n- xblweb\n- steamopenid\n- epicgames\n- facebook\n- twitch\n- google\n- apple\n- snapchat\n- discord\n- amazon\n- oculusweb\n\n## New API version\n\nThis API remains fully functional, but \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/reauth/establish\u0026lt;/code\u0026gt; is recommended for new integrations.\n", "operationId": "PublicWebLinkPlatformEstablish", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform Id to be linked", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "state from third party redirect", "in": "query", "name": "state", "required": true, "type": "string" }, { "description": "authorization code from third party", "in": "query", "name": "code", "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Handle Redirect from third party", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Platform Web Link Callback", "tags": [ "Users" ], "x-errorCodes": {}, "x-location-query": "PLACEHOLDER", "x-operationid": "iam/public/users/v3/handle-platform-web-link-callback" } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/link/process": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Completes the third party account link and returns the link status directly instead of redirecting to the **redirectUri** defined when calling the \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/link\u0026lt;/code\u0026gt; endpoint.\n\nSupported platforms:\n- ps4web\n- xblweb\n- steamopenid\n- epicgames\n- facebook\n- twitch\n- google\n- apple\n- snapchat\n- discord\n- amazon\n- oculusweb\n\n## New API version\n\nThis API remains fully functional, but \u0026lt;code\u0026gt;POST /users/me/platforms/{platformId}/web/reauth/process\u0026lt;/code\u0026gt; is recommended for new integrations.\n", "operationId": "PublicProcessWebLinkPlatformV3", "parameters": [ { "description": "state, comes from the response of \u003ccode\u003eGET /users/me/platforms/{platformId}/web/link\u003c/code\u003e endpoint", "in": "formData", "name": "state", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "platform Id to be linked", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "authorization code from third party", "in": "formData", "name": "code", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ReAuthRequest" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Complete Platform Web Link", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error" }, "x-operationid": "iam/public/users/v3/resolve-platform-web-link-redirect" } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/reauth": { "get": { "description": "Generates a redirect to a third party login page for re-authentication purpose.\n\nSupported platforms:\n- ps4web\n- xblweb\n- steamopenid\n- epicgames\n- facebook\n- twitch\n- google\n- apple\n- snapchat\n- discord\n- amazon\n- oculusweb\n", "operationId": "PublicWebReauthPlatform", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Re-auth operation.\n\t\t\t**GDPR**: obtain a **gdpr_token** cookie after re-authentication completes. \n\t\t\t**LINK**: perform a platform account link.", "enum": [ "GDPR", "LINK" ], "in": "query", "name": "operation", "required": true, "type": "string" }, { "description": "Client ID", "in": "query", "name": "clientId", "type": "string" }, { "description": "Redirect URI", "in": "query", "name": "redirectUri", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.WebLinkingResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Initiate Platform Web Re-authentication", "tags": [ "Users" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-platform-web-reauth", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/reauth/establish": { "get": { "description": "Callback endpoint for the third party to redirect to after authentication to complete the re-auth flow on the IAM side.\n\nThe re-auth flow inside IAM depends on the **operation** parameter passed to \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/reauth\u0026lt;/code\u0026gt; endpoint.\nFor **operation=GDPR**, the **gdpr_token** cookie is set in the response headers on success.\n\nAfter completing the re-auth flow, it will redirect to the **redirectUri** defined when calling the \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/reauth\u0026lt;/code\u0026gt; endpoint.\n\nSupported platforms:\n- ps4web\n- xblweb\n- steamopenid\n- epicgames\n- facebook\n- twitch\n- google\n- apple\n- snapchat\n- discord\n- amazon\n- oculusweb\n", "operationId": "PublicWebReauthPlatformEstablish", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "State from third party redirect", "in": "query", "name": "state", "required": true, "type": "string" }, { "description": "Authorization code from third party", "in": "query", "name": "code", "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Handle redirect from third party", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Platform Web Re-auth Callback", "tags": [ "Users" ], "x-errorCodes": {}, "x-operationid": "iam/public/users/v3/handle-platform-web-reauth-callback" } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/reauth/process": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Completes the re-auth flow on the IAM side and returns the result directly instead of redirecting to the **redirectUri** defined when calling the \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/reauth\u0026lt;/code\u0026gt; endpoint.\n\nThe re-auth flow inside IAM depends on the **operation** parameter passed to \u0026lt;code\u0026gt;GET /users/me/platforms/{platformId}/web/reauth\u0026lt;/code\u0026gt; endpoint.\nFor **operation=GDPR**, the **gdpr_token** cookie is set in the response headers on success.\n\nSupported platforms:\n- ps4web\n- xblweb\n- steamopenid\n- epicgames\n- facebook\n- twitch\n- google\n- apple\n- snapchat\n- discord\n- amazon\n- oculusweb\n", "operationId": "PublicWebReauthPlatformProcess", "parameters": [ { "description": "State, comes from the response of \u003ccode\u003eGET /users/me/platforms/{platformId}/web/reauth\u003c/code\u003e endpoint", "in": "formData", "name": "state", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Authorization code from third party", "in": "formData", "name": "code", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.WebReauthProcessResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10249\u003c/td\u003e\u003ctd\u003eplatform re-authentication failed\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Complete Platform Web Re-auth", "tags": [ "Users" ], "x-errorCodes": { "10249": "platform re-authentication failed", "20000": "internal server error", "20002": "validation error" }, "x-operationid": "iam/public/users/v3/resolve-platform-web-reauth-redirect" } }, "/iam/v3/public/namespaces/{namespace}/users/platforms": { "post": { "consumes": [ "application/json" ], "description": "Note: \n\t1. the max count of user ids in the request is 100\n\t2. if platform id is not empty, the result will only contain the corresponding platform infos\n\t3. if platform id is empty, the result will contain all the supported platform infos\n\n__Supported 3rd platforms:__\n\n* __PSN(ps4web, ps4, ps5)__\n * account id\n * display name\n * avatar\n* __Xbox(live, xblweb)__\n * xuid or pxuid\n * display name\n* __Steam(steam, steamopenid)__\n * steam id\n * display name\n * avatar\n* __EpicGames(epicgames)__\n * epic account id\n * display name\n", "operationId": "PublicGetUsersPlatformInfosV3", "parameters": [ { "description": "Bulk platform info lookup request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UsersPlatformInfosRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UsersPlatformInfosResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user's basic info and public info of 3rd party account", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/list-linked-platforms", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/reset": { "post": { "consumes": [ "application/json" ], "description": "Resets a user\u0026#39;s password using a valid password reset code sent to their email address.", "operationId": "ResetPasswordV3", "parameters": [ { "description": "Password reset request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ResetPasswordRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10142\u003c/td\u003e\u003ctd\u003enew password cannot be same with original\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Reset User Password", "tags": [ "Users" ], "x-errorCodes": { "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10142": "new password cannot be same with original", "10152": "verification code not found", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v3/reset-password" } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}": { "get": { "deprecated": true, "description": "Retrieves user attributes.\n**Substitute endpoint:** /v4/public/namespaces/{namespace}/users/{userId} [GET]", "operationId": "PublicGetUserByUserIdV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.PublicUserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User By User ID", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20002": "validation error", "20008": "user not found" }, "x-operationid": "iam/public/users/v3/get" } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/bans": { "get": { "description": "Notes:\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicGetUserBanHistoryV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "Filter ban based on the ban status. If you set this, only active ban returned", "in": "query", "name": "activeOnly", "type": "boolean", "x-omitempty": false }, { "description": "The number of data returned in one query. The maximum value of the limit is 100 and the minimum value of the limit is 1. If you set this into -1, then it returns all data. Default: -1.", "in": "query", "name": "limit", "type": "integer" }, { "description": "The number of offset from expected limit. Default: 0", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetUserBanV3Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20021\u003c/td\u003e\u003ctd\u003einvalid pagination parameter\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user's bans", "tags": [ "Users" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20021": "invalid pagination parameter" }, "x-operationid": "iam/public/users/v3/list-bans", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/distinctPlatforms": { "get": { "description": "Retrieves platform accounts linked to user.\nIt will query all linked platform accounts. The results will be distinct and grouped by platform, and for each platform, we will select the oldest linked one.\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicListUserAllPlatformAccountsDistinctV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.DistinctPlatformResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get distinct platform accounts linked to the user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/list-distinct-active-platform-accounts", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/information": { "get": { "description": "Retrieves user info and linked platform accounts.\n\n\t\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicGetUserInformationV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.UserInformationV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user's information v3", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-information", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/logins/histories": { "get": { "description": "- The maximum value of the limit is 100 and the minimum value of the limit is 1.\n- Returns the first page of the data if \u0026lt;code\u0026gt;after\u0026lt;/code\u0026gt; and \u0026lt;code\u0026gt;before\u0026lt;/code\u0026gt; parameters is empty.\n- Returns the next page of the data if we provide \u0026lt;code\u0026gt;after\u0026lt;/code\u0026gt; parameters with valid Unix timestamp.\n- Returns the previous page of the data if we provide \u0026lt;code\u0026gt;before\u0026lt;/code\u0026gt; parameter with valid data Unix timestamp.\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicGetUserLoginHistoriesV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page (In Unix timestamp formats, e.g:1545114248)", "in": "query", "name": "after", "type": "number" }, { "description": "The cursor that points to query data for the previous page (In Unix timestamp formats, e.g:1545114248).", "in": "query", "name": "before", "type": "number" }, { "description": "The number of data retrieved in a page. Default: 100", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.LoginHistoriesResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get User's Login Histories", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v3/get-login-history", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms": { "get": { "description": "Retrieves platform accounts linked to user.\n\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.\n", "operationId": "PublicGetUserPlatformAccountsV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" }, { "description": "DEPRECATED. The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "DEPRECATED. The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "DEPRECATED. the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" }, { "description": "Platform ID, query specific platform account", "in": "query", "name": "platformId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.UserLinkedPlatformsResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get platform accounts linked to the user", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/list-platform-accounts", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms/justice": { "get": { "description": "Retrieves the list of Justice platform accounts linked to the given user.\n\n**Namespace restriction:** The {namespace} path parameter must be a **publisher namespace**. Passing a game namespace returns HTTP 400.\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicListJusticePlatformAccountsV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Publisher User ID. Should match the one in the access token.", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "items": { "$ref": "#/definitions/model.GetUserMappingV3" }, "type": "array" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20025\u003c/td\u003e\u003ctd\u003enot a publisher user\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User Justice Platform Accounts", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20025": "not a publisher user" }, "x-operationid": "iam/public/users/v3/list-accelbyte-accounts", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms/link": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## This API has been deprecated\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/force [POST]_**\n\nUpdate Platform Account relation to current User Account.\n\nNote: Game progression data (statistics, reward, etc) associated with previous User Account will not be \ntransferred. If the data is tight to game user ID, the user will have the game progression data.\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicLinkPlatformAccount", "parameters": [ { "description": "Platform account link request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LinkPlatformAccountRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Current user ID. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Link a Platform User Account to User Account", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/link-platform-account-forced", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms/linkWithProgression": { "post": { "consumes": [ "application/json" ], "description": "Force update other account\u0026#39;s Platform Account relation to current User Account.\nCan transfer progression from 3rd platform binding account\u0026#39;s to current account.\nRequires the same requestID used in [Get link status](#operations-Users-PublicGetAsyncStatus).\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicForceLinkPlatformWithProgression", "parameters": [ { "description": "Platform account link with progression transfer request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LinkPlatformAccountWithProgressionRequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Current user ID. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Force link 3rd platform account and transfer progression", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/force-link-platform-with-progression", "x-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/publisher": { "get": { "description": "**Restriction:**\n\tPath Parameter **namespace** can be provided only with game namespace", "operationId": "PublicGetPublisherUserV3", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetPublisherUserResponse" } }, "400": { "description": "Error Code: 7239 - Error Message: wrong namespace: required game namespace", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Get Publisher User", "tags": [ "Users" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v3/get-publisher", "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId}:PUBLISHER [READ]" ] } ] } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/validate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Validates the user password by specifying the userId and password.\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicValidateUserByUserIDAndPasswordV3", "parameters": [ { "description": "User password", "in": "formData", "name": "password", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen. Should match the one in the access token", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10143\u003c/td\u003e\u003ctd\u003epassword not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Validate user password by user ID and password", "tags": [ "Users" ], "x-errorCodes": { "10143": "password not match", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v3/validate-password", "x-security": {} } }, "/iam/v3/public/roles": { "get": { "consumes": [ "application/json" ], "description": "Returns all non-admin roles.", "operationId": "PublicGetRolesV3", "parameters": [ { "description": "The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "- true if the expected result should only returns records with wildcard = true\n- false if the expected result should only returns records with wildcard = false\n- empty (omitted) if the expected result should returns records with no wildcard filter at all\n", "in": "query", "name": "isWildcard", "type": "boolean", "x-omitempty": false }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleNamesResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Roles", "tags": [ "Roles" ], "x-errorCodes": { "20002": "validation error" }, "x-operationid": "iam/public/roles/v3/list" } }, "/iam/v3/public/roles/{roleId}": { "get": { "consumes": [ "application/json" ], "description": "Returns a non-admin role based on the specified roleId.", "operationId": "PublicGetRoleV3", "parameters": [ { "description": "Role id", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Public Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20002": "validation error" }, "x-operationid": "iam/public/roles/v3/get" } }, "/iam/v3/public/users/forgot": { "post": { "consumes": [ "application/json" ], "description": "Does not need a namespace in the path, we will find the namespace based on:\n\n- If this is premium environment, the namespace will be the publisher namespace.\n- If this is shared cloud:\n - If this is from Admin Portal, we will find the user by the email.\n - If this is not from Admin Portal, we will find the namespace based on the client id.\n\n**Note**:\n- The param **clientId** is required in Shared Cloud\n- The namespace in the response is publisher/studio namespace\n", "operationId": "PublicForgotPasswordWithoutNamespaceV3", "parameters": [ { "description": "Forgot password request body (namespaceless).", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ForgotPasswordWithoutNamespaceRequestV3" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ForgotPasswordResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Request Password Reset Code", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error" }, "x-operationid": "iam/public/users/v3/request-password-reset-global" } }, "/iam/v3/public/users/me": { "get": { "description": "Get my user data\n\n__Supported 3rd platforms:__\n\n* __PSN(ps4web, ps4, ps5)__\n * account id\n * display name\n * avatar\n* __Xbox(live, xblweb)__\n * xuid or pxuid\n * display name\n* __Steam(steam, steamopenid)__\n * steam id\n * display name\n * avatar\n* __EpicGames(epicgames)__\n * epic account id\n * display name", "operationId": "PublicGetMyUserV3", "parameters": [ { "default": false, "description": "include all linked platform infos", "in": "query", "name": "includeAllPlatforms", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get My User", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-my", "x-security": {} } }, "/iam/v3/public/users/me/code/request/forward": { "post": { "consumes": [ "application/json" ], "description": "This API need the upgradeToken in request body.\nAvailable contexts for use : \n1. **upgradeHeadlessAccount**\n\tThe context is intended to be used whenever the email address wanted to be automatically verified on upgrading a headless account. \n\tIf this context used, IAM rejects the request if the email address is already used by others by returning HTTP Status Code 409.\n", "operationId": "PublicSendCodeForwardV3", "parameters": [ { "description": "Verification code send request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequestV3" } } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirected to login website if there is any error.", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Send verification code to user", "tags": [ "Users" ], "x-errorCodes": {}, "x-operationid": "iam/public/users/v3/send-verification-code-forward" } }, "/iam/v3/public/users/me/headless/link/conflict": { "get": { "description": "Note:\n1. My account should be full account\n2. My account not linked to request headless account\u0026#39;s third platform.\n\nAfter client resolving the conflict, it will call \u0026lt;code\u0026gt;/iam/v3/public/users/me/headless/linkWithProgression [POST]\u0026lt;/code\u0026gt;", "operationId": "PublicGetLinkHeadlessAccountToMyAccountConflictV3", "parameters": [ { "description": "one time linking code", "in": "query", "name": "oneTimeLinkCode", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.GetLinkHeadlessAccountConflictResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get conflict result when link headless account to current full account by one time code", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-my-linking-conflict", "x-security": {} } }, "/iam/v3/public/users/me/headless/linkWithProgression": { "post": { "consumes": [ "application/json" ], "description": "Note:\n1. My account should be full account\n2. My account not linked to headless account\u0026#39;s third platform.", "operationId": "LinkHeadlessAccountToMyAccountV3", "parameters": [ { "description": "Headless account link request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LinkHeadlessAccountRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Link headless account to current full account", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/link-my-headless-account", "x-security": {} } }, "/iam/v3/public/users/me/link/redirection": { "get": { "description": "Returns the redirect URI after link. Returns NotFound(404) if redirect URI is not found.", "operationId": "PublicGetMyRedirectionAfterLinkV3", "parameters": [ { "description": "one time link code", "in": "query", "name": "oneTimeLinkCode", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.OneTimeCodeLinkRedirectionResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Not Found" }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get My Forward URI Link", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-my-link-redirection", "x-security": {} } }, "/iam/v3/public/users/me/profileStatus": { "get": { "description": "This API is for user to get self profile update allow status.\nNote: If the config is not found, this API will return a config with unlimited.\n", "operationId": "PublicGetMyProfileAllowUpdateStatusV3", "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.UserProfileUpdateAllowStatus" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public get my profile allowed update status.", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v3/get-my-profile-update-policy", "x-security": {} } }, "/iam/v3/public/users/me/verify_link/request": { "post": { "consumes": [ "application/json" ], "description": "The verification link is sent to email address\nIt will not send request if user email is already verified", "operationId": "PublicSendVerificationLinkV3", "parameters": [ { "description": "Verification link send request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationLinkRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10140\u003c/td\u003e\u003ctd\u003euser verified\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Send verification link to user, this link will point to '/iam/v3/public/users/verify_link/verify'", "tags": [ "Users" ], "x-errorCodes": { "10140": "user verified", "20001": "unauthorized access", "20002": "validation error", "20007": "too many requests", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/send-verification-link", "x-security": {} } }, "/iam/v3/public/users/userinfo": { "get": { "description": "This API is created to match openid userinfo standard =\u0026gt; https://openid.net/specs/openid-connect-core-1_0.html#UserInfo", "operationId": "PublicGetOpenidUserInfoV3", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.PublicOpenIDUserInfoResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get my user info", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v3/get-openid-info", "x-security": {} } }, "/iam/v3/public/users/verify_link/verify": { "get": { "operationId": "PublicVerifyUserByLinkV3", "parameters": [ { "description": "Verification code, it can be get from `/users/me/verify_link/request`", "in": "query", "name": "code", "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirected to verification finish page.", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Verify user email by the verification link code", "tags": [ "Users" ], "x-errorCodes": {}, "x-operationid": "iam/public/users/v3/verify-email" } }, "/iam/v3/sso/saml/platforms/{platformId}/authenticate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Authenticates user platform for SAML protocol. Validates user to its\nrespective platforms. Deactivated or login-banned users are unable to login.\n## Supported platforms:\n- **azure**\n\tMicrosoft login page will redirect to this API after login success\nas previously defined on authentication request SAML", "operationId": "platformAuthenticateSAMLV3Handler", "parameters": [ { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "State that contains request ID retrieved from authorize endpoint ([GET] iam/v3/oauth/authorize)", "in": "query", "name": "state", "required": true, "type": "string" }, { "description": "The authorization code from 3rd party OAuth server", "in": "query", "name": "code", "type": "string" }, { "description": "The error message from Identity Provider (IdP)", "in": "query", "name": "error", "type": "string" } ], "responses": { "302": { "description": "Found. Redirect to clients redirection URL with either code or error on the query parameter", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "SAML platform Authentication API", "tags": [ "SSO SAML 2.0" ], "x-errorCodes": {}, "x-location-query": "PLACEHOLDER", "x-operationid": "iam/public/sso/v3/authenticate-with-saml" } }, "/iam/v3/sso/{platformId}": { "get": { "description": "Redirects the user to the SSO client\u0026#39;s login page for the specified platform. An optional \u0026#39;payload\u0026#39; query parameter can be passed with key-value data from the SSO client.", "operationId": "LoginSSOClient", "parameters": [ { "description": "SSO Client ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Key value payload received from SSO client, if any, and must be escaped", "in": "query", "name": "payload", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK" } }, "security": [ { "authorization": [] } ], "summary": "Login to SSO client with provided platformId", "tags": [ "SSO" ], "x-errorCodes": {}, "x-operationid": "iam/public/sso/v3/login-client" } }, "/iam/v3/sso/{platformId}/logout": { "post": { "description": "Logs out the user\u0026#39;s session on a platform that was authenticated using SSO.\n\nSupported platforms:\n- discourse\n", "operationId": "LogoutSSOClient", "parameters": [ { "description": "SSO Client ID", "in": "path", "name": "platformId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Logout", "tags": [ "SSO" ], "x-errorCodes": { "20000": "internal server error" }, "x-operationid": "iam/public/sso/v3/logout-client", "x-security": {} } }, "/iam/v3/token/exchange": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Generates the target token.\nIt requires basic header with ClientID and Secret, it should match the ClientID when call \u0026lt;code\u0026gt;/iam/v3/namespace/{namespace}/token/request [POST]\u0026lt;/code\u0026gt;\nThe code should be generated from \u0026lt;code\u0026gt;/iam/v3/namespace/{namespace}/token/request [POST]\u0026lt;/code\u0026gt;.", "operationId": "RequestTargetTokenResponseV3", "parameters": [ { "description": "code from request target token response", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to exchange token.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } } }, "summary": "Generate target token by code", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/exchange-token" } }, "/iam/v3/upgrade/forward": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "In login website based flow, after account upgraded, we need this API to handle the forward\n", "operationId": "UpgradeAndAuthenticateForwardV3", "parameters": [ { "description": "Client ID", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "upgrade success token", "in": "formData", "name": "upgrade_success_token", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirect to clients redirection URL with code", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Handle the forward for account upgrade", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v3/handle-web-upgrade-forward" } }, "/iam/v4/admin/invitationHistories": { "get": { "description": "Lists all invitation histories for studio namespaces in multi-tenant mode.\n\nReturns an error if the service multi-tenant mode is set to false.", "operationId": "AdminListInvitationHistoriesV4", "parameters": [ { "description": "the maximum number of data that may be returned (1...100), default 100", "in": "query", "name": "limit", "type": "integer" }, { "description": "only accept studio namespace", "in": "query", "name": "namespace", "type": "string" }, { "description": "Offset, default 0", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.ListInvitationHistoriesV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "501": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003enot implemented\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin List Invitation Histories V4", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20024": "not implemented" }, "x-operationid": "iam/admin/users/v4/list-invitation-histories", "x-security": [ { "userPermissions": [ "ADMIN:USER:INVITE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices": { "get": { "consumes": [ "application/json" ], "description": "Returns all devices a user has ever used to login (admin operation).", "operationId": "AdminGetDevicesByUserV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "user id", "in": "query", "name": "userId", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DevicesResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20021\u003c/td\u003e\u003ctd\u003einvalid pagination parameter\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get devices by user id", "tags": [ "Devices V4" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20021": "invalid pagination parameter" }, "x-operationid": "iam/admin/devices/v4/list", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/banned": { "get": { "consumes": [ "application/json" ], "description": "Returns all banned devices (admin operation).", "operationId": "AdminGetBannedDevicesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "device type", "in": "query", "name": "deviceType", "type": "string" }, { "description": "end date", "in": "query", "name": "endDate", "type": "string" }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" }, { "description": "the count to skip", "in": "query", "name": "offset", "type": "integer" }, { "description": "start date", "in": "query", "name": "startDate", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DeviceBannedResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get banned devices", "tags": [ "Devices V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/list-banned-all", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/bans": { "get": { "consumes": [ "application/json" ], "description": "Returns all device bans for a user (admin operation).", "operationId": "AdminGetUserDeviceBansV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "user id", "in": "query", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DeviceBansResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get device bans of user", "tags": [ "Devices V4" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/list-banned-user", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Bans a device (admin operation).", "operationId": "AdminBanDeviceV4", "parameters": [ { "description": "Device ban creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DeviceBanRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10204\u003c/td\u003e\u003ctd\u003edevice can not be banned\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10202\u003c/td\u003e\u003ctd\u003eactive device ban config already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Ban a device", "tags": [ "Devices V4" ], "x-errorCodes": { "10202": "active device ban config already exists", "10204": "device can not be banned", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/devices/v4/ban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [CREATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/bans/{banId}": { "get": { "consumes": [ "application/json" ], "description": "Retrieves a specific device ban configuration by its ban ID.", "operationId": "AdminGetDeviceBanV4", "parameters": [ { "description": "Ban ID, should follow UUID version 4 without hyphen", "in": "path", "name": "banId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DeviceBanResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get Device Ban Config", "tags": [ "Devices V4" ], "x-errorCodes": { "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/get-banned", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates a device ban configuration (admin operation).", "operationId": "AdminUpdateDeviceBanV4", "parameters": [ { "description": "Device ban update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DeviceBanUpdateRequestV4" } }, { "description": "Ban ID, should follow UUID version 4 without hyphen", "in": "path", "name": "banId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10202\u003c/td\u003e\u003ctd\u003eactive device ban config already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin update device ban config", "tags": [ "Devices V4" ], "x-errorCodes": { "10158": "ban not found", "10202": "active device ban config already exists", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/devices/v4/update-banned", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/report": { "get": { "consumes": [ "application/json" ], "description": "Generates a device report for the specified namespace.\n\n**Namespace restriction:** The {namespace} path parameter must be a **game namespace**. Passing a publisher namespace returns HTTP 400.", "operationId": "AdminGenerateReportV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "device type", "in": "query", "name": "deviceType", "required": true, "type": "string" }, { "description": "end date", "in": "query", "name": "endDate", "type": "string" }, { "description": "start date", "in": "query", "name": "startDate", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10158\u003c/td\u003e\u003ctd\u003eban not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin generate device report", "tags": [ "Devices V4" ], "x-errorCodes": { "10139": "platform account not found", "10158": "ban not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/generate-report", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/types": { "get": { "consumes": [ "application/json" ], "description": "Returns all supported device types (admin operation).", "operationId": "AdminGetDeviceTypesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DeviceTypesResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get device types", "tags": [ "Devices V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/list-types", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/bans": { "get": { "consumes": [ "application/json" ], "description": "Returns the device ban list (admin operation).", "operationId": "AdminGetDeviceBansV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DeviceBansResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get device ban list", "tags": [ "Devices V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/list-banned", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/decrypt": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "Decrypts a device ID (admin operation).", "operationId": "AdminDecryptDeviceV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DeviceIDDecryptResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin decrypt device id", "tags": [ "Devices V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/decrypt", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/unban": { "put": { "description": "Unbans a device (admin operation).", "operationId": "AdminUnbanDeviceV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin unban device", "tags": [ "Devices V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/devices/v4/unban", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/users": { "get": { "consumes": [ "application/json" ], "description": "Returns all users that have ever logged in on the specified device (admin operation).", "operationId": "AdminGetUsersByDeviceV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.DeviceUsersResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get users by device id", "tags": [ "Devices V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/devices/v4/list-users", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/invitationHistories": { "get": { "description": "Retrieves the invitation history for a specific studio namespace in multi-tenant mode.\n\nReturns an error if the service multi-tenant mode is set to false.", "operationId": "AdminGetNamespaceInvitationHistoryV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.InvitationHistoryResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "501": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003enot implemented\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get Invitation History for specific namespace V4", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions", "20024": "not implemented" }, "x-operationid": "iam/admin/users/v4/get-invitation-history", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:INVITE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/invitationHistories/users": { "get": { "description": "Retrieves the list of user invitation history for a specific studio namespace in multi-tenant mode.\n\nReturns an error if the service multi-tenant mode is set to false.", "operationId": "AdminGetNamespaceUserInvitationHistoryV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "the maximum number of data that may be returned (1...100), default 100", "in": "query", "name": "limit", "type": "integer" }, { "description": "Offset, default 0", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.NamespaceInvitationHistoryUserV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "501": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003enot implemented\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Get Users Invitation History for specific namespace V4", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20024": "not implemented" }, "x-operationid": "iam/admin/users/v4/get-user-invitation-history", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:INVITE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/test_users": { "post": { "consumes": [ "application/json" ], "description": "Create test users and not send verification code email.\n\n**Request Body Note:**\n- **count**: Enter the number of test users you want to create in the count field. The maximum value of the user count is 100.\n- **userInfo** (optional):\n\t- country: you can specify country for the test user. Country use ISO3166-1 alpha-2 two letter, e.g. US\n- **acceptedPolicies** (optional): Contains the list of accepted agreements for the created users.\n\t\t", "operationId": "AdminCreateTestUsersV4", "parameters": [ { "description": "Bulk test user creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createTestUsersRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/account.createTestUsersResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "501": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20024\u003c/td\u003e\u003ctd\u003enot implemented\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "[TEST FACILITY ONLY]Create test Users", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error", "20019": "unable to parse request body", "20024": "not implemented" }, "x-operationid": "iam/admin/users/v4/create-test", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [CREATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "description": "Creates a new user with unique email address and username (admin operation). Supports accepting agreements for the created user via the acceptedPolicies attribute. See request body field descriptions for per-field details.", "operationId": "AdminCreateUserV4", "parameters": [ { "description": "User registration request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createUserRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/account.createUserResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10177\u003c/td\u003e\u003ctd\u003eusername already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Create User", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10154": "country not found", "10177": "username already used", "10213": "country is blocked", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20003": "forbidden access", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v4/create", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [CREATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/bulk/accountType": { "patch": { "consumes": [ "application/json" ], "description": "Changes users account type.\n- set **testAccount** to \u0026lt;code\u0026gt;true\u0026lt;/code\u0026gt; to mark user as test account type\n- set **testAccount** to \u0026lt;code\u0026gt;false\u0026lt;/code\u0026gt; to mark user as default account type", "operationId": "AdminBulkUpdateUserAccountTypeV4", "parameters": [ { "description": "Bulk account type update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BulkAccountTypeUpdateRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Account type updated to test" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Bulk Update User Account Type V4", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v4/bulk-update-account-type", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:TYPE:USER [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/bulk/validate": { "post": { "consumes": [ "application/json" ], "description": "Checks if userIDs exist or not.\nMaximum number of userID to be checked is 50", "operationId": "AdminBulkCheckValidUserIDV4", "parameters": [ { "description": "Bulk user ID validation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CheckValidUserIDRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.ListValidUserIDResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Check Valid User ID", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v4/bulk-check-valid", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}": { "put": { "consumes": [ "application/json" ], "description": "Updates user based on given data. **Single request can update single field or multi fields.**\nSupported field {country, displayName, languageTag, dateOfBirth, avatarUrl, userName}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.\n\n**Response body logic when user updating email address:**\n- User want to update email address of which have been verified, newEmailAddress response field will be filled with new email address.\n- User want to update email address of which have not been verified, { oldEmailAddress, emailAddress} response field will be filled with new email address.\n- User want to update email address of which have been verified and updated before, { oldEmailAddress, emailAddress} response field will be filled with verified email before. newEmailAddress response field will be filled with newest email address.", "operationId": "AdminUpdateUserV4", "parameters": [ { "description": "Admin user update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10139": "platform account not found", "10154": "country not found", "10222": "unique display name already exists", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/admin/users/v4/update", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/email": { "put": { "consumes": [ "application/json" ], "description": "Updates a user email address (admin operation).\nRequires a valid admin user token to verify identity (email) before updating the user.", "operationId": "AdminUpdateUserEmailAddressV4", "parameters": [ { "description": "Email update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.EmailUpdateRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update a User Email Address", "tags": [ "Users V4" ], "x-errorCodes": { "10133": "email already used", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/admin/users/v4/update-email", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/mfa/disable": { "delete": { "consumes": [ "application/json" ], "description": "Disables user 2FA.\n-----------\n**Note**: if the factor is not specified, will disable all 2FA methods.\n", "operationId": "AdminDisableUserMFAV4", "parameters": [ { "description": "MFA disable request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "OK" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10193\u003c/td\u003e\u003ctd\u003emfa not enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Disable User 2FA", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10193": "mfa not enabled", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/admin/user-mfa/v4/disable", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/mfa/status": { "get": { "description": "Retrieves the 2FA status for the specified user.", "operationId": "AdminGetUserMFAStatusV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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/model.UserMFAStatusResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User 2FA Status", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v4/get-mfa-status", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/roles": { "delete": { "consumes": [ "application/json" ], "description": "Removes a role from the user\u0026#39;s assigned roles.\n\n**Request body:** Specify the role ID and the allowed namespaces to remove from the user.", "operationId": "AdminRemoveUserRoleV4", "parameters": [ { "description": "Role removal request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RemoveUserRoleV4Request" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10183\u003c/td\u003e\u003ctd\u003eunprocessable entity\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Remove User Role v4", "tags": [ "Users V4" ], "x-errorCodes": { "10183": "unprocessable entity", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v4/revoke-role", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:* [DELETE]" ] } ] }, "get": { "description": "List roles assigned to a user", "operationId": "AdminListUserRolesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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": "Operation succeeded", "schema": { "$ref": "#/definitions/model.ListUserRolesV4Response" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin List User's Roles V4", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/users/v4/list-roles", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:* [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "New role will be appended to user\u0026#39;s current roles.\nAn admin user can only assign role with **assignedNamespaces** if the admin user has required permission which is same as the required permission of this API.", "operationId": "AdminAddUserRoleV4", "parameters": [ { "description": "Role assignment request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AddUserRoleV4Request" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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": "Operation succeeded", "schema": { "$ref": "#/definitions/model.ListUserRolesV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e422\u003c/td\u003e\u003ctd\u003erequest is unprocessable\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Add User's Role V4", "tags": [ "Users V4" ], "x-errorCodes": { "10156": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body", "422": "request is unprocessable" }, "x-operationid": "iam/admin/users/v4/assign-role", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:* [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "User\u0026#39;s roles will be replaced with roles from request body.\nAn admin user can only assign role with **assignedNamespaces** if the admin user has required permission which is same as the required permission of this API.\n", "operationId": "AdminUpdateUserRoleV4", "parameters": [ { "description": "Role assignment request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AddUserRoleV4Request" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "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": "Operation succeeded", "schema": { "$ref": "#/definitions/model.ListUserRolesV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10156\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10183\u003c/td\u003e\u003ctd\u003eunprocessable entity\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Update User's Role V4", "tags": [ "Users V4" ], "x-errorCodes": { "10156": "role not found", "10183": "unprocessable entity", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v4/set-roles", "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:* [UPDATE]" ] } ] } }, "/iam/v4/admin/roles": { "get": { "description": "Retrieves a paginated list of roles with optional filters.", "operationId": "AdminGetRolesV4", "parameters": [ { "description": "- true if the expected result should only returns records with adminRole = true\n - false if the expected result should only returns records with adminRole = false\n - empty (omitted) if the expected result should returns records with no wildcard filter at all", "in": "query", "name": "adminRole", "type": "boolean", "x-omitempty": false }, { "description": "- true if the expected result should only returns records with wildcard = true\n - false if the expected result should only returns records with wildcard = false\n - empty (omitted) if the expected result should returns records with no wildcard filter at all", "in": "query", "name": "isWildcard", "type": "boolean", "x-omitempty": false }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" }, { "description": "the count to skip", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ListRoleV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Roles", "tags": [ "Roles" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v4/list", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a new role. See request body field descriptions for per-field details.", "operationId": "AdminCreateRoleV4", "parameters": [ { "description": "Role creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleV4Request" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.RoleV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10466\u003c/td\u003e\u003ctd\u003einvalid role members\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create Role", "tags": [ "Roles" ], "x-errorCodes": { "10466": "invalid role members", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v4/create", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [CREATE]" ] } ] } }, "/iam/v4/admin/roles/{roleId}": { "delete": { "description": "Removes the role from all assigned users before deleting it.", "operationId": "AdminDeleteRoleV4", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Delete Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v4/delete", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [DELETE]" ] } ] }, "get": { "description": "Retrieves a role by its ID.", "operationId": "AdminGetRoleV4", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v4/get", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates an existing role. See request body field descriptions for per-field details.", "operationId": "AdminUpdateRoleV4", "parameters": [ { "description": "Role update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleV4Request" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v4/update", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v4/admin/roles/{roleId}/permissions": { "delete": { "consumes": [ "application/json" ], "operationId": "AdminDeleteRolePermissionsV4", "parameters": [ { "description": "Array of role IDs to remove.", "in": "body", "name": "body", "required": true, "schema": { "items": { "type": "string" }, "type": "array" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Data not found" } }, "security": [ { "authorization": [] } ], "summary": "Delete Role Permission V4", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v4/remove-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Attaches permission(s) to the role.\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\nSyntax reference\nFields:\n1. Seconds: 0-59 * / , -\n2. Minutes: 0-59 * / , -\n3. Hours: 0-23 * / , -\n4. Day of month: 1-31 * / , - L W\n5. Month: 1-12 JAN-DEC * / , -\n6. Day of week: 0-6 SUN-SAT * / , - L #\n7. Year: 1970-2099 * / , -\n\nSpecial characters:\n1. *: all values in the fields, e.g. * in seconds fields indicates every second\n2. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n3. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n4. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n5. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n6. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n7. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.", "operationId": "AdminAddRolePermissionsV4", "parameters": [ { "description": "Array of permissions to assign.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.PermissionsV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Add Role Permissions V4", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v4/add-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Replaces role\u0026#39;s permissions with the ones defined in body.\nSchedule contains cron string or date range (both are UTC, also in cron syntax) to indicate when a permission and action are in effect.\nBoth schedule types accepts quartz compatible cron syntax e.g. * * * * * * *.\nIn ranged schedule, first element will be start date, and second one will be end date\nIf schedule is set, the scheduled action must be valid too, that is between 1 to 15, inclusive\nSyntax reference\nFields:\n1. Seconds: 0-59 * / , -\n2. Minutes: 0-59 * / , -\n3. Hours: 0-23 * / , -\n4. Day of month: 1-31 * / , - L W\n5. Month: 1-12 JAN-DEC * / , -\n6. Day of week: 0-6 SUN-SAT * / , - L #\n7. Year: 1970-2099 * / , -\n\nSpecial characters:\n1. *: all values in the fields, e.g. * in seconds fields indicates every second\n2. /: increments of ranges, e.g. 3-59/15 in the minute field indicate the third minute of the hour and every 15 minutes thereafter\n3. ,: separate items of a list, e.g. MON,WED,FRI in day of week\n4. -: range, e.g. 2010-2018 indicates every year between 2010 and 2018, inclusive\n5. L: last, e.g. When used in the day-of-week field, it allows you to specify constructs such as \u0026#34;the last Friday\u0026#34; (5L) of a given month. In the day-of-month field, it specifies the last day of the month.\n6. W: business day, e.g. if you were to specify 15W as the value for the day-of-month field, the meaning is: \u0026#34;the nearest business day to the 15th of the month.\u0026#34;\n7. #: must be followed by a number between one and five. It allows you to specify constructs such as \u0026#34;the second Friday\u0026#34; of a given month.", "operationId": "AdminUpdateRolePermissionsV4", "parameters": [ { "description": "Array of permissions to replace.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.PermissionsV3" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.RoleV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update Role Permissions", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v4/update-permissions", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v4/admin/roles/{roleId}/users": { "delete": { "consumes": [ "application/json" ], "description": "Current implementation will revoke user from role in all assigned namespaces. See request body field descriptions for per-field details.", "operationId": "AdminRevokeUserFromRoleV4", "parameters": [ { "description": "User role revocation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RevokeUserV4Request" } }, { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10457\u003c/td\u003e\u003ctd\u003especified role is not admin role\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10459\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Revoke User from Role", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "10457": "specified role is not admin role", "10459": "operator is not a role manager", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v4/revoke-users", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Query all users that has the specified role.", "operationId": "AdminListAssignedUsersV4", "parameters": [ { "description": "Role ID, should follow UUID version 4 without hyphen", "in": "path", "name": "roleId", "required": true, "type": "string" }, { "description": "The cursor that points to query data for the next page", "in": "query", "name": "after", "type": "string" }, { "description": "The cursor that points to query data for the previous page", "in": "query", "name": "before", "type": "string" }, { "description": "the maximum number of data that may be returned (1...100)", "in": "query", "name": "limit", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.ListAssignedUsersV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Role's Assigned Users", "tags": [ "Roles" ], "x-errorCodes": { "10456": "role not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/roles/v4/list-assigned-users", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Assigns a user to a role with specified namespaces. See request body field descriptions for per-field details.", "operationId": "AdminAssignUserToRoleV4", "parameters": [ { "description": "User role assignment request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AssignUserV4Request" } }, { "description": "Role ID", "in": "path", "name": "roleId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Operation succeeded", "schema": { "$ref": "#/definitions/model.AssignedUserV4Response" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10457\u003c/td\u003e\u003ctd\u003especified role is not admin role\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10459\u003c/td\u003e\u003ctd\u003eoperator is not a role manager\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10182\u003c/td\u003e\u003ctd\u003egiven namespace cannot be assigned to the role\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10456\u003c/td\u003e\u003ctd\u003erole not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10469\u003c/td\u003e\u003ctd\u003erole member exist\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10183\u003c/td\u003e\u003ctd\u003eunprocessable entity\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Assign User to Role", "tags": [ "Roles" ], "x-errorCodes": { "10182": "given namespace cannot be assigned to the role", "10183": "unprocessable entity", "10456": "role not found", "10457": "specified role is not admin role", "10459": "operator is not a role manager", "10469": "role member exist", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/roles/v4/assign-user", "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v4/admin/users/invite": { "post": { "consumes": [ "application/json" ], "description": "Invites admin or non-admin user and assigns role to them. The role must be scoped to namespace. An admin user can only\nassign role with **assignedNamespaces** if the admin user has required permission which is same as the required permission of [AdminAddUserRoleV4].\n\nDetail request body :\n- **emailAddresses** is required, List of email addresses that will be invited\n- **isAdmin** is required, true if user is admin, false if user is not admin\n- **namespace** is optional. Only works on multi tenant mode,\n\tif not specified then it will be assigned Publisher namespace, \n\tif specified, it will become that studio/publisher where user is invited to.\n- **roleId** is optional, if not specified then it will only assign User role.\n- **assignedNamespaces** is optional, List of namespaces which the Role will be assigned to the user, only works when Role is not empty.\n\nThe invited admin will also assigned with \u0026#34;User\u0026#34; role by default.", "operationId": "AdminInviteUserNewV4", "parameters": [ { "description": "Admin user invitation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.InviteUserRequestV4" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.InviteUserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin invite User v4", "tags": [ "Users V4" ], "x-errorCodes": { "10133": "email already used", "10154": "country not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v4/invite", "x-security": [ { "userPermissions": [ "ADMIN:USER:INVITE [CREATE]" ] } ] } }, "/iam/v4/admin/users/me": { "patch": { "consumes": [ "application/json" ], "description": "Updates the authenticated admin user based on given data. **Single request can update single field or multi fields.**\nSupported field {country, displayName, languageTag, dateOfBirth, avatarUrl, userName}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.", "operationId": "AdminUpdateMyUserV4", "parameters": [ { "description": "User profile update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequestV3" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10177\u003c/td\u003e\u003ctd\u003eusername already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Update My User", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10154": "country not found", "10177": "username already used", "10222": "unique display name already exists", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/admin/users/v4/update-my", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/authenticator/disable": { "delete": { "consumes": [ "application/json" ], "description": "Disables 2FA authenticator.\n------\n\t**Note**: **mfaToken** is required when all the following are enabled:\n\t - The environment variable **SENSITIVE_MFA_AUTH_ENABLED** is true\n\t - The **Two-Factor Authentication** is enabled in the IAM client where user logs in\n\t - Users already enabled the MFA\n", "operationId": "AdminDisableMyAuthenticatorV4", "parameters": [ { "description": "MFA disable request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Authenticator disabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10228\u003c/td\u003e\u003ctd\u003einvalid mfa token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Disable 2FA authenticator", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10228": "invalid mfa token", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/disable-my-authenticator", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/authenticator/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Enables 2FA authenticator.\n----------\nPrerequisites:\n- Generate the secret key/QR code uri by **_/iam/v4/admin/users/me/mfa/authenticator/key_**\n- Consume the secret key/QR code by an authenticator app\n- Get the code from the authenticator app\n", "operationId": "AdminEnableMyAuthenticatorV4", "parameters": [ { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Authenticator enabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10190\u003c/td\u003e\u003ctd\u003eauth secret key expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA authenticator", "tags": [ "Users V4" ], "x-errorCodes": { "10138": "code not match", "10139": "platform account not found", "10171": "email address not found", "10190": "auth secret key expired", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/enable-my-authenticator", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/authenticator/key": { "post": { "description": "Generates a secret key for 3rd-party authenticator app.\nA QR code URI is also returned so that frontend can generate QR code image.", "operationId": "AdminGenerateMyAuthenticatorKeyV4", "produces": [ "application/json" ], "responses": { "200": { "description": "Key generated", "schema": { "$ref": "#/definitions/model.AuthenticatorKeyResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate secret key for 3rd-party authenticate app", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/generate-my-authenticator-key", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode": { "get": { "deprecated": true, "description": "Returns 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.", "operationId": "AdminGetMyBackupCodesV4", "produces": [ "application/json" ], "responses": { "200": { "description": "Get backup codes", "schema": { "$ref": "#/definitions/model.BackupCodesResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/get-my-back-code", "x-security": {} }, "post": { "deprecated": true, "description": "Generates 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.", "operationId": "AdminGenerateMyBackupCodesV4", "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes generated", "schema": { "$ref": "#/definitions/model.BackupCodesResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/generate-my-backup-code", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode/disable": { "delete": { "consumes": [ "application/json" ], "description": "Disables 2FA backup codes.\n------\n**Note**: **mfaToken** is required when all the following are enabled:\n - The environment variable **SENSITIVE_MFA_AUTH_ENABLED** is true\n - The **Two-Factor Authentication** is enabled in the IAM client where user logs in\n - Users already enabled the MFA\n", "operationId": "AdminDisableMyBackupCodesV4", "parameters": [ { "description": "MFA disable request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Backup codes disabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10228\u003c/td\u003e\u003ctd\u003einvalid mfa token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Disable 2FA backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10228": "invalid mfa token", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/disable-my-backup-codes", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode/download": { "get": { "deprecated": true, "description": "Downloads backup codes as a file.", "operationId": "AdminDownloadMyBackupCodesV4", "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes downloaded", "schema": { "type": "file" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10195\u003c/td\u003e\u003ctd\u003eno valid backup code found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Download user backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "10195": "no valid backup code found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/download-my-backup-codes", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode/enable": { "post": { "deprecated": true, "description": "Enables 2FA backup codes.", "operationId": "AdminEnableMyBackupCodesV4", "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes enabled", "schema": { "$ref": "#/definitions/model.BackupCodesResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/enable-my-backup-code", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCodes": { "get": { "description": "Returns 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.", "operationId": "AdminGetBackupCodesV4", "parameters": [ { "description": "Language tag for email notification", "in": "query", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Get backup codes" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get backup codes and send to email", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/list-my-backup-codes", "x-security": {} }, "post": { "description": "Generates 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.", "operationId": "AdminGenerateBackupCodesV4", "parameters": [ { "description": "Language tag for email notification", "in": "query", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes generated" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/generate-my-backup-codes", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCodes/enable": { "post": { "description": "Enables 2FA backup codes.", "operationId": "AdminEnableBackupCodesV4", "parameters": [ { "description": "Language tag for email notification", "in": "query", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes enabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/enable-my-backup-codes", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/challenge/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Verifies the user\u0026#39;s MFA code and generates an MFA token.", "operationId": "AdminChallengeMyMFAV4", "parameters": [ { "description": "MFA code", "in": "formData", "name": "code", "type": "string" }, { "description": "MFA factor", "in": "formData", "name": "factor", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "MFA token generated", "schema": { "$ref": "#/definitions/model.UserMFATokenResponseV4" } }, "204": { "description": "No MFA token generated" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Challenge User MFA", "tags": [ "Users V4" ], "x-errorCodes": { "10137": "code is expired", "10138": "code not match", "10365": "client not found", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/admin/user-mfa/v4/verify-my-challenge", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/email/code": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Sends an MFA email code.\n--------------\nSupported actions:\n\t* ChangePassword\n\t* DisableMFAEmail\n", "operationId": "AdminSendMyMFAEmailCodeV4", "parameters": [ { "description": "Sensitive Action", "in": "formData", "name": "action", "type": "string" }, { "description": "Language Tag", "in": "formData", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "code sent" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Send code for MFA email", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20007": "too many requests", "20008": "user not found" }, "x-operationid": "iam/admin/user-mfa/v4/send-my-mfa-email", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/email/disable": { "post": { "consumes": [ "application/json" ], "description": "Disables 2FA email.\n------\n**Note**: **mfaToken** is required when all the following are enabled:\n - The environment variable **SENSITIVE_MFA_AUTH_ENABLED** is true\n - The **Two-Factor Authentication** is enabled in the IAM client where user logs in\n - Users already enabled the MFA\n", "operationId": "AdminDisableMyEmailV4", "parameters": [ { "description": "MFA disable request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "email disabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10228\u003c/td\u003e\u003ctd\u003einvalid mfa token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Disable 2FA email", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10228": "invalid mfa token", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/admin/user-mfa/v4/disable-my-email", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/email/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Enables 2FA email.", "operationId": "AdminEnableMyEmailV4", "parameters": [ { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "email enabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA email", "tags": [ "Users V4" ], "x-errorCodes": { "10137": "code is expired", "10138": "code not match", "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/admin/user-mfa/v4/enable-my-email", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/factor": { "get": { "description": "Returns all enabled 2FA factors for the user.", "operationId": "AdminGetMyEnabledFactorsV4", "produces": [ "application/json" ], "responses": { "200": { "description": "Methods returned", "schema": { "$ref": "#/definitions/model.EnabledFactorsResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10193\u003c/td\u003e\u003ctd\u003emfa not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user enabled factors", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10193": "mfa not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/list-my-enabled", "x-security": {} }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Makes 2FA factor default.", "operationId": "AdminMakeFactorMyDefaultV4", "parameters": [ { "description": "MFA factor (e.g., authenticator, email, backupCode)", "in": "formData", "name": "factor", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Default method changed" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10189\u003c/td\u003e\u003ctd\u003einvalid factor\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Make 2FA factor default", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10189": "invalid factor", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/admin/user-mfa/v4/set-default", "x-security": {} } }, "/iam/v4/admin/users/me/mfa/status": { "get": { "description": "Retrieves the user\u0026#39;s MFA status.", "operationId": "AdminGetMyOwnMFAStatusV4", "produces": [ "application/json" ], "responses": { "200": { "description": "MFA status returned", "schema": { "$ref": "#/definitions/model.UserMFAStatusResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get Admin Own MFA Status", "tags": [ "Users V4" ], "x-errorCodes": { "10365": "client not found", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/admin/user-mfa/v4/get-my-status", "x-security": {} }, "post": { "deprecated": true, "description": "Retrieves the user\u0026#39;s MFA status.\n------------\n**Substitute endpoint**: /iam/v4/admin/users/me/mfa/status [GET]\n", "operationId": "AdminGetMyMFAStatusV4", "produces": [ "application/json" ], "responses": { "200": { "description": "MFA status returned", "schema": { "$ref": "#/definitions/model.UserMFAStatusResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User MFA Status", "tags": [ "Users V4" ], "x-errorCodes": { "10365": "client not found", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/admin/user-mfa/v4/update-my-status", "x-security": {} } }, "/iam/v4/admin/users/users/invite": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "Invites admin or non-admin user and assigns role to them. The role must be scoped to namespace. An admin user can only\nassign role with **assignedNamespaces** if the admin user has required permission which is same as the required permission of [AdminAddUserRoleV4].\n\nDetail request body :\n- Email Address is required, List of email addresses that will be invited\n- isAdmin is required, true if user is admin, false if user is not admin\n- Namespace is optional. Only works on multi tenant mode,\n\tif not specified then it will be assigned Publisher namespace,\n\tif specified, it will become that studio/publisher where user is invited to.\n- Role is optional, if not specified then it will only assign User role.\n- Assigned Namespaces is optional, List of namespaces which the Role will be assigned to the user, only works when Role is not empty.\n\nThe invited admin will also assigned with \u0026#34;User\u0026#34; role by default.\n\nSubstitute API: /iam/v4/admin/users/invite", "operationId": "AdminInviteUserV4", "parameters": [ { "description": "Admin user invitation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.InviteUserRequestV4" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.InviteUserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Admin invite User v4", "tags": [ "Users V4" ], "x-errorCodes": { "10133": "email already used", "10154": "country not found", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20019": "unable to parse request body" }, "x-operationid": "iam/admin/users/v4/invite-legacy", "x-security": [ { "userPermissions": [ "ADMIN:USER:INVITE [CREATE]" ] } ] } }, "/iam/v4/oauth/authenticateWithLink": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Authenticates a user account and performs platform link.\nValidates user\u0026#39;s email / username and password.\nIf user already enable 2FA, then invoke _/mfa/verify_ using **mfa_token** from this API response.\n\n## Device Cookie Validation\nDevice Cookie is used to protect the user account from brute force login attack, [more detail from OWASP](https://owasp.org/www-community/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies).\nIt will read the device cookie from cookie **auth-trust-id**. If device cookie not found, it will generate a new one and set it into cookie when successfully authenticate.\n\n## Login Queue\nWhen the Login Queue is enabled and at capacity, this API returns a 202 Accepted response, with the queue ticket included in the response body.", "operationId": "AuthenticationWithPlatformLinkV4", "parameters": [ { "description": "Client ID", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "Platform linking Token", "in": "formData", "name": "linkingToken", "required": true, "type": "string" }, { "description": "Account password", "in": "formData", "name": "password", "required": true, "type": "string" }, { "description": "Account username", "in": "formData", "name": "username", "required": true, "type": "string" }, { "description": "Extend expiration date of refresh token", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to authenticate and link platform account.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "202": { "description": "Login queue ticket returned", "schema": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" } }, "400": { "description": "Invalid username or password.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "Need 2FA.", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "User already link this platform's another account'.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Authentication with platform link", "tags": [ "OAuth2.0 V4" ], "x-errorCodes": { "10213": "country is blocked" }, "x-operationid": "iam/public/oauth2/v4/authenticate-with-link" } }, "/iam/v4/oauth/headless/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Creates headless account after 3rd platform authenticated, and returns token.\nThe \u0026#39;linkingToken\u0026#39; in request body is received from \u0026#34;/platforms/{platformId}/token\u0026#34; when 3rd platform account is not linked to any account yet and createHeadless param is set to false.\n\n## Login Queue\nWhen the Login Queue is enabled and at capacity, this API returns a 202 Accepted response, with the queue ticket included in the response body.", "operationId": "GenerateTokenByNewHeadlessAccountV4", "parameters": [ { "description": "Platform linking Token", "in": "formData", "name": "linkingToken", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" }, { "description": "Extend expiration date of refresh token", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to create headless account and response token info.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "202": { "description": "Succeed to create headless account and response token info.", "schema": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" } }, "400": { "description": "Invalid platform linking token or clientID not match.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Platform linking token not found.", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create headless account and response token", "tags": [ "OAuth2.0 V4" ], "x-errorCodes": { "10213": "country is blocked" }, "x-operationid": "iam/public/oauth2/v4/generate-token-for-headless-account" } }, "/iam/v4/oauth/mfa/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Verifies 2FA code.\n\n## 2FA remember device\nTo remember device for 2FA, the request should provide cookie: device_token or header: Device-Token\n\n## Login Queue\nWhen the Login Queue is enabled and at capacity, this API returns a 202 Accepted response, with the queue ticket included in the response body.", "operationId": "Verify2FACodeV4", "parameters": [ { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "factor", "in": "formData", "name": "factor", "required": true, "type": "string" }, { "description": "mfa token", "in": "formData", "name": "mfaToken", "required": true, "type": "string" }, { "description": "remember device", "in": "formData", "name": "rememberDevice", "required": true, "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "202": { "description": "Login queue ticket returned", "schema": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Verify 2FA code", "tags": [ "OAuth2.0 V4" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v4/verify-mfa-code" } }, "/iam/v4/oauth/platforms/{platformId}/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Platform token grant specifically used for performing token grant using platform, e.g. Steam, Device, etc. \nAutomatically creates a headless account if the account associated with the platform does not exist yet, unless the createHeadless param is set to false.\nRequires all requests to have Authorization header set with Basic access authentication constructed from client id and client secret (only if using Confidential Client type). For more details on client types, refer to the [documentation guide](https://docs.accelbyte.io/gaming-services/modules/foundations/identity-access/authorization/manage-access-control-for-applications/#iam-client-types)\n\n## Request Payload\nDevice token grant should be requested along with device_id parameter. \nThe other 3rd party platform token grant should be requested along with platform_token parameter.\n\n## Supported platforms\n- **steam**: The platform_token’s value is the binary ticket returned by Steam.\n\tIf this ticket was generated by Steam GetAuthTicketForWebApi with version \u0026gt;= 1.57, then platform token should use this style: \u0026lt;code\u0026gt;{identity}:{ticket}\u0026lt;/code\u0026gt;, the \u0026lt;code\u0026gt;{identity}\u0026lt;/code\u0026gt; was the parameter to call GetAuthTicketForWebApi when the ticket was created. Note: Do not contain \u0026lt;code\u0026gt;:\u0026lt;/code\u0026gt; in this \u0026lt;code\u0026gt;{identity}\u0026lt;/code\u0026gt;.\n- **steamopenid**: Steam\u0026#39;s user authentication method using OpenID 2.0. The platform_token\u0026#39;s value is URL generated by Steam on web authentication\n- **facebook**: The platform_token’s value is the authorization code returned by Facebook OAuth\n- **google**: The platform_token’s value is the authorization code or idToken returned by Google OAuth\n- **googleplaygames**: The platform_token’s value is the authorization code or idToken returned by Google play games OAuth\n- **oculus**: The platform_token’s value is a string composed of Oculus\u0026#39;s user ID and the nonce separated by a colon (:).\n- **twitch**: The platform_token’s value is the authorization code returned by Twitch OAuth.\n- **discord**: The platform_token’s value is the authorization code returned by Discord OAuth\n- **android**: The device_id is the Android’s device ID\n- **ios**: The device_id is the iOS’s device ID.\n- **apple**: The platform_token’s value is the authorization code or idToken returned by Apple OAuth.(We will use this code to generate APP token)\n- **device**: Every device that doesn\u0026#39;t run Android and iOS is categorized as a device. The device_id is the device’s ID.\n- **justice**: The platform_token’s value is the designated user’s access token.\n- **epicgames**: The platform_token’s value is an access-token or authorization code obtained from Epicgames EOS Account Service.\n- **ps4**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **ps5**: The platform_token’s value is the authorization code returned by Sony OAuth.\n- **nintendo**: The platform_token’s value is the id_token returned by Nintendo OAuth.\n- **awscognito**: The platform_token’s value is the aws cognito access token or id token (JWT).\n- **live**: The platform_token’s value is xbox XSTS token\n- **xblweb**: The platform_token’s value is code returned by xbox after login\n- **netflix**: The platform_token’s value is GAT (Gamer Access Token) returned by Netflix backend\n- **snapchat**: The platform_token’s value is the authorization code returned by Snapchat OAuth.\n- **for specific generic oauth (OIDC)**: The platform_token’s value should be the same type as created OIDC auth type whether it is auth code, idToken or bearerToken.\n\n## Account Group\nSeveral platforms are grouped under account groups. The accounts on these platforms have the same platform user id. \nLogin using one of these platform will returns the same IAM user. \nFollowing is the current registered account grouping:\n- Steam group(steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group(psn)\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox) \n\t- live\n\t- xblweb\n- Oculus group(oculusgroup) \n\t- oculus\n\t- oculusweb \n\n## Access Token Content\nFollowing is the access token’s content:\n- **namespace**. It is the namespace the token was generated from.\n- **display_name**. The display name of the sub. It is empty if the token is generated from the client credential\n- **roles** (deprecated). The sub’s roles. It is empty if the token is generated from the client credential\n- **namespace_roles**. The sub’s roles scoped to namespace. Improvement from roles, which make the role scoped to specific namespace instead of global to publisher namespace\n- **permissions**. The sub or aud’ permissions\n- **bans**. The sub’s list of bans. It is used by the IAM client for validating the token.\n- **jflgs**. It stands for Justice Flags. It is a special flag used for storing additional status information regarding the sub. It is implemented as a bit mask. Following explains what each bit represents:\n\t- 1: Email Address Verified\n\t- 2: Phone Number Verified\n\t- 4: Anonymous\n\t- 8: Suspicious Login\n- **aud**. The aud is the client ID.\n- **iat**. The time the token issues at. It is in Epoch time format\n- **exp**. The time the token expires. It is in Epoch time format\n- **sub**. The UserID. The sub is omitted if the token is generated from client credential\n\n## Bans\nThe JWT contains user\u0026#39;s active bans with its expiry date. List of ban types can be obtained from /bans.\n\n## 2FA remember device\nTo remember device for 2FA, the request should provide cookie: device_token or header: Device-Token\n\n## Login Queue\nWhen the Login Queue is enabled and at capacity, this API returns a 202 Accepted response, with the queue ticket included in the response body.\n\n## Legal eligibility check\nIf user hasn\u0026#39;t accepted required legal policy (if any), the field \u0026lt;code\u0026gt;is_comply\u0026lt;/code\u0026gt; will be false in response and response token will have no permission.", "operationId": "PlatformTokenGrantV4", "parameters": [ { "description": "Platform ID to login with", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" }, { "description": "Client ID, only accept UUID version 4 without hyphen", "in": "formData", "name": "client_id", "type": "string" }, { "default": true, "description": "If directly create new account when not linked yet", "in": "formData", "name": "createHeadless", "type": "boolean", "x-omitempty": false }, { "description": "Device/hardware identifier", "in": "formData", "name": "device_id", "type": "string" }, { "description": "Mac address of device", "in": "formData", "name": "macAddress", "type": "string" }, { "description": "Token from platform auth", "in": "formData", "name": "platform_token", "type": "string" }, { "description": "Service label, it's used to validate PSN app when set AppId on ps5/ps4", "in": "formData", "name": "serviceLabel", "type": "number" }, { "default": false, "description": "If need skip set cookie. Default is false", "in": "formData", "name": "skipSetCookie", "type": "boolean", "x-omitempty": false }, { "description": "Value generated by transforming code verifier using code challenge method.", "in": "query", "name": "code_challenge", "type": "string" }, { "default": "plain", "description": "Method that is used to transform code verifier to code challenge", "enum": [ "S256", "plain" ], "in": "query", "name": "code_challenge_method", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "202": { "description": "Login ticket returned", "schema": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" } }, "400": { "description": "General request error", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "503": { "description": "Third Party Server timeout or unavailable", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "summary": "OAuth2 access token generation specific to platform", "tags": [ "OAuth2.0 V4" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v4/grant-by-platform" } }, "/iam/v4/oauth/simultaneousLogin": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "# In ALPHA — avoid using this API for now, reach out to AB support for inquiries\n\nSimultaneous login flow. \n\nThe primary goals of this project are to entitle players to authenticate on a native PC platform(Steam/Epic) and the PlayStation platform, \nlink their accounts, and provide support for platform sync with a valid 3rd platform access token.\n\n## Given a valid native ticket and empty simultaneous ticket, these cases will be failed\n- Native ticket\u0026#39;s account is not linked AGS account yet\n- Native ticket\u0026#39;s account is linked AGS account, but AGS account is not linked simultaneous platform yet\n- Native ticket\u0026#39;s account is linked AGS account, AGS account is linked simultaneous platform but there is no available simultaneous token.(only if this platform is expected to store the platform token)\n\n## Given a valid native ticket and empty simultaneous ticket, this case will be success\n- Native ticket\u0026#39;s account already linked AGS account, this AGS account already linked simultaneous platform. There is valid simultaneous token.(this is required only when this simultaneous is expected to cache platform token)\n\n## Given a valid native ticket token and valid simultaneous ticket, these cases will be failed\n#### Native ticket\u0026#39;s account is already linked with AGS account\n- Native linked AGS account is linked this simultaneous platform but is different with simultaneous ticket\u0026#39;s account\n- Native linked AGS account is not linked with simultaneous but has a linking history with simultaneous platform and it is different with simultaneous ticket\u0026#39;s account\n#### Native ticket\u0026#39;s account is not linked with AGS account and Simultaneous ticket\u0026#39;s account is already linked wth AGS account\n- Simultaneous linked AGS account is linked this native platform but is different with native ticket\u0026#39;s account\n- Simultaneous linked AGS account is not linked with native but has a linking history with native platform and it is different with native ticket\u0026#39;s account\n\n## Given a valid native ticket and valid simultaneous ticket, these cases will be success\n- Native ticket\u0026#39;s account \u0026amp; Simultaneous ticket\u0026#39;s account are both not linked to AGS account yet\n- Native ticket\u0026#39;s account \u0026amp; Simultaneous ticket\u0026#39;s account are already linked to same AGS account\n", "operationId": "SimultaneousLoginV4", "parameters": [ { "description": "Native platform id", "enum": [ "epicgames", "steam" ], "in": "formData", "name": "nativePlatform", "required": true, "type": "string" }, { "description": "Native platform ticket", "in": "formData", "name": "nativePlatformTicket", "required": true, "type": "string" }, { "description": "Simultaneous platform", "in": "formData", "name": "simultaneousPlatform", "type": "string" }, { "description": "Simultaneous ticket, can be authCode,authTicket,authToken", "in": "formData", "name": "simultaneousTicket", "type": "string" }, { "description": "Value generated by transforming code verifier using code challenge method.", "in": "query", "name": "code_challenge", "type": "string" }, { "default": "plain", "description": "Method that is used to transform code verifier to code challenge", "enum": [ "S256", "plain" ], "in": "query", "name": "code_challenge_method", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "202": { "description": "Login ticket returned.", "schema": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10216\u003c/td\u003e\u003ctd\u003eNative ticket is required\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10215\u003c/td\u003e\u003ctd\u003eSimultaneous ticket is required\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10220\u003c/td\u003e\u003ctd\u003eNative ticket's account linked AGS account is different with the one which simultaneous ticket's linked to\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10219\u003c/td\u003e\u003ctd\u003eNative ticket's account linked AGS is already linked simultaneous but different with the input simultaneous ticket's\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10217\u003c/td\u003e\u003ctd\u003eNative ticket's account linked AGS account has different linking history with input simultaneous ticket's\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10221\u003c/td\u003e\u003ctd\u003eSimultaneous ticket's account linked AGS is already linked native but different with the input native ticket's\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10218\u003c/td\u003e\u003ctd\u003eSimultaneous ticket's account linked AGS account has different linking history with input native ticket's\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Simultaneous login", "tags": [ "OAuth2.0 V4" ], "x-errorCodes": { "10215": "Simultaneous ticket is required", "10216": "Native ticket is required", "10217": "Native ticket's account linked AGS account has different linking history with input simultaneous ticket's", "10218": "Simultaneous ticket's account linked AGS account has different linking history with input native ticket's", "10219": "Native ticket's account linked AGS is already linked simultaneous but different with the input simultaneous ticket's", "10220": "Native ticket's account linked AGS account is different with the one which simultaneous ticket's linked to", "10221": "Simultaneous ticket's account linked AGS is already linked native but different with the input native ticket's", "20000": "internal server error", "20001": "unauthorized access" }, "x-operationid": "iam/public/oauth2/v4/login-simultaneous" } }, "/iam/v4/oauth/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Supports grant type:\n1. Grant Type == \u0026lt;code\u0026gt;authorization_code\u0026lt;/code\u0026gt;:\n\tIt generates the user token by given the authorization\n\tcode which generated in \u0026#34;/iam/v3/authenticate\u0026#34; API response. It should also pass\n\tin the redirect_uri, which should be the same as generating the\n\tauthorization code request.\n2. Grant Type == \u0026lt;code\u0026gt;password\u0026lt;/code\u0026gt;:\n\tThe grant type to use for authenticating a user, whether it\u0026#39;s by email / username and password combination\n\tor through platform.\n3. Grant Type == \u0026lt;code\u0026gt;refresh_token\u0026lt;/code\u0026gt;:\n\tUsed to get a new access token for a valid refresh token.\n4. Grant Type == \u0026lt;code\u0026gt;client_credentials\u0026lt;/code\u0026gt;:\n\tIt generates a token by checking the client credentials provided through Authorization header.\n5. Grant Type == \u0026lt;code\u0026gt;urn:ietf:params:oauth:grant-type:extend_client_credentials\u0026lt;/code\u0026gt;:\n\tIt generates a token by checking the client credentials provided through Authorization header. \n\tIt only allows publisher/studio namespace client. \n\tIn generated token:\n\t1. There wil be no roles, namespace_roles \u0026amp; permission. \n\t2. The scope will be fixed as \u0026#39;extend\u0026#39;.\n\t3. There will have a new field \u0026#39;extend_namespace\u0026#39;, the value is from token request body.\n6. Grant Type == \u0026lt;code\u0026gt;urn:ietf:params:oauth:grant-type:login_queue_ticket\u0026lt;/code\u0026gt;:\n\tIt generates a token by validating the login queue ticket against login queue service.\n\n## Access Token Content\nFollowing is the access token’s content:\n- **namespace**. It is the namespace the token was generated from.\n- **display_name**. The display name of the sub. It is empty if the token is generated from the client credential\n- **roles** (deprecated). The sub’s roles. It is empty if the token is generated from the client credential\n- **namespace_roles**. The sub’s roles scoped to namespace. Improvement from roles, which make the role scoped to specific namespace instead of global to publisher namespace\n- **permissions**. The sub or aud’ permissions\n- **bans**. The sub’s list of bans. It is used by the IAM client for validating the token.\n- **jflgs**. It stands for Justice Flags. It is a special flag used for storing additional status information regarding the sub. It is implemented as a bit mask. Following explains what each bit represents:\n\t- 1: Email Address Verified\n\t- 2: Phone Number Verified\n\t- 4: Anonymous\n\t- 8: Suspicious Login\n- **aud**. The aud is the targeted resource server.\n- **iat**. The time the token issues at. It is in Epoch time format\n- **exp**. The time the token expires. It is in Epoch time format\n- **client_id**. The UserID. The sub is omitted if the token is generated from client credential\t\n- **scope**. The scope of the access request, expressed as a list of space-delimited, case-sensitive strings\n\n## Bans\nThe JWT contains user\u0026#39;s active bans with its expiry date. List of ban types can be obtained from /bans.\n\n## Device Cookie Validation\n_**For grant type \u0026#34;password\u0026#34; only**_\nDevice Cookie is used to protect the user account from brute force login attack, \u0026lt;a target=\u0026#34;_blank\u0026#34; href=\u0026#34;https://owasp.org/www-community/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies\u0026#34;\u0026gt;more detail from OWASP\u0026lt;a\u0026gt;.\nIt will read the device cookie from cookie **Auth-Trust-Id**. If device cookie not found, it will generate a new one and set it into response body **auth_trust_id** when successfully login.\n\n## Track Login History\nIt will track login history to detect suspicious login activity, please provide **Device-Id** (alphanumeric) in request header parameter otherwise it will set to \u0026#34;unknown\u0026#34;.\nAlign with General Data Protection Regulation in Europe, user login history will be kept within 28 days by default\u0026#34;\n\n## 2FA remember device\nTo remember device for 2FA, the request should provide cookie: device_token or header: Device-Token\n\n## Login Queue\n_**For grant type \u0026#34;code\u0026#34; and \u0026#34;password\u0026#34; only**_\nWhen the Login Queue is enabled and at capacity, this API returns a 202 Accepted response, with the queue ticket included in the response body.\n\n## Legal eligibility check\nIf it is a user token request and user hasn\u0026#39;t accepted required legal policy (if any), the field \u0026lt;code\u0026gt;is_comply\u0026lt;/code\u0026gt; will be false in response and response token will have no permission.", "operationId": "TokenGrantV4", "parameters": [ { "default": "authorization_code", "description": "Grant Type", "enum": [ "authorization_code", "client_credentials", "password", "refresh_token", "urn:ietf:params:oauth:grant-type:extend_client_credentials", "urn:ietf:params:oauth:grant-type:login_queue_ticket" ], "in": "formData", "name": "grant_type", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" }, { "description": "Client Id (used with grant type 'authorization_code')", "in": "formData", "name": "client_id", "type": "string" }, { "description": "Confidential Client Secret (used with grant type 'authorization_code' when using confidential client with client_secret_post authentication method, i.e. not using HTTP Basic authentication)", "in": "formData", "name": "client_secret", "type": "string" }, { "description": "The authorization code received from the authorization server (used with grant type 'authorization_code')", "in": "formData", "name": "code", "type": "string" }, { "description": "Code verifier received from the authorization server", "in": "formData", "name": "code_verifier", "type": "string" }, { "description": "extend namespace, Used on grant type 'urn:ietf:params:oauth:grant-type:extend_client_credentials'.", "in": "formData", "name": "extendNamespace", "type": "string" }, { "description": "Extend expiration date of refresh token. Only available for grant type 'password'", "in": "formData", "name": "extend_exp", "type": "boolean", "x-omitempty": false }, { "description": "Login queue ticket(used with grant type `urn:ietf:params:oauth:grant-type:login_queue_ticket`)", "in": "formData", "name": "login_queue_ticket", "type": "string" }, { "description": "Password (used with grant type 'password')", "in": "formData", "name": "password", "type": "string" }, { "description": "Redirect URI (used with grant type 'authorization_code')", "in": "formData", "name": "redirect_uri", "type": "string" }, { "description": "Refresh Token (used with grant type 'refresh_token'). This field is optional if the request header provides the \"refresh_token\" cookie", "in": "formData", "name": "refresh_token", "type": "string" }, { "default": "commerce account social publishing analytics", "description": "Defines the access token scope when using grant type 'password' or 'client_credentials'. Can be multiple values delimited by whitespace.", "in": "formData", "name": "scope", "type": "string" }, { "description": "User Name (used with grant type 'password')", "in": "formData", "name": "username", "type": "string" }, { "description": "Auth-Trust-Id for Device Cookie Validation (Used on grant type 'password')", "in": "header", "name": "Auth-Trust-Id", "type": "string" }, { "description": "DeviceID (Used on grant type 'password' to track login history) ex. 90252d14544846d79f367148e3f9a3d9", "in": "header", "name": "device_id", "type": "string" }, { "description": "Value generated by transforming code verifier using code challenge method.", "in": "query", "name": "code_challenge", "type": "string" }, { "default": "plain", "description": "Method that is used to transform code verifier to code challenge", "enum": [ "S256", "plain" ], "in": "query", "name": "code_challenge_method", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Token returned", "schema": { "$ref": "#/definitions/oauthmodel.TokenWithDeviceCookieResponseV3" } }, "202": { "description": "Login ticket returned", "schema": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" } }, "400": { "description": "InvalidRequest", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "401": { "description": "Client authentication failed", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "403": { "description": "Unauthorized access", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } }, "429": { "description": "Too many failed auth attempt", "schema": { "$ref": "#/definitions/oauthmodel.ErrorResponse" } } }, "summary": "OAuth2 access token generation endpoint V4", "tags": [ "OAuth2.0 V4" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v4/grant-token" } }, "/iam/v4/oauth/token/exchange": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Generates target token.\nRequires basic header with ClientID and Secret, it should match the ClientID when call \u0026lt;code\u0026gt;/iam/v3/namespace/{namespace}/token/request [POST]\u0026lt;/code\u0026gt;\nThe code should be generated from \u0026lt;code\u0026gt;/iam/v3/namespace/{namespace}/token/request [POST]\u0026lt;/code\u0026gt;.\n\n## Login Queue\nWhen the Login Queue is enabled and at capacity, this API returns a 202 Accepted response, with the queue ticket included in the response body.", "operationId": "RequestTargetTokenResponseV4", "parameters": [ { "description": "code from request target token response", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "Additional info, it will be passed to login success event.", "in": "formData", "name": "additionalData", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Succeed to exchange token.", "schema": { "$ref": "#/definitions/oauthmodel.TokenResponseV3" } }, "202": { "description": "Login queue ticket returned", "schema": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate target token by code", "tags": [ "OAuth2.0 V4" ], "x-errorCodes": {}, "x-operationid": "iam/public/oauth2/v4/exchange-token" } }, "/iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users": { "post": { "consumes": [ "application/json" ], "description": "List User ID By Platform User ID\nReturns game user IDs from the given namespace.\nReturns a list of user IDs by given platform ID and list of platform user IDs. The max count is 100.\n\nSupported platform:\n- steam\n- steamopenid\n- ps4web\n- ps4\n- ps5 \n- live\n- xblweb \n- oculus\n\t- if query by app user id, please set the param **pidType** to **OCULUS_APP_USER_ID**\n- oculusweb\n- facebook\n- google\n- googleplaygames\n- twitch\n- discord\n- apple\n- device\n- justice\n- epicgames\n- nintendo\n- awscognito\n- netflix\n- snapchat\n- oidc platform id\n\nNote:\n**nintendo platform user ID**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1 \u0026lt;br\u0026gt;\nIf the request body exceed the max limitation, the max count will be in response body\u0026#39;s messageVariables: \u0026#34;messageVariables\u0026#34;: {\u0026#34;maxCount\u0026#34;: \u0026#34;100\u0026#34;}", "operationId": "PublicListUserIDByPlatformUserIDsV4", "parameters": [ { "description": "Platform user ID lookup request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformUserIDRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "default": false, "description": "if this is true, the platform user id in response will be raw id, if it is false, some platform user id will be encrypted, eg: xbox", "in": "query", "name": "rawPUID", "type": "boolean", "x-omitempty": false } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/accountcommon.UserPlatforms" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10229\u003c/td\u003e\u003ctd\u003erequest body exceed max limitation\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "List User ID By Platform User ID", "tags": [ "Users V4" ], "x-errorCodes": { "10229": "request body exceed max limitation", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v4/list-by-platform-id", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}": { "get": { "description": "Get User By Platform User ID.\nReturns user information by given platform ID and platform user ID.\nSeveral platforms are grouped under account groups, you can use either platform ID or platform group as platformId path parameter.\nexample: for steam network platform, you can use steamnetwork / steam / steamopenid as platformId path parameter.\nIf the target platform is not linked to the current user, will only return public information.\n----------\n\n**Supported Platforms:**\n- Steam group (steamnetwork):\n\t- steam\n\t- steamopenid\n- PSN group (psn):\n\t- ps4web\n\t- ps4\n\t- ps5\n- XBOX group(xbox):\n\t- live\n\t- xblweb\n- Oculus group (oculusgroup):\n\t- oculus\n\t- oculusweb\n- Google group (google):\n\t- google\n\t- googleplaygames:\n- epicgames\n- facebook\n- twitch\n- discord\n- android\n- ios\n- apple\n- device\n- nintendo\n- awscognito\n- amazon\n- netflix\n- snapchat\n- _oidc platform id_\n\nNote:\n- You can use either platform id or platform group as **platformId** parameter.\n- **Nintendo platform user id**: NSA ID need to be appended with Environment ID using colon as separator. e.g kmzwa8awaa:dd1", "operationId": "PublicGetUserByPlatformUserIDV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Platform User ID", "in": "path", "name": "platformUserId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User By Platform User ID", "tags": [ "Users V4" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/public/users/v4/get-by-platform-user-id", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/test_users": { "post": { "consumes": [ "application/json" ], "description": "Creates a test user without sending a verification code email. Supports accepting agreements for the created user via the acceptedPolicies attribute. See request body field descriptions for per-field details.", "operationId": "PublicCreateTestUserV4", "parameters": [ { "description": "Test user creation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createTestUserRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/account.createUserResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10177\u003c/td\u003e\u003ctd\u003eusername already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "[TEST FACILITY ONLY]Create test User", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10154": "country not found", "10177": "username already used", "20000": "internal server error", "20002": "validation error", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v4/create-test" } }, "/iam/v4/public/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "description": "Creates a new user with unique email address and username. Supports accepting agreements for the created user via the acceptedPolicies attribute. See request body field descriptions for per-field details.", "operationId": "PublicCreateUserV4", "parameters": [ { "description": "User registration request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createUserRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/account.createUserResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10177\u003c/td\u003e\u003ctd\u003eusername already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create User", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10152": "verification code not found", "10154": "country not found", "10177": "username already used", "10213": "country is blocked", "10222": "unique display name already exists", "20000": "internal server error", "20002": "validation error", "20003": "forbidden access", "20007": "too many requests", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v4/create" } }, "/iam/v4/public/namespaces/{namespace}/users/invite/{invitationId}": { "post": { "consumes": [ "application/json" ], "description": "Creates a user from a saved invitation, completing the registration with the submitted data. The user will be able to login after completing this step. See request body field descriptions for per-field details.", "operationId": "CreateUserFromInvitationV4", "parameters": [ { "description": "User registration request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createUserRequestV4" } }, { "description": "Invitation ID, should follow UUID version 4 without hyphen", "in": "path", "name": "invitationId", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/account.createUserResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10180\u003c/td\u003e\u003ctd\u003eadmin invitation not found or expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Create User From Invitation", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10154": "country not found", "10180": "admin invitation not found or expired", "10213": "country is blocked", "10222": "unique display name already exists", "20000": "internal server error", "20002": "validation error", "20003": "forbidden access" }, "x-operationid": "iam/public/users/v4/create-from-invitation" } }, "/iam/v4/public/namespaces/{namespace}/users/me": { "patch": { "consumes": [ "application/json" ], "description": "Updates the user based on given data. **Single request can update single field or multi fields.**\nSupported field {country, displayName, languageTag, dateOfBirth, avatarUrl, userName}\nCountry use ISO3166-1 alpha-2 two letter, e.g. US.\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.\n\n**Response body logic when user updating email address:**\n- User want to update email address of which have been verified, newEmailAddress response field will be filled with new email address.\n- User want to update email address of which have not been verified, { oldEmailAddress, emailAddress} response field will be filled with new email address.\n- User want to update email address of which have been verified and updated before, { oldEmailAddress, emailAddress} response field will be filled with verified email before. newEmailAddress response field will be filled with newest email address.", "operationId": "PublicUpdateUserV4", "parameters": [ { "description": "User profile update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PublicUserUpdateRequestV3" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10235\u003c/td\u003e\u003ctd\u003edate of birth not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10236\u003c/td\u003e\u003ctd\u003eusername not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10237\u003c/td\u003e\u003ctd\u003edisplay name not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10238\u003c/td\u003e\u003ctd\u003ecountry not allowed to update\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update User", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10133": "email already used", "10154": "country not found", "10213": "country is blocked", "10222": "unique display name already exists", "10235": "date of birth not allowed to update", "10236": "username not allowed to update", "10237": "display name not allowed to update", "10238": "country not allowed to update", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v4/update-my", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/email": { "put": { "consumes": [ "application/json" ], "description": "Updates the authenticated user\u0026#39;s email address.\nRequires a verification code from \u0026lt;code\u0026gt;/users/me/code/request\u0026lt;/code\u0026gt; with **UpdateEmailAddress** context.", "operationId": "PublicUpdateUserEmailAddressV4", "parameters": [ { "description": "Email update request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.EmailUpdateRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Operation succeeded" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Update My Email Address", "tags": [ "Users V4" ], "x-errorCodes": { "10133": "email already used", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20008": "user not found", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v4/update-my-email", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/headless/code/verify": { "post": { "consumes": [ "application/json" ], "description": "Upgrades a headless account by linking it with an email address, username, and password, and immediately verifies the email address afterward.\n\nBy upgrading the headless account into a full account, the user could use the email address, username, and password for using Justice IAM.\n\nTo obtain a verification code, use the [send verification code API](#operations-Users-PublicSendVerificationCodeV3).\n\nAlso has the ability to update user data (displayName, dateOfBirth, country) right after the upgrade process is done. See request body field descriptions for format details.", "operationId": "PublicUpgradeHeadlessAccountWithVerificationCodeV4", "parameters": [ { "description": "Headless account upgrade with verification code request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.upgradeHeadlessAccountWithVerificationCodeRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/account.UserResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10155\u003c/td\u003e\u003ctd\u003ecountry is not defined\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10130\u003c/td\u003e\u003ctd\u003euser under age\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10152\u003c/td\u003e\u003ctd\u003everification code not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10136\u003c/td\u003e\u003ctd\u003ecode is either been used or not valid anymore\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10149\u003c/td\u003e\u003ctd\u003everification contact type doesn't match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10148\u003c/td\u003e\u003ctd\u003everification code context doesn't match the required context\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10213\u003c/td\u003e\u003ctd\u003ecountry is blocked\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10154\u003c/td\u003e\u003ctd\u003ecountry not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10153\u003c/td\u003e\u003ctd\u003euser exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10170\u003c/td\u003e\u003ctd\u003eaccount is already a full account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10222\u003c/td\u003e\u003ctd\u003eunique display name already exists\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Upgrade headless account and automatically verified the email address if it is succeeded", "tags": [ "Users V4" ], "x-errorCodes": { "10130": "user under age", "10136": "code is either been used or not valid anymore", "10137": "code is expired", "10138": "code not match", "10139": "platform account not found", "10148": "verification code context doesn't match the required context", "10149": "verification contact type doesn't match", "10152": "verification code not found", "10153": "user exist", "10154": "country not found", "10155": "country is not defined", "10170": "account is already a full account", "10213": "country is blocked", "10222": "unique display name already exists", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v4/upgrade-and-validate", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/headless/verify": { "post": { "consumes": [ "application/json" ], "description": "Upgrade headless account to full account without verifying email address. Client does not need to provide verification code which sent to email address.", "operationId": "PublicUpgradeHeadlessAccountV4", "parameters": [ { "description": "Headless account upgrade request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.upgradeHeadlessAccountRequestV4" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/account.UserResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20022\u003c/td\u003e\u003ctd\u003etoken is not user token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10153\u003c/td\u003e\u003ctd\u003euser exist\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10170\u003c/td\u003e\u003ctd\u003eaccount is already a full account\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10177\u003c/td\u003e\u003ctd\u003eusername already used\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Upgrade user account to full account", "tags": [ "Users V4" ], "x-errorCodes": { "10133": "email already used", "10139": "platform account not found", "10153": "user exist", "10170": "account is already a full account", "10177": "username already used", "20000": "internal server error", "20001": "unauthorized access", "20002": "validation error", "20019": "unable to parse request body", "20022": "token is not user token" }, "x-operationid": "iam/public/users/v4/start-upgrade-my", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/authenticator/disable": { "delete": { "consumes": [ "application/json" ], "description": "Disables 2FA authenticator.\n------\n**Note**: **mfaToken** is required when all the following are enabled:\n - The environment variable **SENSITIVE_MFA_AUTH_ENABLED** is true\n - The **Two-Factor Authentication** is enabled in the IAM client where user logs in\n - Users already enabled the MFA\n", "operationId": "PublicDisableMyAuthenticatorV4", "parameters": [ { "description": "MFA disable request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Authenticator disabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10228\u003c/td\u003e\u003ctd\u003einvalid mfa token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Disable 2FA authenticator", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10228": "invalid mfa token", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/disable-my-authenticator", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/authenticator/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Enables 2FA authenticator.\n----------\nPrerequisites:\n- Generate the secret key/QR code uri by **_/iam/v4/public/namespaces/{namespace}/users/me/mfa/authenticator/key_**\n- Consume the secret key/QR code by an authenticator app\n- Get the code from the authenticator app\n", "operationId": "PublicEnableMyAuthenticatorV4", "parameters": [ { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Authenticator enabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10190\u003c/td\u003e\u003ctd\u003eauth secret key expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA authenticator", "tags": [ "Users V4" ], "x-errorCodes": { "10138": "code not match", "10139": "platform account not found", "10171": "email address not found", "10190": "auth secret key expired", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/enable-my-authenticator", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/authenticator/key": { "post": { "description": "Generates a secret key for a 3rd-party authenticator app.\nA QR code URI is also returned so that frontend can generate QR code image.", "operationId": "PublicGenerateMyAuthenticatorKeyV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Key generated", "schema": { "$ref": "#/definitions/model.AuthenticatorKeyResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate secret key for 3rd-party authenticate app", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/generate-my-authenticator-key", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode": { "get": { "deprecated": true, "description": "Returns 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.", "operationId": "PublicGetMyBackupCodesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Get backup codes", "schema": { "$ref": "#/definitions/model.BackupCodesResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/get-my-back-code", "x-security": {} }, "post": { "deprecated": true, "description": "Generates 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.", "operationId": "PublicGenerateMyBackupCodesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes generated", "schema": { "$ref": "#/definitions/model.BackupCodesResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/generate-my-backup-code", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode/disable": { "delete": { "consumes": [ "application/json" ], "description": "Disables 2FA backup codes.\n------\n**Note**: **mfaToken** is required when all the following are enabled:\n - The environment variable **SENSITIVE_MFA_AUTH_ENABLED** is true\n - The **Two-Factor Authentication** is enabled in the IAM client where user logs in\n - Users already enabled the MFA\n", "operationId": "PublicDisableMyBackupCodesV4", "parameters": [ { "description": "MFA disable request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Backup codes disabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10228\u003c/td\u003e\u003ctd\u003einvalid mfa token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Disable 2FA backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10228": "invalid mfa token", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/disable-my-backup-codes", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode/download": { "get": { "deprecated": true, "description": "Downloads backup codes as a file.", "operationId": "PublicDownloadMyBackupCodesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes downloaded", "schema": { "type": "file" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10195\u003c/td\u003e\u003ctd\u003eno valid backup code found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Download user backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "10195": "no valid backup code found", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/download-my-backup-codes", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode/enable": { "post": { "deprecated": true, "description": "Enables 2FA backup codes.", "operationId": "PublicEnableMyBackupCodesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Backup codes enabled", "schema": { "$ref": "#/definitions/model.BackupCodesResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/enable-my-backup-code", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCodes": { "get": { "description": "Returns existing 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.\nThe codes will be sent through linked email.", "operationId": "PublicGetBackupCodesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Language tag for email notification", "in": "query", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Backup codes sent to email" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get backup codes and send to email", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/list-my-backup-codes", "x-security": {} }, "post": { "description": "Generates 8-digit backup codes.\nEach code is a one-time code and will be deleted once used.\nThe codes will be sent through linked email.", "operationId": "PublicGenerateBackupCodesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Language tag for email notification", "in": "query", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Backup codes sent to email" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Generate backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/generate-my-backup-codes", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCodes/enable": { "post": { "description": "Enables 2FA backup codes.", "operationId": "PublicEnableBackupCodesV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Language tag for email notification", "in": "query", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Backup codes enabled and codes sent to email" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA backup codes", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/enable-my-backup-codes", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/challenge/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Verifies the user\u0026#39;s MFA code and generates an MFA token for the action.", "operationId": "PublicChallengeMyMFAV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "MFA code", "in": "formData", "name": "code", "type": "string" }, { "description": "MFA factor", "in": "formData", "name": "factor", "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "MFA token generated", "schema": { "$ref": "#/definitions/model.UserMFATokenResponseV4" } }, "204": { "description": "No MFA token generated" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Challenge User MFA", "tags": [ "Users V4" ], "x-errorCodes": { "10137": "code is expired", "10138": "code not match", "10365": "client not found", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/public/user-mfa/v4/verify-my-challenge", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/device": { "delete": { "description": "**(Test only)** Removes a trusted device. Requires a device_token cookie.", "operationId": "PublicRemoveTrustedDeviceV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "in": "header", "name": "Cookie", "required": false, "type": "string", "x-keys": [ "device_token" ], "x-required": [ "device_token" ] } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Device removed" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Remove Trusted Device", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/users/v4/revoke-trusted-device", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/email/code": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Sends an MFA email code.\n----------------\nSupported values of action:\n\t* ChangePassword\n\t* DisableMFAEmail\n", "operationId": "PublicSendMyMFAEmailCodeV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Sensitive Action", "in": "formData", "name": "action", "type": "string" }, { "description": "Language Tag", "in": "formData", "name": "languageTag", "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "code sent" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Send code for MFA email", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20007": "too many requests", "20008": "user not found" }, "x-operationid": "iam/public/user-mfa/v4/send-my-mfa-email", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/email/disable": { "post": { "consumes": [ "application/json" ], "description": "Disables 2FA email.\n------\n**Note**: **mfaToken** is required when all the following are enabled:\n - The environment variable **SENSITIVE_MFA_AUTH_ENABLED** is true\n - The **Two-Factor Authentication** is enabled in the IAM client where user logs in\n - Users already enabled the MFA\n", "operationId": "PublicDisableMyEmailV4", "parameters": [ { "description": "MFA disable request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "email disabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10228\u003c/td\u003e\u003ctd\u003einvalid mfa token\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Disable 2FA email", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10228": "invalid mfa token", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/public/user-mfa/v4/disable-my-email", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/email/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Enables 2FA email.", "operationId": "PublicEnableMyEmailV4", "parameters": [ { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "email enabled" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10138\u003c/td\u003e\u003ctd\u003ecode not match\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10137\u003c/td\u003e\u003ctd\u003ecode is expired\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10194\u003c/td\u003e\u003ctd\u003efactor already enabled\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Enable 2FA email", "tags": [ "Users V4" ], "x-errorCodes": { "10137": "code is expired", "10138": "code not match", "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10194": "factor already enabled", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/public/user-mfa/v4/enable-my-email", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/factor": { "get": { "description": "Returns all enabled 2FA factors for the user.", "operationId": "PublicGetMyEnabledFactorsV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Methods returned", "schema": { "$ref": "#/definitions/model.EnabledFactorsResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10193\u003c/td\u003e\u003ctd\u003emfa not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get user enabled factors", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10191": "email address not verified", "10193": "mfa not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/list-my-enabled", "x-security": {} }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Makes 2FA factor default.", "operationId": "PublicMakeFactorMyDefaultV4", "parameters": [ { "description": "factor", "in": "formData", "name": "factor", "required": true, "type": "string" }, { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Default method changed" }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10191\u003c/td\u003e\u003ctd\u003eemail address not verified\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10189\u003c/td\u003e\u003ctd\u003einvalid factor\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10192\u003c/td\u003e\u003ctd\u003efactor not enabled\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10171\u003c/td\u003e\u003ctd\u003eemail address not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20013\u003c/td\u003e\u003ctd\u003einsufficient permissions\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Make 2FA factor default", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "10171": "email address not found", "10189": "invalid factor", "10191": "email address not verified", "10192": "factor not enabled", "20000": "internal server error", "20001": "unauthorized access", "20008": "user not found", "20013": "insufficient permissions" }, "x-operationid": "iam/public/user-mfa/v4/set-my-default", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/status": { "get": { "description": "Retrieves the user\u0026#39;s MFA status.", "operationId": "PublicGetMyOwnMFAStatusV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "MFA status returned", "schema": { "$ref": "#/definitions/model.UserMFAStatusResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get My Own MFA Status", "tags": [ "Users V4" ], "x-errorCodes": { "10365": "client not found", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/public/user-mfa/v4/get-my-status", "x-security": {} }, "post": { "deprecated": true, "description": "Retrieves the user\u0026#39;s MFA status.\n---------\n**Substitute endpoint**: /iam/v4/public/namespaces/{namespace}/users/me/mfa/status [GET]\n", "operationId": "PublicGetMyMFAStatusV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "MFA status returned", "schema": { "$ref": "#/definitions/model.UserMFAStatusResponseV4" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20001\u003c/td\u003e\u003ctd\u003eunauthorized access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "403": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20003\u003c/td\u003e\u003ctd\u003eforbidden access\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10365\u003c/td\u003e\u003ctd\u003eclient not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User MFA Status", "tags": [ "Users V4" ], "x-errorCodes": { "10365": "client not found", "20000": "internal server error", "20001": "unauthorized access", "20003": "forbidden access", "20008": "user not found" }, "x-operationid": "iam/public/user-mfa/v4/update-my-status", "x-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/{userId}": { "get": { "description": "Returns only user\u0026#39;s public information.", "operationId": "PublicGetUserPublicInfoByUserIdV4", "parameters": [ { "description": "Accepts alphanumeric, with hyphens allowed between segments", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "User ID, should follow UUID version 4 without hyphen", "in": "path", "name": "userId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/model.UserPublicInfoResponseV4" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20008\u003c/td\u003e\u003ctd\u003euser not found\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10139\u003c/td\u003e\u003ctd\u003eplatform account not found\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Get User Public Info By User ID", "tags": [ "Users V4" ], "x-errorCodes": { "10139": "platform account not found", "20000": "internal server error", "20002": "validation error", "20008": "user not found" }, "x-operationid": "iam/public/users/v4/get", "x-security": {} } }, "/iam/v4/public/users/invite": { "post": { "consumes": [ "application/json" ], "description": "Invites a game studio admin user with a new namespace in multi tenant mode. Returns an error if the service multi tenant mode is set to false. The invited users will also be assigned with \u0026#34;User\u0026#34; role by default. See request body field descriptions for per-field details.", "operationId": "PublicInviteUserV4", "parameters": [ { "description": "Public user invitation request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PublicInviteUserRequestV4" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/model.InviteUserResponseV3" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20019\u003c/td\u003e\u003ctd\u003eunable to parse request body\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20002\u003c/td\u003e\u003ctd\u003evalidation error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10133\u003c/td\u003e\u003ctd\u003eemail already used\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10207\u003c/td\u003e\u003ctd\u003euser namespace is not available\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "422": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e10183\u003c/td\u003e\u003ctd\u003eunprocessable entity\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "429": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20007\u003c/td\u003e\u003ctd\u003etoo many requests\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } }, "security": [ { "authorization": [] } ], "summary": "Public invite admin user v4", "tags": [ "Users V4" ], "x-errorCodes": { "10133": "email already used", "10183": "unprocessable entity", "10207": "user namespace is not available", "20000": "internal server error", "20002": "validation error", "20007": "too many requests", "20019": "unable to parse request body" }, "x-operationid": "iam/public/users/v4/invite-admin" } }, "/iam/v4/public/users/me/headless/code/verify/forward": { "post": { "consumes": [ "application/json" ], "description": "This is a forward version for code verify.\nUpgrades a headless account by linking it with an email address, username, and password, and immediately verifies the email address afterward.\n\nBy upgrading the headless account into a full account, the user could use the email address, username, and password for using Justice IAM.\n\nTo obtain a verification code, use the [send verification code API](#operations-Users-PublicSendCodeForwardV3).\n\nAlso has the ability to update user data (if the user data field is specified) right after the upgrade account process is done.\n", "operationId": "PublicUpgradeHeadlessWithCodeV4Forward", "parameters": [ { "description": "Headless account upgrade with forwarded verification code request body.", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.upgradeHeadlessAccountWithVerificationCodeForwardRequestV4" } } ], "produces": [ "application/json" ], "responses": { "302": { "description": "Found. Redirected to login website with result.\u003c/br\u003e If validateOnly=true, then the redirection with contain validate result;\u003c/br\u003eIf validateOnly=false, then the redirection will contain the upgrade result. If upgrade succeed, then the response will contain upgrade_success_token", "headers": { "Location": { "description": "The Location header", "type": "string" } } } }, "security": [ { "authorization": [] } ], "summary": "Upgrade Headless Account with Auto-Verification (Forward)", "tags": [ "Users V4" ], "x-errorCodes": {}, "x-operationid": "iam/public/users/v4/upgrade-and-validate-forward" } } }, "definitions": { ".BannedBy": { "properties": { "DisplayName": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "DisplayName", "userId" ] }, ".validation": { "properties": { "allowAllSpecialCharacters": { "description": "allow all special Characters non words.", "type": "boolean", "x-omitempty": false }, "allowDigit": { "type": "boolean", "x-omitempty": false }, "allowLetter": { "type": "boolean", "x-omitempty": false }, "allowSpace": { "type": "boolean", "x-omitempty": false }, "allowUnicode": { "type": "boolean", "x-omitempty": false }, "avatarConfig": { "$ref": "#/definitions/accountcommon.AvatarConfig", "description": "if this config has valid value, will prefer to use and ignore other validation" }, "blockedWord": { "items": { "type": "string" }, "type": "array" }, "description": { "items": { "$ref": "#/definitions/.validation.description" }, "type": "array" }, "isCustomRegex": { "type": "boolean", "x-omitempty": false }, "letterCase": { "type": "string" }, "maxLength": { "format": "int32", "type": "integer" }, "maxRepeatingAlphaNum": { "format": "int32", "type": "integer" }, "maxRepeatingSpecialCharacter": { "format": "int32", "type": "integer" }, "minCharType": { "format": "int32", "type": "integer" }, "minLength": { "format": "int32", "type": "integer" }, "profanityFilter": { "type": "string" }, "regex": { "type": "string" }, "specialCharacterLocation": { "type": "string" }, "specialCharacters": { "items": { "type": "string" }, "type": "array" } }, "required": [ "allowAllSpecialCharacters", "allowDigit", "allowLetter", "allowSpace", "allowUnicode", "blockedWord", "description", "isCustomRegex", "letterCase", "maxLength", "maxRepeatingAlphaNum", "maxRepeatingSpecialCharacter", "minCharType", "minLength", "profanityFilter", "regex", "specialCharacterLocation", "specialCharacters" ] }, ".validation.description": { "properties": { "language": { "type": "string" }, "message": { "items": { "type": "string" }, "type": "array" } }, "required": [ "language", "message" ] }, "account.UserActiveBanResponseV4": { "properties": { "ban": { "type": "string" }, "banId": { "type": "string" }, "endDate": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "ban", "banId", "endDate" ] }, "account.UserPermissionsResponseV4": { "properties": { "action": { "format": "int32", "type": "integer" }, "resource": { "type": "string" }, "schedAction": { "format": "int32", "type": "integer" }, "schedCron": { "type": "string" }, "schedRange": { "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "resource" ] }, "account.UserResponseV4": { "properties": { "authType": { "type": "string" }, "bans": { "items": { "$ref": "#/definitions/account.UserActiveBanResponseV4" }, "type": "array" }, "country": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "dateOfBirth": { "format": "date-time", "type": "string", "x-nullable": false }, "deletionStatus": { "type": "boolean", "x-omitempty": false }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "emailVerified": { "type": "boolean", "x-omitempty": false }, "enabled": { "type": "boolean", "x-omitempty": false }, "lastDateOfBirthChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "lastEnabledChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "type": "string" }, "newEmailAddress": { "type": "string" }, "oldEmailAddress": { "type": "string" }, "permissions": { "items": { "$ref": "#/definitions/account.UserPermissionsResponseV4" }, "type": "array" }, "phoneNumber": { "type": "string" }, "phoneVerified": { "type": "boolean", "x-omitempty": false }, "platformId": { "type": "string" }, "platformUserId": { "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "authType", "bans", "country", "createdAt", "dateOfBirth", "deletionStatus", "displayName", "emailAddress", "emailVerified", "enabled", "lastDateOfBirthChangedTime", "lastEnabledChangedTime", "namespace", "oldEmailAddress", "permissions", "phoneVerified", "roles", "userId" ] }, "account.createTestUserRequestV4": { "properties": { "acceptedPolicies": { "items": { "$ref": "#/definitions/legal.AcceptedPoliciesRequest" }, "type": "array" }, "authType": { "default": "EMAILPASSWD", "description": "Authentication type. Possible value: EMAILPASSWD.", "enum": [ "EMAILPASSWD" ], "type": "string" }, "country": { "description": "ISO3166-1 alpha-2 two letter country code, e.g. US.", "type": "string" }, "dateOfBirth": { "description": "Date of birth in YYYY-MM-DD format, e.g. 1990-01-01. Valid values between 1905-01-01 and current date.", "type": "string" }, "displayName": { "description": "User display name. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "type": "string" }, "emailAddress": { "description": "User email address. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "type": "string" }, "password": { "description": "User password. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "type": "string" }, "passwordMD5Sum": { "type": "string" }, "uniqueDisplayName": { "description": "Unique display name. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "type": "string" }, "username": { "description": "Username. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "type": "string" }, "verified": { "description": "Whether the new test user is already verified.", "type": "boolean", "x-omitempty": false } }, "required": [ "authType", "country", "dateOfBirth", "displayName", "emailAddress", "password", "passwordMD5Sum", "username", "verified" ] }, "account.createTestUserResponseV4": { "properties": { "authType": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "namespace": { "type": "string" }, "password": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" }, "verified": { "type": "boolean", "x-omitempty": false } }, "required": [ "authType", "country", "dateOfBirth", "displayName", "emailAddress", "namespace", "password", "userId", "username", "verified" ] }, "account.createTestUsersRequestV4": { "properties": { "acceptedPolicies": { "items": { "$ref": "#/definitions/legal.AcceptedPoliciesRequest" }, "type": "array" }, "count": { "format": "int32", "type": "integer" }, "userInfo": { "$ref": "#/definitions/account.userInfo" } }, "required": [ "count", "userInfo" ] }, "account.createTestUsersResponseV4": { "properties": { "data": { "items": { "$ref": "#/definitions/account.createTestUserResponseV4" }, "type": "array" } }, "required": [ "data" ] }, "account.createUserRequestV4": { "properties": { "acceptedPolicies": { "items": { "$ref": "#/definitions/legal.AcceptedPoliciesRequest" }, "type": "array" }, "authType": { "default": "EMAILPASSWD", "description": "Authentication type. Possible value: EMAILPASSWD.", "enum": [ "EMAILPASSWD" ], "example": "EMAILPASSWD", "type": "string" }, "code": { "description": "Verification code. Required when mandatoryEmailVerificationEnabled config is true. Refer to the config from /iam/v3/public/namespaces/{namespace}/config/{configKey} [GET] API.", "example": "123456", "type": "string" }, "country": { "description": "ISO3166-1 alpha-2 two letter country code, e.g. US.", "example": "US", "type": "string" }, "dateOfBirth": { "description": "Date of birth in YYYY-MM-DD format. Valid values are between 1905-01-01 and the current date.", "example": "1990-01-15", "type": "string" }, "displayName": { "description": "User display name. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "example": "John Doe", "type": "string" }, "emailAddress": { "description": "User email address. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "example": "user@example.com", "type": "string" }, "password": { "description": "User password. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "example": "SecurePass123!", "type": "string" }, "passwordMD5Sum": { "type": "string" }, "reachMinimumAge": { "example": "true", "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "description": "Unique display name. Required when uniqueDisplayNameEnabled/UNIQUE_DISPLAY_NAME_ENABLED is true. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "example": "JohnDoe#1234", "type": "string" }, "username": { "description": "Username. Refer to /v3/public/namespaces/{namespace}/inputValidations API for rules.", "example": "johndoe", "type": "string" } }, "required": [ "authType", "country", "emailAddress", "username" ] }, "account.createUserResponseV4": { "properties": { "authType": { "example": "EMAILPASSWD", "type": "string" }, "country": { "example": "US", "type": "string" }, "dateOfBirth": { "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "username": { "example": "johndoe", "type": "string" } }, "required": [ "authType", "country", "dateOfBirth", "displayName", "emailAddress", "namespace", "userId", "username" ] }, "account.upgradeHeadlessAccountRequestV4": { "properties": { "dateOfBirth": { "description": "Optional date of birth to update after upgrade. Format: YYYY-MM-DD, e.g. 2019-04-29.", "example": "1990-01-15", "type": "string" }, "displayName": { "description": "Optional user display name to update after upgrade.", "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "password": { "example": "SecurePass123!", "type": "string" }, "uniqueDisplayName": { "description": "Optional user display name to update after upgrade.", "example": "JohnDoe#1234", "type": "string" }, "username": { "example": "johndoe", "type": "string" } }, "required": [ "emailAddress", "password", "username" ] }, "account.upgradeHeadlessAccountWithVerificationCodeForwardRequestV4": { "properties": { "acceptedPolicies": { "items": { "$ref": "#/definitions/legal.AcceptedPoliciesRequest" }, "type": "array" }, "code": { "example": "123456", "type": "string" }, "country": { "description": "Optional country to update after upgrade. Format: ISO3166-1 alpha-2 two letter, e.g. US.", "example": "US", "type": "string" }, "dateOfBirth": { "description": "Optional date of birth to update after upgrade. Format: YYYY-MM-DD, e.g. 2019-04-29.", "example": "1990-01-15", "type": "string" }, "displayName": { "description": "Optional user display name to update after upgrade.", "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "password": { "example": "SecurePass123!", "type": "string" }, "reachMinimumAge": { "example": "true", "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "description": "Optional user display name to update after upgrade.", "example": "JohnDoe#1234", "type": "string" }, "username": { "example": "johndoe", "type": "string" }, "validateOnly": { "example": "false", "type": "boolean", "x-omitempty": false } }, "required": [ "code", "emailAddress", "password", "username" ] }, "account.upgradeHeadlessAccountWithVerificationCodeRequestV4": { "properties": { "code": { "example": "123456", "type": "string" }, "country": { "description": "Optional country to update after upgrade. Format: ISO3166-1 alpha-2 two letter, e.g. US.", "example": "US", "type": "string" }, "dateOfBirth": { "description": "Optional date of birth to update after upgrade. Format: YYYY-MM-DD, e.g. 2019-04-29.", "example": "1990-01-15", "type": "string" }, "displayName": { "description": "Optional user display name to update after upgrade.", "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "password": { "example": "SecurePass123!", "type": "string" }, "reachMinimumAge": { "example": "true", "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "description": "Optional user display name to update after upgrade.", "example": "JohnDoe#1234", "type": "string" }, "username": { "example": "johndoe", "type": "string" }, "validateOnly": { "example": "false", "type": "boolean", "x-omitempty": false } }, "required": [ "code", "emailAddress", "password", "username" ] }, "account.userInfo": { "properties": { "country": { "type": "string" } } }, "accountcommon.AllowedPermission": { "properties": { "allowedActions": { "items": { "format": "int32", "type": "integer" }, "type": "array" }, "resource": { "type": "string" } }, "required": [ "allowedActions", "resource" ] }, "accountcommon.AvatarConfig": { "properties": { "allowedPrefixes": { "items": { "type": "string" }, "type": "array" }, "preferRegex": { "type": "boolean", "x-omitempty": false }, "regex": { "type": "string" } }, "required": [ "allowedPrefixes", "preferRegex", "regex" ] }, "accountcommon.Ban": { "properties": { "Ban": { "type": "string" }, "Description": { "type": "string" } }, "required": [ "Ban", "Description" ] }, "accountcommon.BanReason": { "properties": { "Description": { "type": "string" }, "Reason": { "type": "string" } }, "required": [ "Description", "Reason" ] }, "accountcommon.BanReasonV3": { "properties": { "description": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "description", "reason" ] }, "accountcommon.BanReasons": { "properties": { "Reasons": { "items": { "$ref": "#/definitions/accountcommon.BanReason" }, "type": "array" } }, "required": [ "Reasons" ] }, "accountcommon.BanReasonsV3": { "properties": { "reasons": { "items": { "$ref": "#/definitions/accountcommon.BanReasonV3" }, "type": "array" } }, "required": [ "reasons" ] }, "accountcommon.BanV3": { "properties": { "ban": { "type": "string" }, "description": { "type": "string" }, "descriptions": { "$ref": "#/definitions/accountcommon.Description" }, "type": { "type": "string" } }, "required": [ "ban", "type" ] }, "accountcommon.BannedByV3": { "properties": { "displayName": { "example": "Admin User", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "displayName", "userId" ] }, "accountcommon.Bans": { "properties": { "Bans": { "items": { "$ref": "#/definitions/accountcommon.Ban" }, "type": "array" } }, "required": [ "Bans" ] }, "accountcommon.BansV3": { "properties": { "bans": { "items": { "$ref": "#/definitions/accountcommon.BanV3" }, "type": "array" } }, "required": [ "bans" ] }, "accountcommon.ClientModulePermission": { "properties": { "moduleId": { "type": "string" }, "selectedGroups": { "items": { "$ref": "#/definitions/accountcommon.ClientSelectedGroup" }, "type": "array" } }, "required": [ "moduleId", "selectedGroups" ] }, "accountcommon.ClientPermission": { "properties": { "Action": { "format": "int32", "type": "integer" }, "Resource": { "type": "string" } }, "required": [ "Action", "Resource" ] }, "accountcommon.ClientPermissionSet": { "properties": { "docLink": { "type": "string" }, "groups": { "items": { "$ref": "#/definitions/accountcommon.PermissionGroup" }, "type": "array" }, "module": { "type": "string" }, "moduleId": { "type": "string" }, "package": { "type": "string" } }, "required": [ "docLink", "groups", "module", "moduleId" ] }, "accountcommon.ClientPermissionV3": { "properties": { "action": { "format": "int32", "type": "integer" }, "resource": { "type": "string" } }, "required": [ "action", "resource" ] }, "accountcommon.ClientPermissions": { "properties": { "Permissions": { "items": { "$ref": "#/definitions/accountcommon.ClientPermission" }, "type": "array" } }, "required": [ "Permissions" ] }, "accountcommon.ClientPermissionsV3": { "properties": { "permissions": { "items": { "$ref": "#/definitions/accountcommon.ClientPermissionV3" }, "type": "array" } }, "required": [ "permissions" ] }, "accountcommon.ClientSelectedGroup": { "properties": { "groupId": { "type": "string" }, "selectedActions": { "items": { "format": "int32", "type": "integer" }, "type": "array" } }, "required": [ "groupId", "selectedActions" ] }, "accountcommon.ConflictedUserPlatformAccounts": { "properties": { "platformUserID": { "type": "string" }, "publisherAccounts": { "items": { "$ref": "#/definitions/accountcommon.UserWithLinkedPlatformAccounts" }, "type": "array" } }, "required": [ "platformUserID", "publisherAccounts" ] }, "accountcommon.Country": { "properties": { "AgeRestriction": { "format": "int32", "type": "integer" }, "CountryCode": { "type": "string" }, "CountryName": { "type": "string" }, "Enable": { "type": "boolean", "x-omitempty": false }, "Namespace": { "type": "string" } }, "required": [ "AgeRestriction", "CountryCode", "CountryName", "Enable", "Namespace" ] }, "accountcommon.CountryAgeRestriction": { "properties": { "AgeRestriction": { "format": "int32", "type": "integer" }, "CountryCode": { "type": "string" }, "CountryName": { "type": "string" }, "Enable": { "type": "boolean", "x-omitempty": false } }, "required": [ "AgeRestriction", "CountryCode", "CountryName", "Enable" ] }, "accountcommon.Description": { "properties": { "en-US": { "type": "string" }, "zh-CN": { "type": "string" } }, "required": [ "en-US", "zh-CN" ] }, "accountcommon.DistinctLinkedPlatformV3": { "properties": { "details": { "items": { "$ref": "#/definitions/accountcommon.SimpleUserPlatformInfoV3" }, "type": "array" }, "linkedAt": { "type": "string" }, "logoURL": { "type": "string" }, "platformDisplayName": { "type": "string" }, "platformGroup": { "type": "string" }, "platformName": { "type": "string" }, "platformUserId": { "type": "string" }, "status": { "type": "string" } }, "required": [ "linkedAt", "platformGroup", "platformName", "status" ] }, "accountcommon.DistinctPlatformResponseV3": { "properties": { "platforms": { "items": { "$ref": "#/definitions/accountcommon.DistinctLinkedPlatformV3" }, "type": "array" } }, "required": [ "platforms" ] }, "accountcommon.GroupAndRoleMappingForPatch": { "properties": { "assignNamespaces": { "description": "role assign namespaces, if empty, then the role must a global and will assign with * as namespace", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "group": { "description": "gmail account group, for now, we only accept email as the group name", "type": "string" }, "roleId": { "description": "role that will assign to if match this group", "type": "string" } }, "required": [ "group" ] }, "accountcommon.GroupAndRoleMappingForUpdate": { "properties": { "assignNamespaces": { "description": "role assign namespaces, if empty, then the role must a global and will assign with * as namespace", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "group": { "description": "gmail account group, for now, we only accept email as the group name", "type": "string" }, "roleId": { "description": "role that will assign to if match this group", "type": "string" } }, "required": [ "group", "roleId" ] }, "accountcommon.InputValidationDescription": { "properties": { "language": { "type": "string" }, "message": { "items": { "type": "string" }, "type": "array" } }, "required": [ "language", "message" ] }, "accountcommon.JWTBanV3": { "properties": { "ban": { "example": "CHAT_SEND", "type": "string" }, "disabledDate": { "format": "date-time", "type": "string", "x-nullable": true }, "enabled": { "type": "boolean", "x-omitempty": false }, "endDate": { "example": "2026-12-31T23:59:59Z", "format": "date-time", "type": "string", "x-nullable": false }, "targetedNamespace": { "type": "string" } }, "required": [ "ban", "enabled", "endDate", "targetedNamespace" ] }, "accountcommon.ListUsersWithPlatformAccountsResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/accountcommon.UserWithPlatformAccounts" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" }, "totalData": { "format": "int64", "type": "integer" } }, "required": [ "data", "paging", "totalData" ] }, "accountcommon.NamespaceRole": { "properties": { "namespace": { "example": "mygame", "type": "string" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "namespace", "roleId" ] }, "accountcommon.NetflixCertificates": { "properties": { "encryptedPrivateKey": { "type": "string" }, "encryptedPrivateKeyName": { "type": "string" }, "publicCertificate": { "type": "string" }, "publicCertificateName": { "type": "string" }, "rootCertificate": { "type": "string" }, "rootCertificateName": { "type": "string" } }, "required": [ "encryptedPrivateKey", "encryptedPrivateKeyName", "publicCertificate", "publicCertificateName", "rootCertificate", "rootCertificateName" ] }, "accountcommon.OverrideRolePermission": { "properties": { "actions": { "items": { "format": "int32", "type": "integer" }, "type": "array" }, "resource": { "type": "string" } }, "required": [ "actions", "resource" ] }, "accountcommon.Pagination": { "properties": { "First": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=0\u0026limit=20", "type": "string" }, "Last": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=80\u0026limit=20", "type": "string" }, "Next": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=40\u0026limit=20", "type": "string" }, "Previous": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=0\u0026limit=20", "type": "string" } }, "required": [ "First", "Last", "Next", "Previous" ] }, "accountcommon.PaginationV3": { "properties": { "first": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=0\u0026limit=20", "type": "string" }, "last": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=80\u0026limit=20", "type": "string" }, "next": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=40\u0026limit=20", "type": "string" }, "previous": { "example": "https://api.example.com/iam/v3/admin/namespaces/mygame/users?offset=0\u0026limit=20", "type": "string" } }, "required": [ "first", "last", "next", "previous" ] }, "accountcommon.Permission": { "properties": { "Action": { "example": "2", "format": "int32", "type": "integer" }, "Resource": { "example": "ADMIN:NAMESPACE:{namespace}:USER", "type": "string" }, "SchedAction": { "example": "4", "format": "int32", "type": "integer" }, "SchedCron": { "example": "0 0 * * *", "type": "string" }, "SchedRange": { "items": { "type": "string" }, "type": "array" } }, "required": [ "Action", "Resource" ] }, "accountcommon.PermissionGroup": { "properties": { "group": { "type": "string" }, "groupId": { "type": "string" }, "package": { "type": "string" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.AllowedPermission" }, "type": "array" } }, "required": [ "group", "groupId", "permissions" ] }, "accountcommon.PermissionV3": { "properties": { "action": { "example": "2", "format": "int32", "type": "integer" }, "resource": { "example": "ADMIN:NAMESPACE:{namespace}:USER", "type": "string" }, "schedAction": { "example": "4", "format": "int32", "type": "integer" }, "schedCron": { "example": "0 0 * * *", "type": "string" }, "schedRange": { "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "resource" ] }, "accountcommon.Permissions": { "properties": { "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" } }, "required": [ "Permissions" ] }, "accountcommon.PermissionsV3": { "properties": { "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" } }, "required": [ "permissions" ] }, "accountcommon.PlatformAccount": { "properties": { "namespace": { "type": "string" }, "platformId": { "type": "string" }, "platformUserId": { "type": "string" } }, "required": [ "namespace", "platformUserId" ] }, "accountcommon.PlatformLinkingHistory": { "properties": { "platformDisplayName": { "type": "string" }, "platformID": { "type": "string" }, "platformUserID": { "type": "string" } }, "required": [ "platformDisplayName", "platformID", "platformUserID" ] }, "accountcommon.PlatformUserInformationV3": { "properties": { "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "linkedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "type": "string" }, "platformId": { "type": "string" }, "platformUserId": { "type": "string" }, "xboxUserId": { "type": "string" } }, "required": [ "linkedAt", "namespace", "platformId", "platformUserId" ] }, "accountcommon.ProfileUpdateConfig": { "properties": { "minimumAllowedInterval": { "description": "max value is 366*24=8784 hours", "format": "int64", "type": "integer" } } }, "accountcommon.QueryCursor": { "properties": { "cursorTime": { "description": "format is RFC3339Nano, example: 2006-01-02T15:04:05.999999999Z07:00", "type": "string" }, "userId": { "type": "string" } }, "required": [ "cursorTime", "userId" ] }, "accountcommon.RegisteredDomain": { "properties": { "affectedClientIDs": { "items": { "type": "string" }, "type": "array" }, "domain": { "type": "string" }, "namespaces": { "items": { "type": "string" }, "type": "array" }, "roleId": { "type": "string" }, "ssoCfg": { "$ref": "#/definitions/accountcommon.SsoConfig" } }, "required": [ "affectedClientIDs", "domain", "namespaces", "roleId" ] }, "accountcommon.ReplaceRolePermission": { "properties": { "replacement": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "target": { "type": "string" } }, "required": [ "replacement", "target" ] }, "accountcommon.Role": { "properties": { "AdminRole": { "type": "boolean", "x-omitempty": false }, "Deletable": { "type": "boolean", "x-omitempty": false }, "IsWildcard": { "type": "boolean", "x-omitempty": false }, "Managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManager" }, "type": "array" }, "Members": { "items": { "$ref": "#/definitions/accountcommon.RoleMember" }, "type": "array" }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "RoleId": { "type": "string" }, "RoleName": { "type": "string" } }, "required": [ "AdminRole", "Deletable", "IsWildcard", "Managers", "Members", "Permissions", "RoleId", "RoleName" ] }, "accountcommon.RoleManager": { "properties": { "DisplayName": { "example": "Admin User", "type": "string" }, "Namespace": { "example": "mygame", "type": "string" }, "UserId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "DisplayName", "Namespace", "UserId" ] }, "accountcommon.RoleManagerV3": { "properties": { "displayName": { "example": "Admin User", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "displayName", "namespace", "userId" ] }, "accountcommon.RoleMember": { "properties": { "DisplayName": { "example": "John Doe", "type": "string" }, "Namespace": { "example": "mygame", "type": "string" }, "UserId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "DisplayName", "Namespace", "UserId" ] }, "accountcommon.RoleMemberV3": { "properties": { "displayName": { "example": "John Doe", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "displayName", "namespace", "userId" ] }, "accountcommon.RoleV3": { "properties": { "adminRole": { "type": "boolean", "x-omitempty": false }, "isWildcard": { "type": "boolean", "x-omitempty": false }, "managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManagerV3" }, "type": "array" }, "members": { "items": { "$ref": "#/definitions/accountcommon.RoleMemberV3" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleId": { "type": "string" }, "roleName": { "type": "string" } }, "required": [ "adminRole", "isWildcard", "managers", "members", "permissions", "roleId", "roleName" ] }, "accountcommon.SimpleUserPlatformInfoV3": { "properties": { "displayName": { "type": "string" }, "linkedAt": { "type": "string" }, "namespace": { "type": "string" }, "originNamespace": { "type": "string" }, "platformId": { "type": "string" } }, "required": [ "linkedAt", "namespace", "originNamespace" ] }, "accountcommon.SsoConfig": { "properties": { "googleKey": { "description": "Can't be null, If empty, need set it as {}'", "type": "object" }, "groupConfigs": { "items": { "$ref": "#/definitions/accountcommon.GroupAndRoleMappingForUpdate" }, "minItems": 1, "type": "array" } }, "required": [ "googleKey", "groupConfigs" ] }, "accountcommon.SsoConfigPatchReq": { "properties": { "googleKey": { "description": "This is optional", "type": "object" }, "groupConfigs": { "items": { "$ref": "#/definitions/accountcommon.GroupAndRoleMappingForPatch" }, "minItems": 0, "type": "array" } } }, "accountcommon.TagResponse": { "properties": { "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "id": { "type": "string" }, "namespace": { "type": "string" }, "tagName": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "createdAt", "id", "namespace", "tagName", "updatedAt" ] }, "accountcommon.TagsGetResponseV3": { "properties": { "data": { "items": { "$ref": "#/definitions/accountcommon.TagResponse" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "accountcommon.UserInformationV3": { "properties": { "country": { "type": "string" }, "displayName": { "type": "string" }, "emailAddresses": { "items": { "type": "string" }, "type": "array" }, "phoneNumber": { "type": "string" }, "platformUsers": { "items": { "$ref": "#/definitions/accountcommon.PlatformUserInformationV3" }, "type": "array" }, "uniqueDisplayName": { "type": "string" }, "username": { "type": "string" }, "xboxUserId": { "type": "string" } }, "required": [ "emailAddresses", "platformUsers" ] }, "accountcommon.UserLinkedPlatform": { "properties": { "DisplayName": { "type": "string" }, "EmailAddress": { "type": "string" }, "LinkedAt": { "type": "string" }, "Namespace": { "type": "string" }, "OriginNamespace": { "type": "string" }, "PlatformId": { "type": "string" }, "PlatformUserId": { "type": "string" }, "UserId": { "type": "string" }, "XUID": { "type": "string" } }, "required": [ "LinkedAt", "Namespace", "OriginNamespace", "UserId" ] }, "accountcommon.UserLinkedPlatformV3": { "properties": { "accountGroup": { "type": "string" }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "linkedAt": { "type": "string" }, "namespace": { "type": "string" }, "originNamespace": { "type": "string" }, "platformId": { "type": "string" }, "platformUserId": { "type": "string" }, "userId": { "type": "string" }, "xuid": { "type": "string" } }, "required": [ "accountGroup", "linkedAt", "namespace", "originNamespace", "userId" ] }, "accountcommon.UserLinkedPlatformsResponseV3": { "properties": { "data": { "items": { "$ref": "#/definitions/accountcommon.UserLinkedPlatformV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "accountcommon.UserPlatformInfo": { "properties": { "platformId": { "type": "string" }, "platformUserId": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "platformId", "platformUserId", "userId" ] }, "accountcommon.UserPlatforms": { "properties": { "userIdPlatforms": { "items": { "$ref": "#/definitions/accountcommon.UserPlatformInfo" }, "type": "array" } }, "required": [ "userIdPlatforms" ] }, "accountcommon.UserSearchByPlatformIDResult": { "properties": { "DisplayName": { "type": "string" }, "EmailAddress": { "type": "string" }, "LinkedPlatforms": { "items": { "$ref": "#/definitions/accountcommon.UserLinkedPlatform" }, "type": "array" }, "PhoneNumber": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "DisplayName", "EmailAddress", "LinkedPlatforms", "PhoneNumber", "UserId" ] }, "accountcommon.UserSearchResult": { "properties": { "DisplayName": { "type": "string" }, "EmailAddress": { "type": "string" }, "LinkedPlatforms": { "items": { "$ref": "#/definitions/accountcommon.UserLinkedPlatform" }, "type": "array" }, "PhoneNumber": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "DisplayName", "EmailAddress", "LinkedPlatforms", "PhoneNumber", "UserId" ] }, "accountcommon.UserWithLinkedPlatformAccounts": { "properties": { "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "linkedPlatforms": { "items": { "$ref": "#/definitions/accountcommon.PlatformAccount" }, "type": "array" }, "namespace": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "displayName", "emailAddress", "linkedPlatforms", "namespace", "uniqueDisplayName", "userId" ] }, "accountcommon.UserWithPlatformAccounts": { "properties": { "linkedPlatforms": { "items": { "$ref": "#/definitions/accountcommon.PlatformAccount" }, "type": "array" }, "namespace": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "linkedPlatforms", "namespace", "userId" ] }, "bloom.FilterJSON": { "properties": { "bits": { "items": { "format": "uint64", "type": "integer" }, "type": "array" }, "k": { "format": "integer", "type": "integer" }, "m": { "format": "integer", "type": "integer" } }, "required": [ "bits", "k", "m" ] }, "clientmodel.ClientCreateRequest": { "properties": { "ClientId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "ClientName": { "example": "My Game Client", "type": "string" }, "ClientPermissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "Namespace": { "example": "mygame", "type": "string" }, "RedirectUri": { "example": "https://example.com/callback", "type": "string" }, "Secret": { "example": "ClientSecret123!", "type": "string" }, "TwoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "ClientId", "ClientName", "ClientPermissions", "Namespace", "RedirectUri", "Secret", "TwoFactorEnabled" ] }, "clientmodel.ClientCreationResponse": { "properties": { "ClientId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "ClientName": { "example": "My Game Client", "type": "string" }, "ClientPermissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "Namespace": { "example": "mygame", "type": "string" }, "RedirectUri": { "example": "https://example.com/callback", "type": "string" }, "TwoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "ClientId", "ClientName", "ClientPermissions", "Namespace", "RedirectUri", "TwoFactorEnabled" ] }, "clientmodel.ClientCreationV3Request": { "properties": { "audiences": { "description": "List of target client IDs who are intended to receive the token.", "items": { "type": "string" }, "type": "array" }, "baseUri": { "description": "A base URI of the application. Used in audience checking. Required if the application type is a server.", "example": "https://api.example.com", "type": "string" }, "clientId": { "description": "The client ID. Must be UUID v4 without hyphens.", "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "clientName": { "description": "The client name.", "example": "My Game Client", "type": "string" }, "clientPermissions": { "description": "Contains the client's permissions.", "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "clientPlatform": { "description": "Available client platforms: Playstation, Xbox, Steam, Epic, IOS, GooglePlay, Nintendo, Oculus. Default: empty string.", "example": "Steam", "type": "string" }, "deletable": { "description": "Flag to identify whether the client is deletable. Defaults to true on creation.", "type": "boolean", "x-omitempty": false }, "description": { "description": "length 0~1024", "example": "Game client for player authentication", "type": "string" }, "modulePermissions": { "description": "Module-based permissions for this client:\n1. Only applicable for Confidential client type\n2. Currently used in Multi Tenant mode only\n3. To view the available module permission list, refer to _GET /iam/v3/admin/clientConfig/permissions_", "items": { "$ref": "#/definitions/accountcommon.ClientModulePermission" }, "type": "array" }, "namespace": { "description": "The namespace where the client lives.", "example": "mygame", "type": "string" }, "oauthAccessTokenExpiration": { "description": "min value 1 second, max value 86400 seconds. Default: 0 (uses value from environment variable).", "example": "3600", "format": "int32", "type": "integer" }, "oauthAccessTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, or HOURS. Default: SECONDS.", "example": "SECONDS", "type": "string" }, "oauthClientType": { "description": "OAuth client type. Allowed values:\n- Public: uses PKCE flow, must not have a client secret\n- Confidential: has a client secret, does not use PKCE flow", "example": "Confidential", "type": "string" }, "oauthRefreshTokenExpiration": { "description": "min value 1 seconds, max value 2592000 seconds. Default: 0 (uses value from environment variable).", "example": "86400", "format": "int32", "type": "integer" }, "oauthRefreshTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, HOURS or DAYS. Default: SECONDS.", "example": "SECONDS", "type": "string" }, "redirectUri": { "description": "Contains the redirect URI used in OAuth callback.", "example": "https://example.com/callback", "type": "string" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "secret": { "description": "Client secret. Required for Confidential clients; must not be provided for Public clients.", "example": "ClientSecret123!", "type": "string" }, "skipLoginQueue": { "description": "exempt this client from login queue", "example": "false", "type": "boolean", "x-omitempty": false }, "twoFactorEnabled": { "description": "Flag to indicate whether 2FA validation is enabled for this client. Default: false.", "type": "boolean", "x-omitempty": false } }, "required": [ "audiences", "baseUri", "clientId", "clientName", "clientPlatform", "description", "namespace", "oauthClientType", "redirectUri", "secret", "skipLoginQueue" ] }, "clientmodel.ClientResponse": { "properties": { "ClientId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "ClientName": { "example": "My Game Client", "type": "string" }, "ClientPermissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "Namespace": { "example": "mygame", "type": "string" }, "RedirectUri": { "example": "https://example.com/callback", "type": "string" }, "TwoFactorEnabled": { "type": "boolean", "x-omitempty": false }, "modulePermissions": { "items": { "$ref": "#/definitions/accountcommon.ClientModulePermission" }, "type": "array" } }, "required": [ "ClientId", "ClientName", "ClientPermissions", "CreatedAt", "Namespace", "RedirectUri", "TwoFactorEnabled" ] }, "clientmodel.ClientTemplate": { "properties": { "basicRequiredPermissions": { "items": { "$ref": "#/definitions/accountcommon.ClientModulePermission" }, "type": "array" }, "defaultValues": { "items": { "$ref": "#/definitions/clientmodel.DefaultFieldValue" }, "type": "array" }, "description": { "type": "string" }, "id": { "type": "string" }, "package": { "type": "string" }, "requiredFields": { "items": { "type": "string" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "basicRequiredPermissions", "defaultValues", "description", "id", "package", "requiredFields", "type" ] }, "clientmodel.ClientUpdateRequest": { "properties": { "ClientName": { "example": "My Game Client", "type": "string" }, "RedirectUri": { "example": "https://example.com/callback", "type": "string" }, "TwoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "ClientName", "RedirectUri", "TwoFactorEnabled" ] }, "clientmodel.ClientUpdateSecretRequest": { "properties": { "NewSecret": { "example": "NewClientSecret123!", "type": "string" } }, "required": [ "NewSecret" ] }, "clientmodel.ClientUpdateV3Request": { "properties": { "audiences": { "description": "List of target client IDs who are intended to receive the token.", "items": { "type": "string" }, "type": "array" }, "baseUri": { "description": "A base URI of the application. Used in audience checking to ensure the token is used by the right resource server. Required if the application type is a server.", "type": "string" }, "clientName": { "description": "The client name. Must not be empty if the field exists in the body.", "example": "My Game Client", "type": "string" }, "clientPermissions": { "description": "Contains the client's permissions.", "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "clientPlatform": { "description": "Available client platforms: Playstation, Xbox, Steam, Epic, IOS, GooglePlay, Nintendo, Oculus. Default: empty string.", "example": "Steam", "type": "string" }, "deletable": { "description": "Flag to identify whether the client is deletable.", "type": "boolean", "x-omitempty": false }, "description": { "description": "length 0~1024", "example": "Updated description", "type": "string" }, "modulePermissions": { "description": "Module-based permissions for this client:\n1. Only applicable for Confidential client type\n2. Currently used in Multi Tenant mode only\n3. To view the available module permission list, refer to _GET /iam/v3/admin/clientConfig/permissions_", "items": { "$ref": "#/definitions/accountcommon.ClientModulePermission" }, "type": "array" }, "namespace": { "description": "DEPRECATED, this field is no longer used", "type": "string" }, "oauthAccessTokenExpiration": { "description": "min value 1 second, max value 86400 seconds", "example": "3600", "format": "int32", "type": "integer" }, "oauthAccessTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, or HOURS. Default is SECONDS", "example": "SECONDS", "type": "string" }, "oauthRefreshTokenExpiration": { "description": "min value 1 seconds, max value 2592000 seconds", "example": "86400", "format": "int32", "type": "integer" }, "oauthRefreshTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, HOURS or DAYS. Default is MINUTES", "example": "SECONDS", "type": "string" }, "redirectUri": { "description": "Contains the redirect URI used in OAuth callback. Must not be empty if the field exists in the body.", "example": "https://example.com/callback", "type": "string" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "skipLoginQueue": { "description": "exempt this client from login queue", "example": "false", "type": "boolean", "x-omitempty": false }, "twoFactorEnabled": { "description": "Flag to indicate whether 2FA validation is enabled for this client. Default: false.", "type": "boolean", "x-omitempty": false } }, "required": [ "clientPlatform", "description" ] }, "clientmodel.ClientV3Response": { "properties": { "audiences": { "items": { "type": "string" }, "type": "array" }, "baseUri": { "example": "https://api.example.com", "type": "string" }, "clientId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "clientName": { "example": "My Game Client", "type": "string" }, "clientPermissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "clientPlatform": { "example": "Steam", "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "description": { "example": "Game client for player authentication", "type": "string" }, "modifiedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "modulePermissions": { "items": { "$ref": "#/definitions/accountcommon.ClientModulePermission" }, "type": "array" }, "namespace": { "example": "mygame", "type": "string" }, "oauthAccessTokenExpiration": { "format": "int32", "type": "integer" }, "oauthAccessTokenExpirationTimeUnit": { "type": "string" }, "oauthClientType": { "example": "Confidential", "type": "string" }, "oauthRefreshTokenExpiration": { "format": "int32", "type": "integer" }, "oauthRefreshTokenExpirationTimeUnit": { "type": "string" }, "parentNamespace": { "example": "publisher", "type": "string" }, "redirectUri": { "example": "https://example.com/callback", "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "skipLoginQueue": { "example": "false", "type": "boolean", "x-omitempty": false }, "twoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "audiences", "baseUri", "clientId", "clientName", "clientPermissions", "clientPlatform", "createdAt", "description", "modifiedAt", "namespace", "oauthClientType", "redirectUri", "scopes", "skipLoginQueue", "twoFactorEnabled" ] }, "clientmodel.ClientsUpdateRequestV3": { "properties": { "clientIds": { "description": "required and max count is 50", "items": { "type": "string" }, "type": "array" }, "clientUpdateRequest": { "$ref": "#/definitions/clientmodel.ClientUpdateV3Request" } }, "required": [ "clientIds", "clientUpdateRequest" ] }, "clientmodel.ClientsV3Response": { "properties": { "data": { "items": { "$ref": "#/definitions/clientmodel.ClientV3Response" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "clientmodel.DefaultFieldValue": { "properties": { "field": { "type": "string" }, "value": { "$ref": "#/definitions/clientmodel.DefaultFieldValue.value" } }, "required": [ "field", "value" ] }, "clientmodel.DefaultFieldValue.value": {}, "clientmodel.ListClientPermissionSet": { "properties": { "clientPermissions": { "items": { "$ref": "#/definitions/accountcommon.ClientPermissionSet" }, "type": "array" } }, "required": [ "clientPermissions" ] }, "clientmodel.ListTemplatesResponse": { "properties": { "clientTemplates": { "items": { "$ref": "#/definitions/clientmodel.ClientTemplate" }, "type": "array" } }, "required": [ "clientTemplates" ] }, "clientmodel.ListUpsertModulesRequest": { "properties": { "modules": { "items": { "$ref": "#/definitions/clientmodel.PermissionSetUpsertRequest" }, "type": "array" } }, "required": [ "modules" ] }, "clientmodel.ModulePackage": { "properties": { "moduleId": { "type": "string" }, "package": { "type": "string" } }, "required": [ "moduleId", "package" ] }, "clientmodel.PermissionSetDeleteGroupRequest": { "properties": { "groupId": { "type": "string" }, "moduleId": { "type": "string" } }, "required": [ "groupId", "moduleId" ] }, "clientmodel.PermissionSetUpsertRequest": { "properties": { "docLink": { "type": "string" }, "groups": { "items": { "$ref": "#/definitions/accountcommon.PermissionGroup" }, "type": "array" }, "module": { "type": "string" }, "moduleId": { "type": "string" }, "package": { "type": "string" } }, "required": [ "docLink", "groups", "module", "moduleId", "package" ] }, "clientmodel.UpsertPermissionModulePackageRequest": { "properties": { "data": { "items": { "$ref": "#/definitions/clientmodel.ModulePackage" }, "type": "array" } }, "required": [ "data" ] }, "clientmodel.V3ClientUpdateSecretRequest": { "properties": { "newSecret": { "description": "The new client secret value.", "example": "NewClientSecret123!", "type": "string" } }, "required": [ "newSecret" ] }, "legal.AcceptedPoliciesRequest": { "properties": { "isAccepted": { "type": "boolean", "x-omitempty": false }, "localizedPolicyVersionId": { "type": "string" }, "policyId": { "type": "string" }, "policyVersionId": { "type": "string" } }, "required": [ "isAccepted", "localizedPolicyVersionId", "policyId", "policyVersionId" ] }, "model.AccountProgressionInfo": { "properties": { "displayName": { "example": "John Doe", "type": "string" }, "email": { "example": "user@example.com", "type": "string" }, "linkedGames": { "description": "For headlessAccount: list of all namespaces from this headless account. For currentAccount: list of all namespaces that conflict with headlessAccount", "items": { "type": "string" }, "type": "array" }, "platformId": { "example": "steam", "type": "string" }, "progressions": { "description": "progression data of each game account", "items": { "$ref": "#/definitions/model.ProgressionInfo" }, "type": "array" }, "uniqueDisplayName": { "type": "string" }, "userName": { "example": "johndoe", "type": "string" } }, "required": [ "linkedGames" ] }, "model.AddUserRoleV4Request": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "assignedNamespaces", "roleId" ] }, "model.AdminBulkUserRequest": { "properties": { "findByPublisherNamespace": { "example": "false", "type": "boolean", "x-omitempty": false }, "userIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "userIds" ] }, "model.AgeRestrictionRequest": { "properties": { "AgeRestriction": { "format": "int32", "type": "integer" }, "Enable": { "type": "boolean", "x-omitempty": false } }, "required": [ "AgeRestriction", "Enable" ] }, "model.AgeRestrictionRequestV3": { "properties": { "ageRestriction": { "example": "18", "format": "int32", "type": "integer" }, "enable": { "example": "true", "type": "boolean", "x-omitempty": false } }, "required": [ "ageRestriction", "enable" ] }, "model.AgeRestrictionResponse": { "properties": { "AgeRestriction": { "example": "18", "format": "int32", "type": "integer" }, "Enable": { "example": "true", "type": "boolean", "x-omitempty": false } }, "required": [ "AgeRestriction", "Enable" ] }, "model.AgeRestrictionResponseV3": { "properties": { "ageRestriction": { "example": "18", "format": "int32", "type": "integer" }, "enable": { "example": "true", "type": "boolean", "x-omitempty": false } }, "required": [ "ageRestriction", "enable" ] }, "model.AssignUserV4Request": { "properties": { "assignedNamespaces": { "description": "namespaces to be assigned on role", "items": { "type": "string" }, "type": "array" }, "namespace": { "description": "user's namespace", "example": "mygame", "type": "string" }, "userId": { "description": "The user's ID.", "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "assignedNamespaces", "namespace", "userId" ] }, "model.AssignedUserV4Response": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "displayName": { "example": "John Doe", "type": "string" }, "email": { "example": "user@example.com", "type": "string" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "assignedNamespaces", "displayName", "email", "roleId", "userId" ] }, "model.AuthenticatorKeyResponseV4": { "properties": { "secretKey": { "example": "JBSWY3DPEHPK3PXP", "type": "string" }, "uri": { "example": "otpauth://totp/MyApp:user@example.com?secret=JBSWY3DPEHPK3PXP", "type": "string" } }, "required": [ "secretKey", "uri" ] }, "model.BackupCodesResponseV4": { "properties": { "generatedAt": { "example": "1711929600", "format": "int64", "type": "integer" }, "invalidCodes": { "items": { "type": "string" }, "type": "array" }, "validCodes": { "items": { "type": "string" }, "type": "array" } }, "required": [ "generatedAt" ] }, "model.BanCreateRequest": { "properties": { "ban": { "example": "CHAT_SEND", "type": "string" }, "comment": { "example": "Spamming in chat", "type": "string" }, "endDate": { "example": "2026-12-31T23:59:59Z", "type": "string" }, "reason": { "example": "Violation of terms", "type": "string" }, "skipNotif": { "example": "false", "type": "boolean", "x-omitempty": false } }, "required": [ "ban", "comment", "endDate", "reason", "skipNotif" ] }, "model.BanUpdateRequest": { "properties": { "enabled": { "type": "boolean", "x-omitempty": false }, "skipNotif": { "type": "boolean", "x-omitempty": false } }, "required": [ "enabled", "skipNotif" ] }, "model.BulkAccountTypeUpdateRequestV4": { "properties": { "testAccount": { "example": "true", "type": "boolean", "x-omitempty": false }, "userIds": { "description": "max userId is 100", "items": { "type": "string" }, "type": "array" } }, "required": [ "testAccount", "userIds" ] }, "model.BulkBanCreateRequestV3": { "properties": { "ban": { "example": "CHAT_SEND", "type": "string" }, "comment": { "example": "Spamming in chat", "type": "string" }, "endDate": { "example": "2026-12-31T23:59:59Z", "type": "string" }, "reason": { "example": "Violation of terms", "type": "string" }, "skipNotif": { "example": "false", "type": "boolean", "x-omitempty": false }, "userIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "ban", "comment", "endDate", "reason", "skipNotif", "userIds" ] }, "model.BulkUnbanCreateRequestV3": { "properties": { "bans": { "items": { "$ref": "#/definitions/model.userUnbanCreateRequestV3" }, "type": "array" } } }, "model.CheckAvailabilityResponse": { "properties": { "Accessible": { "type": "boolean", "x-omitempty": false }, "PlatformErrorMessage": { "additionalProperties": { "type": "string" }, "type": "object" } }, "required": [ "Accessible", "PlatformErrorMessage" ] }, "model.CheckValidUserIDRequestV4": { "properties": { "userIds": { "description": "only valid uuid is allowed", "items": { "type": "string" }, "type": "array" } }, "required": [ "userIds" ] }, "model.ConfigValueResponseV3": { "properties": { "result": { "type": "object" } }, "required": [ "result" ] }, "model.Country": { "properties": { "AgeRestriction": { "format": "int32", "type": "integer" }, "CountryCode": { "type": "string" }, "CountryName": { "type": "string" }, "Enable": { "type": "boolean", "x-omitempty": false } }, "required": [ "AgeRestriction", "CountryCode", "CountryName", "Enable" ] }, "model.CountryAgeRestrictionRequest": { "properties": { "AgeRestriction": { "format": "int32", "type": "integer" } }, "required": [ "AgeRestriction" ] }, "model.CountryAgeRestrictionV3Request": { "properties": { "ageRestriction": { "format": "int32", "type": "integer" } }, "required": [ "ageRestriction" ] }, "model.CountryBlacklistRequest": { "properties": { "blacklist": { "description": "List of ISO 3166-1 alpha-2 country codes to blacklist.", "items": { "type": "string" }, "type": "array" } }, "required": [ "blacklist" ] }, "model.CountryBlacklistResponse": { "properties": { "blacklist": { "items": { "type": "string" }, "type": "array" } }, "required": [ "blacklist" ] }, "model.CountryResponse": { "properties": { "code": { "type": "string" }, "name": { "type": "string" } }, "required": [ "code", "name" ] }, "model.CountryV3Response": { "properties": { "ageRestriction": { "format": "int32", "type": "integer" }, "countryCode": { "type": "string" }, "countryName": { "type": "string" }, "enable": { "type": "boolean", "x-omitempty": false } }, "required": [ "ageRestriction", "countryCode", "countryName", "enable" ] }, "model.CreateJusticeUserResponse": { "properties": { "namespace": { "example": "mygame", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "namespace", "userId" ] }, "model.CursorGetUserRequest": { "properties": { "cursor": { "$ref": "#/definitions/accountcommon.QueryCursor" }, "fields": { "description": "selected field", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "limit, 1~2000", "format": "int32", "type": "integer" } }, "required": [ "limit" ] }, "model.CursorGetUserResponse": { "properties": { "cursor": { "$ref": "#/definitions/accountcommon.QueryCursor" }, "data": { "items": { "$ref": "#/definitions/model.CursorGetUserResponse.data" }, "type": "array" } }, "required": [ "cursor", "data" ] }, "model.CursorGetUserResponse.data": { "type": "object" }, "model.DeviceBanRequestV4": { "properties": { "comment": { "example": "Detected automated play", "type": "string" }, "deviceId": { "example": "device123abc", "type": "string" }, "deviceType": { "example": "Android", "type": "string" }, "enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "endDate": { "example": "2026-12-31T23:59:59Z", "type": "string" }, "ext": { "type": "object" }, "reason": { "example": "Cheating", "type": "string" } }, "required": [ "comment", "deviceId", "deviceType", "enabled", "endDate", "ext", "reason" ] }, "model.DeviceBanResponseV4": { "properties": { "bannedAt": { "example": "1711929600", "format": "int64", "type": "integer" }, "bannedBy": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "comment": { "example": "Detected automated play", "type": "string" }, "deviceId": { "example": "device123abc", "type": "string" }, "deviceType": { "example": "Android", "type": "string" }, "disabledAt": { "example": "1711929600", "format": "int64", "type": "integer" }, "enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "endDate": { "example": "1798761599", "format": "int64", "type": "integer" }, "id": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "reason": { "example": "Cheating", "type": "string" }, "targetNamespace": { "example": "mygame", "type": "string" } }, "required": [ "bannedAt", "bannedBy", "comment", "deviceId", "deviceType", "disabledAt", "enabled", "endDate", "id", "namespace", "reason", "targetNamespace" ] }, "model.DeviceBanUpdateRequestV4": { "properties": { "enabled": { "example": "false", "type": "boolean", "x-omitempty": false } }, "required": [ "enabled" ] }, "model.DeviceBannedResponseV4": { "properties": { "data": { "items": { "$ref": "#/definitions/model.DeviceBanResponseV4" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.Pagination" } }, "required": [ "data", "paging" ] }, "model.DeviceBansResponseV4": { "properties": { "data": { "items": { "$ref": "#/definitions/model.DeviceBanResponseV4" }, "type": "array" } }, "required": [ "data" ] }, "model.DeviceIDDecryptResponseV4": { "properties": { "deviceId": { "example": "device123abc", "type": "string" } }, "required": [ "deviceId" ] }, "model.DeviceResponseV4": { "properties": { "ban": { "$ref": "#/definitions/model.DeviceBanResponseV4" }, "deviceId": { "example": "device123abc", "type": "string" }, "deviceType": { "example": "Android", "type": "string" }, "ext": { "type": "object" }, "ip": { "example": "192.168.1.1", "type": "string" }, "lastLoginTime": { "example": "1711929600", "format": "int64", "type": "integer" } }, "required": [ "deviceId", "deviceType", "ip", "lastLoginTime" ] }, "model.DeviceTypeResponseV4": { "properties": { "deviceType": { "example": "Android", "type": "string" } }, "required": [ "deviceType" ] }, "model.DeviceTypesResponseV4": { "properties": { "data": { "items": { "$ref": "#/definitions/model.DeviceTypeResponseV4" }, "type": "array" } }, "required": [ "data" ] }, "model.DeviceUserResponseV4": { "properties": { "ext": { "type": "object" }, "ip": { "example": "192.168.1.1", "type": "string" }, "lastLoginTime": { "example": "1711929600", "format": "int64", "type": "integer" }, "namespace": { "example": "mygame", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "ip", "lastLoginTime", "namespace", "userId" ] }, "model.DeviceUsersResponseV4": { "properties": { "users": { "items": { "$ref": "#/definitions/model.DeviceUserResponseV4" }, "type": "array" } }, "required": [ "users" ] }, "model.DevicesResponseV4": { "properties": { "devices": { "items": { "$ref": "#/definitions/model.DeviceResponseV4" }, "type": "array" } }, "required": [ "devices" ] }, "model.DisableMFARequest": { "properties": { "factor": { "example": "authenticator", "type": "string" }, "mfaToken": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } } }, "model.DisableUserRequest": { "properties": { "Reason": { "type": "string" } } }, "model.EmailUpdateRequestV4": { "properties": { "code": { "example": "123456", "type": "string" }, "emailAddress": { "example": "newemail@example.com", "type": "string" } }, "required": [ "code", "emailAddress" ] }, "model.EnabledFactorsResponseV4": { "properties": { "default": { "example": "authenticator", "type": "string" }, "enabled": { "description": "list of enabled MFA factors; valid values: authenticator, backupCode, email", "items": { "type": "string" }, "type": "array" }, "remainingBackupCodeCount": { "example": "8", "format": "int32", "type": "integer" } }, "required": [ "default", "enabled" ] }, "model.FailedBanUnbanUserV3": { "properties": { "reason": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "reason", "userId" ] }, "model.FieldUpdateAllowStatus": { "properties": { "field": { "description": "allow value [dob, username, display_name, country]", "type": "string" }, "nextAvailableEditTime": { "description": "Milliseconds timestamp of the next available edit time.\n- Only present when type is limited\n- If empty, editing is allowed now", "format": "int64", "type": "integer" }, "remainingTimeInSeconds": { "description": "Remaining seconds before the user can edit this field again.\n- Only present when type is limited\n- 0 means editing is allowed now", "format": "int64", "type": "integer" }, "type": { "description": "allow value [initial_only, limited, unlimited]", "type": "string" } }, "required": [ "field", "type" ] }, "model.ForgotPasswordRequestV3": { "properties": { "emailAddress": { "example": "user@example.com", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" } }, "required": [ "emailAddress" ] }, "model.ForgotPasswordResponseV3": { "properties": { "namespace": { "example": "mygame", "type": "string" } }, "required": [ "namespace" ] }, "model.ForgotPasswordWithoutNamespaceRequestV3": { "properties": { "clientId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" } }, "required": [ "emailAddress" ] }, "model.GetAdminUsersResponse": { "properties": { "Data": { "items": { "$ref": "#/definitions/model.UserResponse" }, "type": "array" }, "Paging": { "$ref": "#/definitions/accountcommon.Pagination" } }, "required": [ "Data", "Paging" ] }, "model.GetBulkUserBansRequest": { "properties": { "bulkUserId": { "items": { "type": "string" }, "type": "array" } }, "required": [ "bulkUserId" ] }, "model.GetLinkHeadlessAccountConflictResponse": { "properties": { "currentAccount": { "$ref": "#/definitions/model.AccountProgressionInfo", "description": "only exists when platformLinkConflict=false \u0026 platformAlreadyLinked=false" }, "headlessAccount": { "$ref": "#/definitions/model.AccountProgressionInfo", "description": "only exists when platformLinkConflict=false \u0026 platformAlreadyLinked=false" }, "platformAlreadyLinked": { "description": "if full account already linked to this platform", "example": "false", "type": "boolean", "x-omitempty": false }, "platformId": { "example": "steam", "type": "string" }, "platformLinkConflict": { "description": "if linked to this platform's other account", "example": "false", "type": "boolean", "x-omitempty": false } }, "required": [ "platformAlreadyLinked", "platformId", "platformLinkConflict" ] }, "model.GetProfileUpdateStrategyConfigResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/model.SimpleProfileUpdateStrategyConfigs" }, "type": "array" } }, "required": [ "data" ] }, "model.GetPublisherUserResponse": { "properties": { "Namespace": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "Namespace", "UserId" ] }, "model.GetUserBanSummaryV3": { "properties": { "activeCount": { "format": "int32", "type": "integer" }, "data": { "items": { "$ref": "#/definitions/model.UserBanWithStatus" }, "type": "array" }, "inactiveCount": { "format": "int32", "type": "integer" }, "totalCount": { "format": "int32", "type": "integer" } }, "required": [ "activeCount", "data", "inactiveCount", "totalCount" ] }, "model.GetUserBanV3Response": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserBanResponseV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.GetUserJusticePlatformAccountResponse": { "properties": { "DesignatedNamespace": { "example": "mygame", "type": "string" }, "UserID": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "DesignatedNamespace", "UserID" ] }, "model.GetUserMapping": { "properties": { "Namespace": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "Namespace", "UserId" ] }, "model.GetUserMappingV3": { "properties": { "namespace": { "example": "mygame", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "namespace", "userId" ] }, "model.GetUsersResponseWithPaginationV3": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserResponseV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.InputValidationConfigVersion": { "properties": { "allowAllSpecialCharacters": { "type": "boolean", "x-omitempty": false }, "allowDigit": { "type": "boolean", "x-omitempty": false }, "allowLetter": { "type": "boolean", "x-omitempty": false }, "allowSpace": { "type": "boolean", "x-omitempty": false }, "allowUnicode": { "type": "boolean", "x-omitempty": false }, "avatarConfig": { "$ref": "#/definitions/accountcommon.AvatarConfig", "description": "if this config has valid value, will prefer to use and ignore other validation" }, "blockedWord": { "items": { "type": "string" }, "type": "array" }, "isCustomRegex": { "type": "boolean", "x-omitempty": false }, "letterCase": { "type": "string" }, "maxLength": { "format": "int32", "type": "integer" }, "maxRepeatingAlphaNum": { "format": "int32", "type": "integer" }, "maxRepeatingSpecialCharacter": { "format": "int32", "type": "integer" }, "minCharType": { "format": "int32", "type": "integer" }, "minLength": { "format": "int32", "type": "integer" }, "profanityFilter": { "type": "string" }, "regex": { "type": "string" }, "specialCharacterLocation": { "type": "string" }, "specialCharacters": { "items": { "type": "string" }, "type": "array" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "allowAllSpecialCharacters", "allowDigit", "allowLetter", "allowSpace", "allowUnicode", "blockedWord", "isCustomRegex", "letterCase", "maxLength", "maxRepeatingAlphaNum", "maxRepeatingSpecialCharacter", "minCharType", "minLength", "regex", "specialCharacterLocation", "specialCharacters", "version" ] }, "model.InputValidationData": { "properties": { "field": { "type": "string" }, "validation": { "$ref": "#/definitions/model.ValidationDetail" } }, "required": [ "field", "validation" ] }, "model.InputValidationDataPublic": { "properties": { "field": { "type": "string" }, "validation": { "$ref": "#/definitions/model.ValidationDetailPublic" } }, "required": [ "field", "validation" ] }, "model.InputValidationUpdatePayload": { "properties": { "field": { "type": "string" }, "validation": { "$ref": "#/definitions/.validation" } }, "required": [ "field", "validation" ] }, "model.InputValidationsPublicResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/model.InputValidationDataPublic" }, "type": "array" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "data", "version" ] }, "model.InputValidationsResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/model.InputValidationData" }, "type": "array" }, "fromDefault": { "type": "boolean", "x-omitempty": false }, "version": { "format": "int32", "type": "integer" } }, "required": [ "data", "fromDefault", "version" ] }, "model.InternalConfigResponseV3": { "properties": { "searchQueryMaxLength": { "description": "The user search feature will return an empty result if the query value length exceeds the maximum allowed length.", "format": "int32", "type": "integer" }, "searchQueryMaxLengthForEmail": { "description": "The user search feature will return an empty result if the email type query value length exceeds the maximum allowed length.", "format": "int32", "type": "integer" }, "searchQueryMinLength": { "description": "The user search feature will return an empty result if the query value length is less than the minimum allowed length.", "format": "int32", "type": "integer" } }, "required": [ "searchQueryMaxLength", "searchQueryMaxLengthForEmail", "searchQueryMinLength" ] }, "model.InvitationHistoryResponse": { "properties": { "accepted": { "example": "true", "type": "boolean", "x-omitempty": false }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "inviter": { "example": "admin@example.com", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "accepted", "createdAt", "inviter", "namespace", "updatedAt" ] }, "model.InviteUserRequestV3": { "properties": { "emailAddresses": { "items": { "type": "string" }, "type": "array" }, "isAdmin": { "example": "false", "type": "boolean", "x-omitempty": false }, "languageTag": { "example": "en-US", "type": "string" }, "namespace": { "description": "DEPRECATED. multi tenant studio namespace", "example": "mygame", "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" } }, "required": [ "emailAddresses", "isAdmin", "roles" ] }, "model.InviteUserRequestV4": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "emailAddresses": { "items": { "type": "string" }, "type": "array" }, "isAdmin": { "example": "false", "type": "boolean", "x-omitempty": false }, "isNewStudio": { "type": "boolean", "x-omitempty": false }, "languageTag": { "example": "en-US", "type": "string" }, "namespace": { "description": "multi tenant studio namespace", "example": "mygame", "type": "string" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "assignedNamespaces", "emailAddresses", "isAdmin" ] }, "model.InviteUserResponseV3": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserInvitationV3" }, "type": "array" } }, "required": [ "data" ] }, "model.LinkHeadlessAccountRequest": { "properties": { "chosenNamespaces": { "items": { "type": "string" }, "type": "array" }, "oneTimeLinkCode": { "example": "ABCD1234", "type": "string" } }, "required": [ "chosenNamespaces", "oneTimeLinkCode" ] }, "model.LinkPlatformAccountRequest": { "properties": { "platformId": { "example": "steam", "type": "string" }, "platformUserId": { "example": "platformUser123", "type": "string" } }, "required": [ "platformId", "platformUserId" ] }, "model.LinkPlatformAccountWithProgressionRequest": { "properties": { "chosenNamespaces": { "items": { "type": "string" }, "type": "array" }, "requestId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "chosenNamespaces", "requestId" ] }, "model.LinkRequestResponse": { "properties": { "clientId": { "type": "string" }, "conflictPublisherUserId": { "type": "string" }, "conflictUserLinkedGames": { "items": { "type": "string" }, "type": "array" }, "currentUserLinkedGames": { "items": { "type": "string" }, "type": "array" }, "error": { "$ref": "#/definitions/rest.ErrorResponseWithConflictedUserPlatformAccounts" }, "expiration": { "format": "int32", "type": "integer" }, "namespace": { "type": "string" }, "payload": { "type": "object" }, "platformDisplayName": { "type": "string" }, "platformId": { "type": "string" }, "platformUserId": { "type": "string" }, "redirectUri": { "type": "string" }, "requestId": { "type": "string" }, "status": { "description": "Enum: SUCCESS, PENDING, FAILED", "type": "string" }, "userId": { "type": "string" } }, "required": [ "clientId", "namespace", "payload", "redirectUri", "requestId", "status" ] }, "model.LinkingHistoryResponseWithPaginationV3": { "properties": { "data": { "description": "publisher user id which linked to this platform account", "items": { "type": "string" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" }, "totalData": { "format": "int32", "type": "integer" } }, "required": [ "data", "paging", "totalData" ] }, "model.ListAssignedUsersV4Response": { "properties": { "data": { "items": { "$ref": "#/definitions/model.AssignedUserV4Response" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.ListBulkUserBanResponseV3": { "properties": { "failedBans": { "items": { "$ref": "#/definitions/model.FailedBanUnbanUserV3" }, "type": "array" }, "successBans": { "items": { "$ref": "#/definitions/model.UserBanResponseV3" }, "type": "array" } }, "required": [ "failedBans", "successBans" ] }, "model.ListBulkUserPlatformsResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserWithPlatformInfo" }, "type": "array" } }, "required": [ "data" ] }, "model.ListBulkUserResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserBaseInfo" }, "type": "array" } }, "required": [ "data" ] }, "model.ListEmailAddressRequest": { "properties": { "listEmailAddressRequest": { "items": { "type": "string" }, "type": "array" } }, "required": [ "listEmailAddressRequest" ] }, "model.ListInvitationHistoriesV4Response": { "properties": { "data": { "items": { "$ref": "#/definitions/model.InvitationHistoryResponse" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.ListRoleV4Response": { "properties": { "data": { "items": { "$ref": "#/definitions/model.RoleV4Response" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.ListUserInformationResult": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserInfoResponse" }, "type": "array" } }, "required": [ "data" ] }, "model.ListUserResponseV3": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserResponseV3" }, "type": "array" } }, "required": [ "data" ] }, "model.ListUserRolesV4Response": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserRolesV4Response" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.ListValidUserIDResponseV4": { "properties": { "data": { "items": { "$ref": "#/definitions/model.ValidUserIDResponseV4" }, "type": "array" } }, "required": [ "data" ] }, "model.LoginAllowlistRequest": { "properties": { "active": { "description": "Whether the login allowlist is active.", "type": "boolean", "x-omitempty": false }, "roleIds": { "description": "List of role IDs that are allowed to login when the allowlist is active.", "items": { "type": "string" }, "type": "array" } }, "required": [ "active", "roleIds" ] }, "model.LoginAllowlistResponse": { "properties": { "active": { "type": "boolean", "x-omitempty": false }, "namespace": { "type": "string" }, "roleIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "active", "namespace", "roleIds" ] }, "model.LoginHistoriesResponse": { "properties": { "Data": { "items": { "$ref": "#/definitions/model.UserLoginHistoryResponse" }, "type": "array" }, "Paging": { "$ref": "#/definitions/accountcommon.Pagination" } }, "required": [ "Data", "Paging" ] }, "model.NamespaceInvitationHistoryUserV4Response": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserInvitationHistory" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.NamespaceRoleRequest": { "properties": { "namespace": { "description": "required", "example": "mygame", "type": "string" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "namespace", "roleId" ] }, "model.OneTimeCodeLinkRedirectionResponse": { "properties": { "redirectUri": { "example": "https://example.com/callback", "type": "string" } }, "required": [ "redirectUri" ] }, "model.PermissionDeleteRequest": { "properties": { "Action": { "example": "2", "format": "int32", "type": "integer" }, "Resource": { "example": "ADMIN:NAMESPACE:mygame:USER", "type": "string" } }, "required": [ "Action", "Resource" ] }, "model.PlatformDefaultsResponse": { "properties": { "defaultScopes": { "description": "default OAuth scopes when no custom scopes are configured for the platform. The scopes is used for server-side token exchange or authorization url construction", "items": { "type": "string" }, "type": "array" }, "platformId": { "description": "platform identifier", "type": "string" } }, "required": [ "defaultScopes", "platformId" ] }, "model.PlatformDomainDeleteRequest": { "properties": { "domain": { "type": "string" }, "ssoGroups": { "items": { "type": "string" }, "type": "array" } }, "required": [ "domain", "ssoGroups" ] }, "model.PlatformDomainPatchRequest": { "properties": { "affectedClientIDs": { "items": { "type": "string" }, "type": "array" }, "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "domain": { "type": "string" }, "roleId": { "type": "string" }, "ssoCfg": { "$ref": "#/definitions/accountcommon.SsoConfigPatchReq" } }, "required": [ "domain" ] }, "model.PlatformDomainResponse": { "properties": { "registeredDomains": { "items": { "$ref": "#/definitions/accountcommon.RegisteredDomain" }, "type": "array" } }, "required": [ "registeredDomains" ] }, "model.PlatformDomainUpdateRequest": { "properties": { "affectedClientIDs": { "items": { "type": "string" }, "type": "array" }, "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "domain": { "type": "string" }, "roleId": { "type": "string" }, "ssoCfg": { "$ref": "#/definitions/accountcommon.SsoConfig" } }, "required": [ "affectedClientIDs", "assignedNamespaces", "domain", "roleId" ] }, "model.PlatformUserIDRequest": { "properties": { "platformUserIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "platformUserIds" ] }, "model.PlatformUserIDRequestV4": { "properties": { "pidType": { "description": "type of the platform user ids, supported values: OCULUS_APP_USER_ID", "example": "OCULUS_APP_USER_ID", "type": "string" }, "platformUserIds": { "description": "max length is 100, min length is 1", "items": { "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "platformUserIds" ] }, "model.PlatformUserInformation": { "properties": { "DisplayName": { "type": "string" }, "EmailAddress": { "type": "string" }, "LinkedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "Namespace": { "type": "string" }, "PlatformID": { "type": "string" }, "PlatformUserID": { "type": "string" }, "XUID": { "type": "string" } }, "required": [ "DisplayName", "LinkedAt", "Namespace", "PlatformID", "PlatformUserID" ] }, "model.ProgressionInfo": { "properties": { "createdAt": { "example": "1711929600", "format": "int64", "type": "integer" }, "dlcs": { "$ref": "#/definitions/platform.DLCAggResponse" }, "lastLoginTime": { "example": "1711929600", "format": "int64", "type": "integer" }, "namespace": { "example": "mygame", "type": "string" }, "userBan": { "$ref": "#/definitions/model.SimpleUserBan" }, "wallets": { "items": { "$ref": "#/definitions/platform.WalletAggResponse" }, "type": "array" } }, "required": [ "createdAt", "namespace" ] }, "model.PublicInviteUserRequestV4": { "properties": { "additionalData": { "description": "Optional UTM parameter data.", "example": "{\"key\":\"value\"}", "type": "string" }, "emailAddress": { "description": "Email address of the user to be invited.", "example": "invitee@example.com", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" }, "namespace": { "description": "New namespace of the user to be created.", "example": "mygame", "type": "string" }, "namespaceDisplayName": { "description": "Display name of the new namespace.", "example": "My Game", "type": "string" } }, "required": [ "emailAddress", "namespace", "namespaceDisplayName" ] }, "model.PublicOpenIDUserInfoResponse": { "properties": { "email": { "example": "user@example.com", "type": "string" }, "email_verified": { "example": "true", "type": "boolean", "x-omitempty": false }, "name": { "example": "John Doe", "type": "string" }, "picture": { "example": "https://example.com/avatar.png", "type": "string" }, "sub": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "email", "email_verified", "name", "picture", "sub" ] }, "model.PublicThirdPartyPlatformInfo": { "properties": { "AppId": { "type": "string" }, "ClientId": { "type": "string" }, "Environment": { "type": "string" }, "IsActive": { "type": "boolean", "x-omitempty": false }, "LogoURL": { "type": "string" }, "PlatformId": { "type": "string" }, "PlatformName": { "type": "string" }, "TokenAuthenticationType": { "type": "string" } }, "required": [ "AppId", "ClientId", "Environment", "IsActive", "PlatformId", "PlatformName", "TokenAuthenticationType" ] }, "model.PublicUserInformationResponseV3": { "properties": { "data": { "items": { "$ref": "#/definitions/model.PublicUserInformationV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.PublicUserInformationV3": { "properties": { "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "example": "John Doe", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "userName": { "example": "johndoe", "type": "string" }, "userPlatformInfos": { "items": { "$ref": "#/definitions/model.UserPlatformInfo" }, "type": "array" } }, "required": [ "createdAt", "displayName", "namespace", "userId", "userName" ] }, "model.PublicUserResponse": { "properties": { "AuthType": { "type": "string" }, "Bans": { "items": { "$ref": "#/definitions/model.UserActiveBanResponse" }, "type": "array" }, "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "DeletionStatus": { "type": "boolean", "x-omitempty": false }, "DisplayName": { "type": "string" }, "EmailVerified": { "type": "boolean", "x-omitempty": false }, "Enabled": { "type": "boolean", "x-omitempty": false }, "LastEnabledChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "LoginId": { "type": "string" }, "Namespace": { "type": "string" }, "NamespaceRoles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "PhoneVerified": { "type": "boolean", "x-omitempty": false }, "PlatformId": { "type": "string" }, "PlatformUserId": { "type": "string" }, "Roles": { "items": { "type": "string" }, "type": "array" }, "UserId": { "type": "string" }, "Username": { "type": "string" }, "XUID": { "type": "string" } }, "required": [ "AuthType", "Bans", "CreatedAt", "DeletionStatus", "DisplayName", "EmailVerified", "Enabled", "LastEnabledChangedTime", "LoginId", "Namespace", "NamespaceRoles", "Permissions", "PhoneVerified", "Roles", "UserId" ] }, "model.PublicUserResponseV3": { "properties": { "authType": { "example": "EMAILPASSWD", "type": "string" }, "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "bans": { "items": { "$ref": "#/definitions/model.UserActiveBanResponseV3" }, "type": "array" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "deletionStatus": { "type": "boolean", "x-omitempty": false }, "displayName": { "example": "John Doe", "type": "string" }, "emailVerified": { "type": "boolean", "x-omitempty": false }, "enabled": { "type": "boolean", "x-omitempty": false }, "lastDateOfBirthChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "lastEnabledChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "example": "mygame", "type": "string" }, "namespaceRoles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/model.UserPermissionsResponseV3" }, "type": "array" }, "phoneVerified": { "type": "boolean", "x-omitempty": false }, "platformId": { "type": "string" }, "platformUserId": { "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "userName": { "example": "johndoe", "type": "string" } }, "required": [ "authType", "bans", "createdAt", "deletionStatus", "displayName", "emailVerified", "enabled", "lastDateOfBirthChangedTime", "lastEnabledChangedTime", "namespace", "namespaceRoles", "permissions", "phoneVerified", "roles", "uniqueDisplayName", "userId" ] }, "model.PublicUserUpdateRequestV3": { "properties": { "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "country": { "example": "US", "type": "string" }, "dateOfBirth": { "example": "1990-01-15", "type": "string" }, "displayName": { "example": "John Doe", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userName": { "example": "johndoe", "type": "string" } } }, "model.PublicUsersResponse": { "properties": { "Users": { "items": { "$ref": "#/definitions/model.PublicUserResponse" }, "type": "array" } } }, "model.ReAuthRequest": { "properties": { "client_id": { "type": "string" }, "conflict_publisher_user_id": { "type": "string" }, "conflict_user_linked_games": { "items": { "type": "string" }, "type": "array" }, "current_user_linked_games": { "items": { "type": "string" }, "type": "array" }, "error": { "$ref": "#/definitions/rest.ErrorResponseWithConflictedUserPlatformAccounts" }, "expiration": { "format": "int32", "type": "integer" }, "namespace": { "type": "string" }, "operation_name": { "type": "string" }, "payload": { "type": "object" }, "platformDisplayName": { "type": "string" }, "platformID": { "type": "string" }, "platform_user_id": { "type": "string" }, "redirect_uri": { "type": "string" }, "refreshToken": { "type": "string" }, "request_id": { "type": "string" }, "status": { "type": "string" }, "userID": { "type": "string" } }, "required": [ "client_id", "namespace", "operation_name", "payload", "redirect_uri", "request_id", "status" ] }, "model.RemoveUserRoleV4Request": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "assignedNamespaces", "roleId" ] }, "model.ResetPasswordRequest": { "properties": { "Code": { "example": "123456", "type": "string" }, "LoginID": { "example": "user@example.com", "type": "string" }, "NewPassword": { "example": "NewSecurePass123!", "type": "string" } }, "required": [ "Code", "LoginID", "NewPassword" ] }, "model.ResetPasswordRequestV3": { "properties": { "clientId": { "description": "for tracking which client this request comes from", "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "code": { "example": "123456", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" }, "newPassword": { "example": "NewSecurePass123!", "type": "string" } }, "required": [ "code", "emailAddress", "newPassword" ] }, "model.RevokeUserV4Request": { "properties": { "namespace": { "description": "The user's namespace.", "example": "mygame", "type": "string" }, "userId": { "description": "The user's ID.", "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "namespace", "userId" ] }, "model.RoleAdminStatusResponse": { "properties": { "AdminRole": { "example": "true", "type": "boolean", "x-omitempty": false } }, "required": [ "AdminRole" ] }, "model.RoleAdminStatusResponseV3": { "properties": { "adminRole": { "example": "true", "type": "boolean", "x-omitempty": false } }, "required": [ "adminRole" ] }, "model.RoleCreateRequest": { "properties": { "AdminRole": { "type": "boolean", "x-omitempty": false }, "Managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManager" }, "type": "array" }, "Members": { "items": { "$ref": "#/definitions/accountcommon.RoleMember" }, "type": "array" }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "RoleName": { "type": "string" } }, "required": [ "AdminRole", "Managers", "Members", "Permissions", "RoleName" ] }, "model.RoleCreateV3Request": { "properties": { "adminRole": { "description": "Specify if the role is for admin users. Default: false.", "example": "true", "type": "boolean", "x-omitempty": false }, "deletable": { "description": "Specify if the role can be deleted. Default: true.", "example": "true", "type": "boolean", "x-omitempty": false }, "isWildcard": { "description": "Specify if the role can be assigned to wildcard (*) namespace. Default: false.", "example": "false", "type": "boolean", "x-omitempty": false }, "managers": { "description": "List of users that will act as managers of this role.", "items": { "$ref": "#/definitions/accountcommon.RoleManagerV3" }, "type": "array" }, "members": { "description": "List of users that will act as members of this role.", "items": { "$ref": "#/definitions/accountcommon.RoleMemberV3" }, "type": "array" }, "permissions": { "description": "Permissions that this role grants.", "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleName": { "description": "Role name, alphanumeric, cannot have special characters.", "example": "Game Admin", "type": "string" } }, "required": [ "adminRole", "isWildcard", "managers", "members", "permissions", "roleName" ] }, "model.RoleManagersRequest": { "properties": { "Managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManager" }, "type": "array" } }, "required": [ "Managers" ] }, "model.RoleManagersRequestV3": { "properties": { "managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManagerV3" }, "type": "array" } }, "required": [ "managers" ] }, "model.RoleManagersResponse": { "properties": { "Managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManager" }, "type": "array" } }, "required": [ "Managers" ] }, "model.RoleManagersResponsesV3": { "properties": { "data": { "items": { "$ref": "#/definitions/accountcommon.RoleManagerV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.RoleMembersRequest": { "properties": { "Members": { "items": { "$ref": "#/definitions/accountcommon.RoleMember" }, "type": "array" } }, "required": [ "Members" ] }, "model.RoleMembersRequestV3": { "properties": { "members": { "items": { "$ref": "#/definitions/accountcommon.RoleMemberV3" }, "type": "array" } }, "required": [ "members" ] }, "model.RoleMembersResponse": { "properties": { "Members": { "items": { "$ref": "#/definitions/accountcommon.RoleMember" }, "type": "array" } }, "required": [ "Members" ] }, "model.RoleMembersResponseV3": { "properties": { "data": { "items": { "$ref": "#/definitions/accountcommon.RoleMemberV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.RoleNamesResponseV3": { "properties": { "data": { "items": { "type": "string" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.RoleOverrideResponse": { "properties": { "active": { "type": "boolean", "x-omitempty": false }, "additions": { "items": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "type": "array" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "exclusions": { "items": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "type": "array" }, "identity": { "type": "string" }, "namespace": { "type": "string" }, "overrides": { "items": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "type": "array" }, "replacements": { "items": { "$ref": "#/definitions/accountcommon.ReplaceRolePermission" }, "type": "array" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": true } }, "required": [ "active", "additions", "exclusions", "identity", "namespace", "overrides", "replacements" ] }, "model.RoleOverrideSourceResponse": { "properties": { "permissions": { "items": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "type": "array" } }, "required": [ "permissions" ] }, "model.RoleOverrideStatsUpdateRequest": { "properties": { "active": { "type": "boolean", "x-omitempty": false } }, "required": [ "active" ] }, "model.RoleOverrideUpdateRequest": { "properties": { "additions": { "items": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "type": "array" }, "exclusions": { "items": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "type": "array" }, "overrides": { "items": { "$ref": "#/definitions/accountcommon.OverrideRolePermission" }, "type": "array" }, "replacements": { "items": { "$ref": "#/definitions/accountcommon.ReplaceRolePermission" }, "type": "array" } }, "required": [ "additions", "exclusions", "overrides", "replacements" ] }, "model.RolePermissionResponseV3": { "properties": { "permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" } }, "required": [ "permissions" ] }, "model.RoleResponse": { "properties": { "IsWildcard": { "example": "false", "type": "boolean", "x-omitempty": false }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "RoleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "RoleName": { "example": "Game Admin", "type": "string" } }, "required": [ "IsWildcard", "Permissions", "RoleId", "RoleName" ] }, "model.RoleResponseV3": { "properties": { "adminRole": { "example": "true", "type": "boolean", "x-omitempty": false }, "isWildcard": { "example": "false", "type": "boolean", "x-omitempty": false }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "roleName": { "example": "Game Admin", "type": "string" } }, "required": [ "adminRole", "isWildcard", "permissions", "roleId", "roleName" ] }, "model.RoleResponseWithManagers": { "properties": { "IsWildcard": { "example": "false", "type": "boolean", "x-omitempty": false }, "Managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManager" }, "type": "array" }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "RoleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "RoleName": { "example": "Game Admin", "type": "string" } }, "required": [ "IsWildcard", "Managers", "Permissions", "RoleId", "RoleName" ] }, "model.RoleResponseWithManagersAndPaginationV3": { "properties": { "data": { "items": { "$ref": "#/definitions/model.RoleResponseWithManagersV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" } }, "required": [ "data", "paging" ] }, "model.RoleResponseWithManagersV3": { "properties": { "adminRole": { "example": "true", "type": "boolean", "x-omitempty": false }, "isWildcard": { "example": "false", "type": "boolean", "x-omitempty": false }, "managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManagerV3" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "roleName": { "example": "Game Admin", "type": "string" } }, "required": [ "adminRole", "isWildcard", "managers", "permissions", "roleId", "roleName" ] }, "model.RoleUpdateRequest": { "properties": { "RoleName": { "type": "string" } }, "required": [ "RoleName" ] }, "model.RoleUpdateRequestV3": { "properties": { "deletable": { "description": "Specify if the role can be deleted.", "example": "true", "type": "boolean", "x-omitempty": false }, "isWildcard": { "description": "Specify if the role can be assigned to wildcard (*) namespace. Default: false.", "example": "false", "type": "boolean", "x-omitempty": false }, "roleName": { "description": "Role name, alphanumeric, cannot have special characters.", "example": "Game Admin", "type": "string" } }, "required": [ "isWildcard", "roleName" ] }, "model.RoleV4Request": { "properties": { "adminRole": { "default": false, "description": "Specify if the role is for admin users. Default: false.", "example": "false", "type": "boolean", "x-omitempty": false }, "deletable": { "description": "Specify if the role can be deleted. Default: true.", "example": "true", "type": "boolean", "x-omitempty": false }, "isWildcard": { "default": false, "description": "Specify if the role can be assigned to wildcard (*) namespace. Default: false.", "example": "false", "type": "boolean", "x-omitempty": false }, "roleName": { "description": "Role name, alphanumeric, cannot have special characters.", "example": "Game Admin", "type": "string" } }, "required": [ "adminRole", "isWildcard", "roleName" ] }, "model.RoleV4Response": { "properties": { "adminRole": { "example": "true", "type": "boolean", "x-omitempty": false }, "isWildcard": { "example": "false", "type": "boolean", "x-omitempty": false }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "roleName": { "example": "Game Admin", "type": "string" } }, "required": [ "adminRole", "isWildcard", "permissions", "roleId", "roleName" ] }, "model.SSOPlatformCredentialRequest": { "properties": { "acsUrl": { "description": "For Azure with SAML: the SAML Assertion Consumer Service (ACS) URL on the service provider where the IdP sends its authentication response.", "example": "https://example.com/saml/acs", "type": "string" }, "apiKey": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "appId": { "description": "Application identifier in the IdP. For Azure with SAML, this is the EntityID.", "example": "12345678-1234-1234-1234-abcdef123456", "type": "string" }, "federationMetadataUrl": { "description": "For Azure with SAML: the IdP federation metadata endpoint used by the service provider to build a trust relationship.", "example": "https://idp.example.com/metadata", "type": "string" }, "isActive": { "example": "true", "type": "boolean", "x-omitempty": false }, "redirectUri": { "example": "https://example.com/sso/callback", "type": "string" }, "secret": { "example": "SsoSecret123!", "type": "string" }, "ssoUrl": { "description": "For Discourse: the forum base URL.", "example": "https://idp.example.com/saml2/sso", "type": "string" } }, "required": [ "acsUrl", "apiKey", "appId", "federationMetadataUrl", "redirectUri", "secret", "ssoUrl" ] }, "model.SSOPlatformCredentialResponse": { "properties": { "acsUrl": { "example": "https://example.com/saml/acs", "type": "string" }, "appId": { "example": "12345678-1234-1234-1234-abcdef123456", "type": "string" }, "federationMetadataUrl": { "example": "https://idp.example.com/metadata", "type": "string" }, "isActive": { "example": "true", "type": "boolean", "x-omitempty": false }, "namespace": { "example": "mygame", "type": "string" }, "platformId": { "example": "azure", "type": "string" }, "redirectUri": { "example": "https://example.com/sso/callback", "type": "string" }, "secret": { "example": "****", "type": "string" }, "ssoUrl": { "example": "https://idp.example.com/saml2/sso", "type": "string" }, "truncatedApiKey": { "description": "first few characters of key", "example": "api_", "type": "string" } }, "required": [ "acsUrl", "appId", "federationMetadataUrl", "isActive", "namespace", "platformId", "redirectUri", "secret", "ssoUrl", "truncatedApiKey" ] }, "model.SearchUsersByPlatformIDResponse": { "properties": { "Data": { "items": { "$ref": "#/definitions/accountcommon.UserSearchByPlatformIDResult" }, "type": "array" }, "Paging": { "$ref": "#/definitions/accountcommon.Pagination" } }, "required": [ "Data", "Paging" ] }, "model.SearchUsersResponse": { "properties": { "Data": { "items": { "$ref": "#/definitions/accountcommon.UserSearchResult" }, "type": "array" } }, "required": [ "Data" ] }, "model.SearchUsersResponseWithPaginationV3": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserResponseV3" }, "type": "array" }, "paging": { "$ref": "#/definitions/accountcommon.PaginationV3" }, "totalData": { "example": "100", "format": "int32", "type": "integer" } }, "required": [ "data", "paging", "totalData" ] }, "model.SendRegisterVerificationCodeRequest": { "properties": { "emailAddress": { "example": "user@example.com", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" } }, "required": [ "emailAddress" ] }, "model.SendVerificationCodeRequest": { "properties": { "Context": { "type": "string" }, "LanguageTag": { "example": "en-US", "type": "string" }, "LoginID": { "example": "user@example.com", "type": "string" } }, "required": [ "LanguageTag", "LoginID" ] }, "model.SendVerificationCodeRequestV3": { "properties": { "context": { "example": "UserAccountRegistration", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" }, "upgradeToken": { "description": "required when in /me/code/request/forward", "type": "string" } }, "required": [ "emailAddress" ] }, "model.SendVerificationLinkRequest": { "properties": { "languageTag": { "example": "en-US", "type": "string" } } }, "model.SimpleProfileUpdateStrategyConfigs": { "properties": { "config": { "$ref": "#/definitions/accountcommon.ProfileUpdateConfig", "description": "only work when type is limited" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "field": { "description": "allow value [dob, username, display_name, country]", "type": "string" }, "type": { "description": "allow value [initial_only, limited, unlimited]", "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "createdAt", "field", "type", "updatedAt" ] }, "model.SimpleUserBan": { "properties": { "ban": { "example": "CHAT_SEND", "type": "string" }, "endDate": { "example": "1798761599", "format": "int64", "type": "integer" } }, "required": [ "ban", "endDate" ] }, "model.TagCreateRequestV3": { "properties": { "tagName": { "type": "string" } }, "required": [ "tagName" ] }, "model.TagDetail": { "properties": { "id": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "tagName": { "example": "VIP", "type": "string" } }, "required": [ "id" ] }, "model.TagUpdateRequestV3": { "properties": { "tagName": { "type": "string" } }, "required": [ "tagName" ] }, "model.ThirdPartyLoginPlatformCredentialRequest": { "properties": { "ACSURL": { "description": "ACSURL is an endpoint on the service provider where the identity provider will redirect to with its authentication response", "type": "string" }, "AWSCognitoRegion": { "description": "AWSCognitoRegion is aws region where user pool reside", "type": "string" }, "AWSCognitoUserPool": { "description": "AWSCognitoUserPool is aws cognito user pool id", "type": "string" }, "AllowedClients": { "description": "allowed clients that can show this login method.", "items": { "type": "string" }, "type": "array" }, "AppId": { "type": "string" }, "AuthorizationEndpoint": { "description": "third party authorization endpoint to obtain authorization code. Used for generic oauth flow.", "type": "string" }, "ClientId": { "type": "string" }, "EmptyStrFieldList": { "description": "specify which string fields need set empty value.", "items": { "type": "string" }, "type": "array" }, "EnableServerLicenseValidation": { "description": "a flag indicates whether enable server license validation", "type": "boolean", "x-omitempty": false }, "Environment": { "description": "Target environment for the platform. For netflix: sandbox or production.", "type": "string" }, "FederationMetadataURL": { "description": "FederationMetadataURL is an endpoint on the Identity Provider(IdP) to get IdP federation metadata for service provider to build trust relationship", "type": "string" }, "GenericOauthFlow": { "description": "Enables generic OAuth flow. When true, configure TokenAuthenticationType, TokenClaimsMapping, JWKSEndpoint, UserInfoEndpoint, etc.", "type": "boolean", "x-omitempty": false }, "IncludePUID": { "description": "a flag indicates whether need to include puid in access token claim", "type": "boolean", "x-omitempty": false }, "IsActive": { "type": "boolean", "x-omitempty": false }, "Issuer": { "description": "Issuer of 3rd party identity provider. Used for generic oauth flow.", "type": "string" }, "JWKSEndpoint": { "description": "JWKS endpoint to validate 3rd party user id token. Used for generic oauth flow.", "type": "string" }, "KeyID": { "description": "apple key id", "type": "string" }, "LogoURL": { "description": "login method logo url", "type": "string" }, "NetflixCertificates": { "$ref": "#/definitions/accountcommon.NetflixCertificates", "description": "A json containing credentials for netflix integration. Only for netflix platformId" }, "OrganizationId": { "type": "string" }, "PlatformName": { "type": "string" }, "PrivateKey": { "description": "private key used to decrypt JWT token. Used for live login.", "type": "string" }, "RedirectUri": { "type": "string" }, "RegisteredDomains": { "description": "domains that are allowed to create user and grant roles. Used for google login.", "items": { "$ref": "#/definitions/accountcommon.RegisteredDomain" }, "type": "array" }, "RelyingParty": { "description": "xbox relying party. Used for live login.", "type": "string" }, "SandboxId": { "description": "sandbox id. Used for live login.", "type": "string" }, "Secret": { "description": "Platform-specific secret value:\n- apple: base64-encoded private key\n- discord/epicgames/facebook/google/twitch/xblwebapi: client secret of the platform app\n- oculus: app secret\n- ps4/ps5/ps4web: client secret of the PSN web server\n- steam/steamopenid: Steam Web API Key\n- live: Relying Party Private Key in base64-encoded PEM format\n- awscognito/nintendo/netflix: not required", "type": "string" }, "TeamID": { "description": "apple team id", "type": "string" }, "TokenAuthenticationType": { "description": "Token authentication type for authenticating the 3rd party user. Used for generic oauth flow. Supported values:\n- idToken\n- code\n- bearerToken", "type": "string" }, "TokenClaimsMapping": { "additionalProperties": { "type": "string" }, "description": "JSON map for how IAM retrieves values from id token claims or userInfo endpoint. Used for generic oauth flow.\nAllowed keys and their default claim keys:\n- userIdentity (default: sub)\n- name (default: name)\n- email (default: email)\n- avatarUrl (default: picture)", "type": "object" }, "TokenEndpoint": { "description": "third party token endpoint to obtain token. Used for generic oauth flow.", "type": "string" }, "UserInfoEndpoint": { "description": "third party user info endpoint to validate 3rd party user profile using third party user token. Used for generic oauth flow.", "type": "string" }, "UserInfoHTTPMethod": { "description": "http method to call third party user info endpoint to validate 3rd party user profile using third party user token. Used for generic oauth flow.", "type": "string" }, "googleAdminConsoleKey": { "type": "string" }, "scopes": { "description": "OAuth scopes for server-side token exchange and/or authorization URL construction with the third-party platform.\n- Generic OAuth / OIDC platforms: defaults to [openid, profile, email]\n- Pre-defined platforms (e.g. epicgames, ps4web, xblweb): platform-specific defaults apply when empty — see *GET /iam/v3/admin/platforms/{platformId}/defaults*\n- To reset to platform defaults after setting custom scopes, send an empty array []", "items": { "type": "string" }, "type": "array" } }, "required": [ "ACSURL", "AWSCognitoRegion", "AWSCognitoUserPool", "AppId", "AuthorizationEndpoint", "ClientId", "Environment", "FederationMetadataURL", "GenericOauthFlow", "Issuer", "JWKSEndpoint", "KeyID", "NetflixCertificates", "OrganizationId", "PlatformName", "RedirectUri", "RegisteredDomains", "Secret", "TeamID", "TokenAuthenticationType", "TokenEndpoint", "UserInfoEndpoint", "UserInfoHTTPMethod" ] }, "model.ThirdPartyLoginPlatformCredentialResponse": { "properties": { "ACSURL": { "description": "ACSURL is an endpoint on the service provider where the identity provider will redirect to with its authentication response", "type": "string" }, "AWSCognitoRegion": { "description": "AWSCognitoRegion is aws region where user pool reside", "type": "string" }, "AWSCognitoUserPool": { "description": "AWSCognitoUserPool is aws cognito user pool id", "type": "string" }, "AllowedClients": { "description": "allowed clients that can show this login method", "items": { "type": "string" }, "type": "array" }, "AppId": { "type": "string" }, "AuthorizationEndpoint": { "description": "third party authorization endpoint to obtain authorization code", "type": "string" }, "ClientId": { "type": "string" }, "EnableServerLicenseValidation": { "description": "a flag indicates whether enable server license validation, only available on ps5, ps4, xbl", "type": "boolean", "x-omitempty": false }, "Environment": { "type": "string" }, "FederationMetadataURL": { "description": "FederationMetadataURL is an endpoint on the Identity Provider(IdP) to get IdP federation metadata for service provider to build trust relationship", "type": "string" }, "GenericOauthFlow": { "default": false, "description": "GenericOauthFlow is a flag that indicate this client is using generic oauth/open id flow or not", "type": "boolean", "x-omitempty": false }, "IncludePUID": { "description": "a flag indicates whether need to include puid in access token claim", "type": "boolean", "x-omitempty": false }, "IsActive": { "type": "boolean", "x-omitempty": false }, "Issuer": { "description": "Issuer of 3rd party identity provider. Used for generic oauth flow.", "type": "string" }, "JWKSEndpoint": { "description": "JWKS endpoint to validate 3rd party user id token. Used for generic oauth flow.", "type": "string" }, "KeyID": { "type": "string" }, "LogoURL": { "description": "login method logo url", "type": "string" }, "Namespace": { "type": "string" }, "NetflixCertificates": { "$ref": "#/definitions/accountcommon.NetflixCertificates", "description": "A json containing Credentials for netflix integration." }, "OrganizationId": { "type": "string" }, "PlatformId": { "type": "string" }, "PlatformName": { "type": "string" }, "PrivateKey": { "description": "private key used to decrypt JWT token", "type": "string" }, "RedirectUri": { "type": "string" }, "RelyingParty": { "description": "xbox relying party", "type": "string" }, "SandboxId": { "description": "sandbox id", "type": "string" }, "Secret": { "type": "string" }, "TeamID": { "type": "string" }, "TokenAuthenticationType": { "description": "Token authentication type for authenticating the 3rd party user. Used for generic oauth flow. Supported values:\n- idToken\n- code\n- bearerToken", "type": "string" }, "TokenClaimsMapping": { "additionalProperties": { "type": "string" }, "description": "A JSON containing how IAM service retrieve value from id token claims or userInfo endpoint. Used for generic oauth flow.", "type": "object" }, "TokenEndpoint": { "description": "third party token endpoint to obtain token", "type": "string" }, "UserInfoEndpoint": { "description": "third party user info endpoint to validate 3rd party user profile using third party user token. Used for generic oauth flow.", "type": "string" }, "UserInfoHTTPMethod": { "description": "http method to call third party user info endpoint to validate 3rd party user profile using third party user token. Used for generic oauth flow.", "type": "string" }, "registeredDomains": { "items": { "$ref": "#/definitions/accountcommon.RegisteredDomain" }, "type": "array" }, "scopes": { "description": "OAuth scopes used during server-side token exchange and/or authorization url construction with the third-party platform. Empty means the platform default is used, see *GET /iam/v3/admin/platforms/{platformId}/defaults* for the default values.", "items": { "type": "string" }, "type": "array" } }, "required": [ "ACSURL", "AWSCognitoRegion", "AWSCognitoUserPool", "AppId", "ClientId", "EnableServerLicenseValidation", "Environment", "FederationMetadataURL", "GenericOauthFlow", "IsActive", "Issuer", "JWKSEndpoint", "KeyID", "Namespace", "OrganizationId", "PlatformId", "PlatformName", "RedirectUri", "Secret", "TeamID", "TokenAuthenticationType" ] }, "model.TokenThirdPartyLinkStatusResponse": { "properties": { "linked": { "type": "boolean", "x-omitempty": false }, "platformToken": { "type": "string" }, "sandboxId": { "type": "string" } }, "required": [ "linked" ] }, "model.UnlinkUserPlatformRequest": { "properties": { "platformNamespace": { "description": "The namespace of the justice platform to unlink from. Required when platformId is 'justice'.", "type": "string" } } }, "model.UpdatePermissionScheduleRequest": { "properties": { "SchedAction": { "example": "4", "format": "int32", "type": "integer" }, "SchedCron": { "example": "0 0 * * *", "type": "string" }, "SchedRange": { "items": { "type": "string" }, "type": "array" } } }, "model.UpdateProfileUpdateStrategyConfigRequest": { "properties": { "config": { "$ref": "#/definitions/accountcommon.ProfileUpdateConfig", "description": "only work when type is limited" }, "type": { "description": "allow value [initial_only, limited, unlimited]", "type": "string" } } }, "model.UpdateUserDeletionStatusRequest": { "properties": { "deletionDate": { "format": "int64", "type": "integer" }, "enabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "enabled" ] }, "model.UpdateUserStatusRequest": { "properties": { "enabled": { "description": "Set to true to enable the account, false to disable it.", "type": "boolean", "x-omitempty": false }, "reason": { "description": "Reason for disabling the account. For Account Disable: use 'AdminDeactivateAccount' when the request comes from an admin. Ignored when enabling the account.", "type": "string" } }, "required": [ "enabled" ] }, "model.UpgradeHeadlessAccountRequest": { "properties": { "LoginID": { "description": "new email address or phone number", "example": "user@example.com", "type": "string" }, "Password": { "description": "new password", "example": "SecurePass123!", "type": "string" } }, "required": [ "LoginID", "Password" ] }, "model.UpgradeHeadlessAccountV3Request": { "properties": { "emailAddress": { "description": "new email address", "example": "user@example.com", "type": "string" }, "password": { "description": "new password", "example": "SecurePass123!", "type": "string" } }, "required": [ "emailAddress", "password" ] }, "model.UpgradeHeadlessAccountWithVerificationCodeRequest": { "properties": { "Code": { "example": "123456", "type": "string" }, "Password": { "example": "SecurePass123!", "type": "string" }, "loginId": { "example": "user@example.com", "type": "string" } }, "required": [ "Code", "Password", "loginId" ] }, "model.UpgradeHeadlessAccountWithVerificationCodeRequestV3": { "properties": { "code": { "type": "string" }, "country": { "description": "Optional country to update after upgrade. Format: ISO3166-1 alpha-2 two letter, e.g. US.", "type": "string" }, "dateOfBirth": { "description": "Optional date of birth to update after upgrade. Format: YYYY-MM-DD, e.g. 2019-04-29.", "type": "string" }, "displayName": { "description": "Optional display name to update after upgrade.", "type": "string" }, "emailAddress": { "type": "string" }, "password": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "validateOnly": { "type": "boolean", "x-omitempty": false } }, "required": [ "code", "emailAddress", "password" ] }, "model.UserActiveBanResponse": { "properties": { "Ban": { "example": "CHAT_SEND", "type": "string" }, "BanId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "EndDate": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "Ban", "BanId", "EndDate" ] }, "model.UserActiveBanResponseV3": { "properties": { "ban": { "example": "CHAT_SEND", "type": "string" }, "banId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "endDate": { "format": "date-time", "type": "string", "x-nullable": false }, "targetedNamespace": { "example": "mygame", "type": "string" } }, "required": [ "ban", "banId", "endDate", "targetedNamespace" ] }, "model.UserBanResponse": { "properties": { "Ban": { "type": "string" }, "BanId": { "type": "string" }, "BannedBy": { "$ref": "#/definitions/.BannedBy" }, "Comment": { "type": "string" }, "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "DisabledDate": { "format": "date-time", "type": "string", "x-nullable": true }, "Enabled": { "type": "boolean", "x-omitempty": false }, "EndDate": { "format": "date-time", "type": "string", "x-nullable": false }, "Namespace": { "type": "string" }, "Reason": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "Ban", "BanId", "BannedBy", "Comment", "CreatedAt", "Enabled", "EndDate", "Namespace", "Reason", "UserId" ] }, "model.UserBanResponseV3": { "properties": { "ban": { "example": "CHAT_SEND", "type": "string" }, "banId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "bannedBy": { "$ref": "#/definitions/accountcommon.BannedByV3" }, "comment": { "example": "Spamming in chat", "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "disabledDate": { "format": "date-time", "type": "string", "x-nullable": false }, "enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "endDate": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "example": "mygame", "type": "string" }, "reason": { "example": "Violation of terms", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "ban", "banId", "bannedBy", "comment", "createdAt", "disabledDate", "enabled", "endDate", "namespace", "reason", "userId" ] }, "model.UserBanWithStatus": { "properties": { "active": { "example": "true", "type": "boolean", "x-omitempty": false }, "ban": { "example": "CHAT_SEND", "type": "string" }, "banId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "bannedBy": { "$ref": "#/definitions/accountcommon.BannedByV3" }, "comment": { "example": "Spamming in chat", "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "disabledDate": { "format": "date-time", "type": "string", "x-nullable": false }, "enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "endDate": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "example": "mygame", "type": "string" }, "reason": { "example": "Violation of terms", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "active", "ban", "banId", "bannedBy", "comment", "createdAt", "disabledDate", "enabled", "endDate", "namespace", "reason", "userId" ] }, "model.UserBaseInfo": { "properties": { "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "displayName": { "example": "John Doe", "type": "string" }, "platformUserIds": { "additionalProperties": { "type": "string" }, "type": "object" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "username": { "example": "johndoe", "type": "string" } }, "required": [ "avatarUrl", "displayName", "platformUserIds", "userId" ] }, "model.UserBulkUpdateRequestV3": { "properties": { "skipLoginQueue": { "type": "boolean", "x-omitempty": false } }, "required": [ "skipLoginQueue" ] }, "model.UserCreateRequest": { "properties": { "AuthType": { "example": "EMAILPASSWD", "type": "string" }, "Country": { "example": "US", "type": "string" }, "DisplayName": { "example": "John Doe", "type": "string" }, "LoginId": { "example": "user@example.com", "type": "string" }, "Password": { "example": "SecurePass123!", "type": "string" }, "PasswordMD5Sum": { "type": "string" } }, "required": [ "AuthType", "Country", "DisplayName", "LoginId", "Password" ] }, "model.UserCreateRequestV3": { "properties": { "PasswordMD5Sum": { "type": "string" }, "acceptedPolicies": { "items": { "$ref": "#/definitions/legal.AcceptedPoliciesRequest" }, "type": "array" }, "authType": { "example": "EMAILPASSWD", "type": "string" }, "code": { "example": "123456", "type": "string" }, "country": { "example": "US", "type": "string" }, "dateOfBirth": { "example": "1990-01-15", "type": "string" }, "displayName": { "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "password": { "example": "SecurePass123!", "type": "string" }, "reachMinimumAge": { "example": "true", "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" } }, "required": [ "authType", "code", "country", "displayName", "emailAddress", "password", "reachMinimumAge" ] }, "model.UserCreateResponse": { "properties": { "AuthType": { "example": "EMAILPASSWD", "type": "string" }, "Country": { "example": "US", "type": "string" }, "DateOfBirth": { "format": "date-time", "type": "string", "x-nullable": false }, "DisplayName": { "example": "John Doe", "type": "string" }, "LoginId": { "example": "user@example.com", "type": "string" }, "Namespace": { "example": "mygame", "type": "string" }, "UserId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "AuthType", "Country", "DateOfBirth", "DisplayName", "LoginId", "Namespace", "UserId" ] }, "model.UserCreateResponseV3": { "properties": { "authType": { "example": "EMAILPASSWD", "type": "string" }, "country": { "example": "US", "type": "string" }, "dateOfBirth": { "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "authType", "country", "dateOfBirth", "displayName", "emailAddress", "namespace", "userId" ] }, "model.UserDeletionStatusResponse": { "properties": { "deletionStatus": { "type": "boolean", "x-omitempty": false } }, "required": [ "deletionStatus" ] }, "model.UserIDsRequest": { "properties": { "userIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "userIds" ] }, "model.UserIdentityUpdateRequestV3": { "properties": { "emailAddress": { "example": "newemail@example.com", "type": "string" }, "password": { "example": "NewSecurePass123!", "type": "string" } } }, "model.UserInfoResponse": { "properties": { "displayName": { "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "displayName", "emailAddress", "namespace", "userId" ] }, "model.UserInformation": { "properties": { "Country": { "type": "string" }, "DisplayName": { "type": "string" }, "EmailAddresses": { "items": { "type": "string" }, "type": "array" }, "LinkedPlatformAccounts": { "items": { "$ref": "#/definitions/model.PlatformUserInformation" }, "type": "array" }, "PhoneNumber": { "type": "string" }, "Username": { "type": "string" }, "XUID": { "type": "string" } }, "required": [ "Country", "DisplayName", "EmailAddresses", "LinkedPlatformAccounts", "PhoneNumber", "Username" ] }, "model.UserInputValidationRequest": { "properties": { "displayName": { "type": "string" }, "password": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "username": { "type": "string" } } }, "model.UserInputValidationResponse": { "properties": { "message": { "type": "string" }, "valid": { "type": "boolean", "x-omitempty": false } }, "required": [ "valid" ] }, "model.UserInvitationHistory": { "properties": { "accepted": { "example": "true", "type": "boolean", "x-omitempty": false }, "invitee": { "example": "invitee@example.com", "type": "string" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "accepted", "invitee", "updatedAt" ] }, "model.UserInvitationV3": { "properties": { "acceptanceLink": { "type": "string" }, "additionalData": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "email": { "example": "invitee@example.com", "type": "string" }, "expiredAt": { "format": "date-time", "type": "string", "x-nullable": false }, "id": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "isNewStudio": { "type": "boolean", "x-omitempty": false }, "languageTag": { "example": "en-US", "type": "string" }, "namespace": { "example": "mygame", "type": "string" }, "namespaceDisplayName": { "example": "My Game", "type": "string" }, "roles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "studioNamespace": { "example": "mystudio", "type": "string" } }, "required": [ "createdAt", "email", "expiredAt", "roles" ] }, "model.UserLoginHistoryResponse": { "properties": { "ApplicationName": { "example": "My Game Client", "type": "string" }, "City": { "example": "Los Angeles", "type": "string" }, "Country": { "example": "US", "type": "string" }, "DeviceId": { "example": "device123abc", "type": "string" }, "State": { "example": "California", "type": "string" }, "Timestamp": { "example": "1711929600", "format": "int64", "type": "integer" }, "deviceName": { "type": "string" } }, "required": [ "ApplicationName", "City", "Country", "DeviceId", "State", "Timestamp", "deviceName" ] }, "model.UserMFAStatusResponseV4": { "properties": { "defaultFactor": { "example": "authenticator", "type": "string" }, "enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "enabledFactors": { "description": "list of enabled MFA factors; valid values: authenticator, backupCode, email", "items": { "type": "string" }, "type": "array" } }, "required": [ "enabled" ] }, "model.UserMFATokenResponseV4": { "properties": { "mfaToken": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "mfaToken" ] }, "model.UserPasswordUpdateRequest": { "properties": { "LanguageTag": { "example": "en-US", "type": "string" }, "NewPassword": { "example": "NewSecurePass123!", "type": "string" }, "OldPassword": { "example": "OldSecurePass123!", "type": "string" } }, "required": [ "LanguageTag", "NewPassword", "OldPassword" ] }, "model.UserPasswordUpdateV3Request": { "properties": { "languageTag": { "type": "string" }, "mfaToken": { "type": "string" }, "newPassword": { "type": "string" }, "oldPassword": { "type": "string" } }, "required": [ "languageTag", "newPassword", "oldPassword" ] }, "model.UserPermissionsResponseV3": { "properties": { "action": { "example": "2", "format": "int32", "type": "integer" }, "resource": { "example": "ADMIN:NAMESPACE:{namespace}:USER", "type": "string" }, "schedAction": { "format": "int32", "type": "integer" }, "schedCron": { "type": "string" }, "schedRange": { "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "resource" ] }, "model.UserPlatformInfo": { "properties": { "platformAvatarUrl": { "example": "https://cdn.steam.com/avatar.png", "type": "string" }, "platformDisplayName": { "example": "SteamPlayer123", "type": "string" }, "platformGroup": { "example": "steam", "type": "string" }, "platformId": { "example": "steam", "type": "string" }, "platformUserId": { "example": "platformUser123", "type": "string" } }, "required": [ "platformId" ] }, "model.UserPlatformInfos": { "properties": { "avatarUrl": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "type": "string" }, "platformInfos": { "items": { "$ref": "#/definitions/model.UserPlatformInfo" }, "type": "array" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "createdAt", "platformInfos", "userId" ] }, "model.UserPlatformLinkHistories": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserPlatformLinkHistory" }, "type": "array" } }, "required": [ "data" ] }, "model.UserPlatformLinkHistory": { "properties": { "action": { "type": "string" }, "actor": { "type": "string" }, "actorType": { "type": "string" }, "createdAt": { "format": "int64", "type": "integer" }, "namespace": { "type": "string" }, "platform": { "type": "string" }, "platformDisplayName": { "type": "string" }, "platformId": { "type": "string" }, "platformUserId": { "type": "string" }, "publisherUserId": { "type": "string" } }, "required": [ "action", "actor", "actorType", "createdAt", "namespace", "platform", "platformDisplayName", "platformId", "platformUserId", "publisherUserId" ] }, "model.UserPlatformMetadata": { "properties": { "metadata": { "type": "object" }, "namespace": { "description": "the namespace of this metadata query from", "type": "string" }, "platformUserId": { "type": "string" }, "userId": { "description": "it is always the publisher user id. this is deprecate, and will be removed", "type": "string" } }, "required": [ "metadata", "namespace", "platformUserId", "userId" ] }, "model.UserProfileUpdateAllowStatus": { "properties": { "status": { "items": { "$ref": "#/definitions/model.FieldUpdateAllowStatus" }, "type": "array" } }, "required": [ "status" ] }, "model.UserPublicInfoResponseV4": { "properties": { "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "example": "John Doe", "type": "string" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "createdAt", "displayName", "userId" ] }, "model.UserResponse": { "properties": { "AuthType": { "example": "EMAILPASSWD", "type": "string" }, "AvatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "Bans": { "items": { "$ref": "#/definitions/model.UserActiveBanResponse" }, "type": "array" }, "Country": { "example": "US", "type": "string" }, "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "DateOfBirth": { "format": "date-time", "type": "string", "x-nullable": false }, "DeletionStatus": { "example": "false", "type": "boolean", "x-omitempty": false }, "DisplayName": { "example": "John Doe", "type": "string" }, "EmailAddress": { "example": "user@example.com", "type": "string" }, "EmailVerified": { "example": "true", "type": "boolean", "x-omitempty": false }, "Enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "LastDateOfBirthChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "LastEnabledChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "LoginId": { "example": "user@example.com", "type": "string" }, "Namespace": { "example": "mygame", "type": "string" }, "NamespaceRoles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "NewEmailAddress": { "type": "string" }, "OldEmailAddress": { "type": "string" }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "PhoneNumber": { "example": "+11234567890", "type": "string" }, "PhoneVerified": { "example": "false", "type": "boolean", "x-omitempty": false }, "PlatformId": { "type": "string" }, "PlatformUserId": { "type": "string" }, "Roles": { "items": { "type": "string" }, "type": "array" }, "UserId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "Username": { "example": "johndoe", "type": "string" }, "XUID": { "type": "string" }, "uniqueDisplayName": { "type": "string" } }, "required": [ "AuthType", "Bans", "Country", "CreatedAt", "DateOfBirth", "DeletionStatus", "DisplayName", "EmailVerified", "Enabled", "LastDateOfBirthChangedTime", "LastEnabledChangedTime", "LoginId", "Namespace", "NamespaceRoles", "OldEmailAddress", "Permissions", "PhoneVerified", "Roles", "UserId" ] }, "model.UserResponseV3": { "properties": { "authType": { "example": "EMAILPASSWD", "type": "string" }, "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "bans": { "items": { "$ref": "#/definitions/model.UserActiveBanResponseV3" }, "type": "array" }, "country": { "example": "US", "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "dateOfBirth": { "format": "date-time", "type": "string", "x-nullable": true }, "deletionDate": { "type": "string" }, "deletionStatus": { "example": "false", "type": "boolean", "x-omitempty": false }, "displayName": { "example": "John Doe", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" }, "emailVerified": { "example": "true", "type": "boolean", "x-omitempty": false }, "enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "lastDateOfBirthChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "lastEnabledChangedTime": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "example": "mygame", "type": "string" }, "namespaceRoles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "newEmailAddress": { "type": "string" }, "oldEmailAddress": { "type": "string" }, "permissions": { "items": { "$ref": "#/definitions/model.UserPermissionsResponseV3" }, "type": "array" }, "phoneNumber": { "example": "+11234567890", "type": "string" }, "phoneVerified": { "example": "false", "type": "boolean", "x-omitempty": false }, "platformAvatarUrl": { "type": "string" }, "platformDisplayName": { "type": "string" }, "platformId": { "example": "steam", "type": "string" }, "platformInfos": { "items": { "$ref": "#/definitions/model.UserPlatformInfo" }, "type": "array" }, "platformUserId": { "example": "platformUser123", "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "skipLoginQueue": { "example": "false", "type": "boolean", "x-omitempty": false }, "tags": { "items": { "$ref": "#/definitions/model.TagDetail" }, "type": "array" }, "testAccount": { "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "userName": { "example": "johndoe", "type": "string" } }, "required": [ "authType", "bans", "country", "createdAt", "deletionStatus", "displayName", "emailAddress", "emailVerified", "enabled", "lastDateOfBirthChangedTime", "lastEnabledChangedTime", "namespace", "namespaceRoles", "permissions", "phoneVerified", "roles", "userId" ] }, "model.UserRolesV4Response": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "roleId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "roleName": { "example": "Game Admin", "type": "string" } }, "required": [ "assignedNamespaces", "roleId", "roleName" ] }, "model.UserStateResponseV3": { "properties": { "emailVerified": { "example": "true", "type": "boolean", "x-omitempty": false }, "enabled": { "example": "true", "type": "boolean", "x-omitempty": false }, "fullAccount": { "description": "If the account has email address, then it is full account", "example": "true", "type": "boolean", "x-omitempty": false }, "testAccount": { "example": "false", "type": "boolean", "x-omitempty": false } }, "required": [ "emailVerified", "enabled", "fullAccount", "testAccount" ] }, "model.UserUpdateRequest": { "properties": { "Country": { "example": "US", "type": "string" }, "DateOfBirth": { "example": "1990-01-15", "type": "string" }, "DisplayName": { "example": "John Doe", "type": "string" }, "LanguageTag": { "example": "en-US", "type": "string" } } }, "model.UserUpdateRequestV3": { "properties": { "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "country": { "example": "US", "type": "string" }, "dateOfBirth": { "example": "1990-01-15", "type": "string" }, "displayName": { "example": "John Doe", "type": "string" }, "languageTag": { "example": "en-US", "type": "string" }, "skipLoginQueue": { "example": "true", "type": "boolean", "x-omitempty": false }, "tags": { "description": "Tags minimum length is 0 and maximum length is 5", "items": { "type": "string" }, "maxItems": 5, "minItems": 0, "type": "array" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userName": { "example": "johndoe", "type": "string" } } }, "model.UserVerificationRequest": { "properties": { "Code": { "example": "123456", "type": "string" }, "ContactType": { "example": "email", "type": "string" }, "LanguageTag": { "example": "en-US", "type": "string" }, "validateOnly": { "example": "false", "type": "boolean", "x-omitempty": false } }, "required": [ "Code", "ContactType", "LanguageTag", "validateOnly" ] }, "model.UserVerificationRequestV3": { "properties": { "code": { "type": "string" }, "contactType": { "type": "string" }, "languageTag": { "type": "string" }, "validateOnly": { "type": "boolean", "x-omitempty": false } }, "required": [ "code", "contactType" ] }, "model.UserWithPlatformInfo": { "properties": { "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "displayName": { "example": "John Doe", "type": "string" }, "platformInfos": { "items": { "$ref": "#/definitions/model.UserPlatformInfo" }, "type": "array" }, "uniqueDisplayName": { "example": "JohnDoe#1234", "type": "string" }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "username": { "example": "johndoe", "type": "string" }, "xuid": { "example": "2535428965412345", "type": "string" } }, "required": [ "platformInfos", "userId" ] }, "model.UsersPlatformInfosRequestV3": { "properties": { "platformId": { "type": "string" }, "userIds": { "description": "max count 100", "items": { "type": "string" }, "type": "array" } }, "required": [ "userIds" ] }, "model.UsersPlatformInfosResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/model.UserPlatformInfos" }, "type": "array" } }, "required": [ "data" ] }, "model.UsersUpdateRequestV3": { "properties": { "updateRequest": { "$ref": "#/definitions/model.UserBulkUpdateRequestV3" }, "userIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "updateRequest", "userIds" ] }, "model.ValidUserIDResponseV4": { "properties": { "exists": { "description": "indicate if user is exist or not", "example": "true", "type": "boolean", "x-omitempty": false }, "userId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "exists", "userId" ] }, "model.ValidationDetail": { "properties": { "allowAllSpecialCharacters": { "type": "boolean", "x-omitempty": false }, "allowDigit": { "type": "boolean", "x-omitempty": false }, "allowLetter": { "type": "boolean", "x-omitempty": false }, "allowSpace": { "type": "boolean", "x-omitempty": false }, "allowUnicode": { "type": "boolean", "x-omitempty": false }, "avatarConfig": { "$ref": "#/definitions/accountcommon.AvatarConfig", "description": "if this config has valid value, will prefer to use and ignore other validation" }, "blockedWord": { "items": { "type": "string" }, "type": "array" }, "description": { "items": { "$ref": "#/definitions/accountcommon.InputValidationDescription" }, "type": "array" }, "isCustomRegex": { "type": "boolean", "x-omitempty": false }, "letterCase": { "type": "string" }, "maxLength": { "format": "int32", "type": "integer" }, "maxRepeatingAlphaNum": { "format": "int32", "type": "integer" }, "maxRepeatingSpecialCharacter": { "format": "int32", "type": "integer" }, "minCharType": { "format": "int32", "type": "integer" }, "minLength": { "format": "int32", "type": "integer" }, "profanityFilter": { "type": "string" }, "regex": { "type": "string" }, "specialCharacterLocation": { "type": "string" }, "specialCharacters": { "items": { "type": "string" }, "type": "array" } }, "required": [ "allowAllSpecialCharacters", "allowDigit", "allowLetter", "allowSpace", "allowUnicode", "blockedWord", "description", "isCustomRegex", "letterCase", "maxLength", "maxRepeatingAlphaNum", "maxRepeatingSpecialCharacter", "minCharType", "minLength", "regex", "specialCharacterLocation", "specialCharacters" ] }, "model.ValidationDetailPublic": { "properties": { "allowAllSpecialCharacters": { "type": "boolean", "x-omitempty": false }, "allowDigit": { "type": "boolean", "x-omitempty": false }, "allowLetter": { "type": "boolean", "x-omitempty": false }, "allowSpace": { "type": "boolean", "x-omitempty": false }, "allowUnicode": { "type": "boolean", "x-omitempty": false }, "avatarConfig": { "$ref": "#/definitions/accountcommon.AvatarConfig", "description": "if this config has valid value, will prefer to use and ignore other validation" }, "blockedWord": { "items": { "type": "string" }, "type": "array" }, "description": { "$ref": "#/definitions/accountcommon.InputValidationDescription" }, "isCustomRegex": { "type": "boolean", "x-omitempty": false }, "letterCase": { "type": "string" }, "maxLength": { "format": "int32", "type": "integer" }, "maxRepeatingAlphaNum": { "format": "int32", "type": "integer" }, "maxRepeatingSpecialCharacter": { "format": "int32", "type": "integer" }, "minCharType": { "format": "int32", "type": "integer" }, "minLength": { "format": "int32", "type": "integer" }, "profanityFilter": { "type": "string" }, "regex": { "type": "string" }, "specialCharacterLocation": { "type": "string" }, "specialCharacters": { "items": { "type": "string" }, "type": "array" } }, "required": [ "allowAllSpecialCharacters", "allowDigit", "allowLetter", "allowSpace", "allowUnicode", "blockedWord", "description", "isCustomRegex", "letterCase", "maxLength", "maxRepeatingAlphaNum", "maxRepeatingSpecialCharacter", "minCharType", "minLength", "regex", "specialCharacterLocation", "specialCharacters" ] }, "model.VerificationCodeResponse": { "properties": { "accountRegistration": { "type": "string" }, "accountUpgrade": { "type": "string" }, "passwordReset": { "type": "string" }, "updateEmail": { "type": "string" } }, "required": [ "accountRegistration", "accountUpgrade", "passwordReset", "updateEmail" ] }, "model.VerifyRegistrationCode": { "properties": { "code": { "example": "123456", "type": "string" }, "emailAddress": { "example": "user@example.com", "type": "string" } }, "required": [ "code", "emailAddress" ] }, "model.WebLinkingResponse": { "properties": { "state": { "example": "xK2pL7mN3qAbCd8e", "type": "string" }, "third_party_url": { "example": "https://platform.example.com/auth", "type": "string" } }, "required": [ "state", "third_party_url" ] }, "model.WebReauthProcessResponse": { "properties": { "linkResponse": { "$ref": "#/definitions/model.LinkRequestResponse", "description": "Populated only for operation=LINK. Contains platform linking details." }, "operation": { "description": "Operation type for this re-auth request. Enum: LINK, GDPR", "type": "string" }, "status": { "description": "Enum: SUCCESS, PENDING, FAILED", "type": "string" } }, "required": [ "operation", "status" ] }, "model.userUnbanCreateRequestV3": { "properties": { "banId": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "banId", "userId" ] }, "oauthapi.RevocationList": { "properties": { "revoked_tokens": { "$ref": "#/definitions/bloom.FilterJSON" }, "revoked_users": { "items": { "$ref": "#/definitions/oauthcommon.UserRevocationListRecord" }, "type": "array" } }, "required": [ "revoked_tokens", "revoked_users" ] }, "oauthcommon.ASMetadataResponse": { "properties": { "authorization_endpoint": { "type": "string" }, "code_challenge_methods_supported": { "items": { "type": "string" }, "type": "array" }, "grant_types_supported": { "items": { "type": "string" }, "type": "array" }, "issuer": { "type": "string" }, "jwks_uri": { "type": "string" }, "registration_endpoint": { "type": "string" }, "response_types_supported": { "items": { "type": "string" }, "type": "array" }, "scopes_supported": { "items": { "type": "string" }, "type": "array" }, "token_endpoint": { "type": "string" }, "token_endpoint_auth_methods_supported": { "items": { "type": "string" }, "type": "array" } }, "required": [ "authorization_endpoint", "code_challenge_methods_supported", "grant_types_supported", "issuer", "jwks_uri", "registration_endpoint", "response_types_supported", "scopes_supported", "token_endpoint", "token_endpoint_auth_methods_supported" ] }, "oauthcommon.JWKKey": { "properties": { "alg": { "type": "string" }, "e": { "type": "string" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "n": { "type": "string" }, "use": { "type": "string" } }, "required": [ "kty" ] }, "oauthcommon.JWKSet": { "properties": { "keys": { "items": { "$ref": "#/definitions/oauthcommon.JWKKey" }, "type": "array" } }, "required": [ "keys" ] }, "oauthcommon.UserRevocationListRecord": { "properties": { "id": { "type": "string" }, "revoked_at": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "id", "revoked_at" ] }, "oauthmodel.ClientRegisterResponse": { "properties": { "client_id": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "client_id_issued_at": { "example": "1711929600", "format": "int64", "type": "integer" }, "client_name": { "example": "My Game Client", "type": "string" }, "client_uri": { "example": "https://mygame.example.com", "type": "string" }, "grant_types": { "items": { "type": "string" }, "type": "array" }, "namespace": { "example": "mygame", "type": "string" }, "redirect_uris": { "items": { "type": "string" }, "type": "array" }, "response_types": { "items": { "type": "string" }, "type": "array" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "token_endpoint_auth_method": { "type": "string" } }, "required": [ "client_id", "client_id_issued_at", "client_name", "namespace", "redirect_uris" ] }, "oauthmodel.ClientRegistrationRequest": { "properties": { "client_name": { "type": "string" }, "client_uri": { "type": "string" }, "grant_types": { "description": "valid: authorization_code, refresh_token, default is:['authorization_code', 'refresh_token']", "items": { "type": "string" }, "type": "array" }, "redirect_uris": { "items": { "type": "string" }, "type": "array" }, "response_types": { "description": "valid: code, default is 'code'", "items": { "type": "string" }, "type": "array" }, "scopes": { "description": "valid value: [openid|email|account|commerce|social|publishing|analytics]", "items": { "type": "string" }, "type": "array" }, "token_endpoint_auth_method": { "description": "Currently, it only supports 'none', which is the default value. Any other valid values will always be substituted with 'none'.", "type": "string" } }, "required": [ "client_name", "redirect_uris" ] }, "oauthmodel.CountryLocationResponse": { "properties": { "city": { "example": "Los Angeles", "type": "string" }, "countryCode": { "example": "US", "type": "string" }, "countryName": { "example": "United States", "type": "string" }, "state": { "example": "California", "type": "string" } }, "required": [ "city", "countryCode", "countryName", "state" ] }, "oauthmodel.ErrorResponse": { "properties": { "clientId": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "default_factor": { "example": "authenticator", "type": "string" }, "email": { "example": "user@example.com", "type": "string" }, "error": { "example": "invalid_grant", "type": "string" }, "error_description": { "example": "The provided authorization grant is invalid", "type": "string" }, "error_uri": { "type": "string" }, "factors": { "items": { "type": "string" }, "type": "array" }, "linkingToken": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "login_queue_ticket": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" }, "messageVariables": { "additionalProperties": { "type": "string" }, "type": "object" }, "mfa_token": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "platformId": { "example": "steam", "type": "string" }, "remainingBackupCodeCount": { "format": "int32", "type": "integer" }, "userBan": { "$ref": "#/definitions/oauthmodel.UserBan" } }, "required": [ "error" ] }, "oauthmodel.LoginQueueTicketResponse": { "properties": { "cancel": { "$ref": "#/definitions/oauthmodel.TicketEndpointAction" }, "estimatedWaitingTimeInSeconds": { "example": "120", "format": "int32", "type": "integer" }, "playerPollingTimeInSeconds": { "example": "5", "format": "int32", "type": "integer" }, "position": { "example": "42", "format": "int32", "type": "integer" }, "reconnectExpiredAt": { "example": "1711933200", "format": "int64", "type": "integer" }, "refresh": { "$ref": "#/definitions/oauthmodel.TicketEndpointAction" }, "ticket": { "example": "queue_ticket_abc123", "type": "string" } }, "required": [ "cancel", "estimatedWaitingTimeInSeconds", "playerPollingTimeInSeconds", "position", "reconnectExpiredAt", "refresh", "ticket" ] }, "oauthmodel.OneTimeLinkingCodeResponse": { "properties": { "exp": { "description": "code will be expired in seconds", "example": "300", "format": "int64", "type": "integer" }, "oneTimeLinkCode": { "example": "ABCD1234", "type": "string" }, "oneTimeLinkUrl": { "example": "https://example.com/link", "type": "string" } }, "required": [ "exp", "oneTimeLinkCode", "oneTimeLinkUrl" ] }, "oauthmodel.OneTimeLinkingCodeValidationResponse": { "properties": { "expired": { "example": "false", "type": "boolean", "x-omitempty": false }, "platformId": { "example": "steam", "type": "string" }, "valid": { "example": "true", "type": "boolean", "x-omitempty": false } }, "required": [ "expired", "valid" ] }, "oauthmodel.PlatformTokenRefreshResponseV3": { "properties": { "avatarUrl": { "example": "https://example.com/avatar.png", "type": "string" }, "country": { "example": "US", "type": "string" }, "displayName": { "example": "John Doe", "type": "string" }, "platformTokenExpiresAt": { "example": "1711933200", "format": "int64", "type": "integer" }, "platformUserId": { "example": "platformUser123", "type": "string" } } }, "oauthmodel.TargetTokenCodeResponse": { "properties": { "code": { "example": "auth_code_12345", "type": "string" } }, "required": [ "code" ] }, "oauthmodel.TicketEndpointAction": { "properties": { "action": { "example": "POST", "type": "string" }, "href": { "example": "https://example.com/queue/refresh", "type": "string" } }, "required": [ "action", "href" ] }, "oauthmodel.TokenIntrospectResponse": { "properties": { "active": { "example": "true", "type": "boolean", "x-omitempty": false }, "aud": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "client_id": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "exp": { "example": "1711933200", "format": "int64", "type": "integer" }, "iat": { "example": "1711929600", "format": "int64", "type": "integer" }, "scope": { "example": "openid account", "type": "string" }, "sub": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "active" ] }, "oauthmodel.TokenResponse": { "properties": { "access_token": { "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "type": "string" }, "bans": { "items": { "$ref": "#/definitions/accountcommon.JWTBanV3" }, "type": "array" }, "device_id": { "description": "will get from xbox dpi if it exists", "example": "device123abc", "type": "string" }, "display_name": { "example": "John Doe", "type": "string" }, "expires_in": { "example": "3600", "format": "int32", "type": "integer" }, "is_comply": { "type": "boolean", "x-omitempty": false }, "jflgs": { "format": "int32", "type": "integer" }, "namespace": { "example": "mygame", "type": "string" }, "namespace_roles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "platform_id": { "example": "steam", "type": "string" }, "platform_user_id": { "example": "platformUser123", "type": "string" }, "refresh_expires_in": { "description": "present if it is user token", "example": "86400", "format": "int32", "type": "integer" }, "refresh_token": { "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "token_type": { "example": "Bearer", "type": "string" }, "user_id": { "example": "abcdef1234564e12a1234567abcdef12", "type": "string" } }, "required": [ "access_token", "bans", "display_name", "expires_in", "namespace", "namespace_roles", "permissions", "refresh_token", "roles", "token_type", "user_id" ] }, "oauthmodel.TokenResponseV3": { "properties": { "access_token": { "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "type": "string" }, "bans": { "description": "present if it is user token", "items": { "$ref": "#/definitions/accountcommon.JWTBanV3" }, "type": "array" }, "display_name": { "example": "John Doe", "type": "string" }, "expires_in": { "example": "3600", "format": "int32", "type": "integer" }, "is_comply": { "example": "true", "type": "boolean", "x-omitempty": false }, "jflgs": { "format": "int32", "type": "integer" }, "namespace": { "example": "mygame", "type": "string" }, "namespace_roles": { "description": "present if it is user token", "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "platform_id": { "example": "steam", "type": "string" }, "platform_user_id": { "example": "platformUser123", "type": "string" }, "refresh_expires_in": { "description": "present if it is user token", "example": "86400", "format": "int32", "type": "integer" }, "refresh_token": { "description": "present if it is user token", "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "type": "string" }, "roles": { "description": "roles is deprecated, only NamespaceRoles would work", "items": { "type": "string" }, "type": "array" }, "scope": { "example": "openid account commerce", "type": "string" }, "simultaneous_platform_id": { "example": "psn", "type": "string" }, "simultaneous_platform_user_id": { "example": "psnUser456", "type": "string" }, "token_type": { "example": "Bearer", "type": "string" }, "unique_display_name": { "example": "JohnDoe#1234", "type": "string" }, "user_id": { "description": "present if it is user token", "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "xuid": { "example": "2535428965412345", "type": "string" } }, "required": [ "access_token", "expires_in", "namespace", "permissions", "scope", "token_type" ] }, "oauthmodel.TokenThirdPartyResponse": { "properties": { "platformUserId": { "example": "platformUser123", "type": "string" }, "platform_token": { "example": "platform_access_token_xyz", "type": "string" }, "platform_token_expires_at": { "example": "1711933200", "format": "int64", "type": "integer" }, "sand_box_id": { "example": "XDKS.1", "type": "string" } }, "required": [ "platform_token" ] }, "oauthmodel.TokenWithDeviceCookieResponseV3": { "properties": { "access_token": { "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "type": "string" }, "auth_trust_id": { "description": "Authentication Trust Id for device cookie validation. Only exist when login using grant_type=password and no existing Auth-Trust-Id given from request header", "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "bans": { "description": "present if it is user token", "items": { "$ref": "#/definitions/accountcommon.JWTBanV3" }, "type": "array" }, "display_name": { "example": "John Doe", "type": "string" }, "expires_in": { "example": "3600", "format": "int32", "type": "integer" }, "is_comply": { "example": "true", "type": "boolean", "x-omitempty": false }, "jflgs": { "format": "int32", "type": "integer" }, "namespace": { "example": "mygame", "type": "string" }, "namespace_roles": { "description": "present if it is user token", "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "platform_id": { "example": "steam", "type": "string" }, "platform_user_id": { "example": "platformUser123", "type": "string" }, "refresh_expires_in": { "description": "present if it is user token", "example": "86400", "format": "int32", "type": "integer" }, "refresh_token": { "description": "present if it is user token", "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "type": "string" }, "roles": { "description": "roles is deprecated, only NamespaceRoles would work", "items": { "type": "string" }, "type": "array" }, "scope": { "example": "openid account commerce", "type": "string" }, "simultaneous_platform_id": { "example": "psn", "type": "string" }, "simultaneous_platform_user_id": { "example": "psnUser456", "type": "string" }, "token_type": { "example": "Bearer", "type": "string" }, "unique_display_name": { "example": "JohnDoe#1234", "type": "string" }, "user_id": { "description": "present if it is user token", "example": "abcdef1234564e12a1234567abcdef12", "type": "string" }, "xuid": { "example": "2535428965412345", "type": "string" } }, "required": [ "access_token", "expires_in", "namespace", "permissions", "scope", "token_type" ] }, "oauthmodel.UserBan": { "properties": { "comment": { "example": "Detected automated play", "type": "string" }, "endDate": { "example": "1798761599", "format": "int64", "type": "integer" }, "reason": { "example": "Cheating", "type": "string" } }, "required": [ "comment", "endDate", "reason" ] }, "platform.DLCAggResponse": { "properties": { "totalCount": { "format": "int32", "type": "integer" } }, "required": [ "totalCount" ] }, "platform.WalletAggResponse": { "properties": { "balance": { "format": "int64", "type": "integer" }, "currencyCode": { "type": "string" }, "currencySymbol": { "type": "string" } }, "required": [ "balance", "currencyCode", "currencySymbol" ] }, "rest.ErrorResponse": { "properties": { "errorCode": { "format": "int32", "type": "integer" }, "errorMessage": { "type": "string" }, "messageVariables": { "additionalProperties": { "type": "string" }, "type": "object" }, "requiredPermission": { "$ref": "#/definitions/rest.Permission" } }, "required": [ "errorCode", "errorMessage" ] }, "rest.ErrorResponseWithConflictedUserPlatformAccounts": { "properties": { "errorCode": { "format": "int32", "type": "integer" }, "errorMessage": { "type": "string" }, "messageVariables": { "$ref": "#/definitions/accountcommon.ConflictedUserPlatformAccounts" }, "previousLinkedPlatformAccount": { "$ref": "#/definitions/accountcommon.PlatformLinkingHistory", "description": "User link a platform's different account is not allowed. This field contains the previous linked account details. Will have value only when in this case. (errorCode is 10200)" } }, "required": [ "errorCode", "errorMessage" ] }, "rest.Permission": { "properties": { "action": { "format": "int32", "type": "integer" }, "resource": { "type": "string" } }, "required": [ "action", "resource" ] } }, "x-docs": { "alias": "iam", "host": "https://stage.accelbyte.io", "path": "/iam/apidocs/api.json" }, "x-version": { "buildDate": "2026-07-03T03:59:28+00:00", "gitHash": "64831c48c3dbacbd7125858d31c3d7a16c02c025", "name": "justice-iam-service", "realm": "staging", "version": "7.40.1", "version-roles-seeding": "1.2.132" } }