{ "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.36.0" }, "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/bans": { "get": { "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:BAN [READ]", "BAN:ADMIN [READ]" ] } ] } }, "/iam/bans/reasons": { "get": { "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:BAN [READ]", "BAN:ADMIN [READ]" ] } ] } }, "/iam/clients": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients [POST]_**", "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-security": [ { "userPermissions": [ "CLIENT:ADMIN [CREATE]" ] } ] } }, "/iam/clients/{clientId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT:ADMIN [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/clients/{clientId}/clientpermissions": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/clients/{clientId}/clientpermissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] }, "post": { "consumes": [ "*/*" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/clients/{clientId}/secret": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "CLIENT:ADMIN [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/clients": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/clients [GET]_**", "operationId": "GetClientsbyNamespace", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:CLIENT [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\n**Endpoint migration guide**\n- **Substitute endpoint: _/v3/admin/namespaces/{namespace}/clients [POST]_**", "operationId": "CreateClientByNamespace", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientCreateRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [CREATE]" ] } ] } }, "/iam/namespaces/{namespace}/clients/{clientId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT:{clientId} [DELETE]" ] } ] } }, "/iam/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [CREATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/admin": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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 \nThis endpoint search admin users which have the roleId\n\nNotes : this endpoint only accept 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/byLoginId": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users [GET]_**", "operationId": "GetUserByLoginID", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/byPlatformUserID": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/forgotPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/namespaces/{namespace}/users/listByLoginIds": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/resetPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/namespaces/{namespace}/users/search": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:* [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/information [DELETE]_**", "operationId": "DeleteUser", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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\nThis Endpoint support update 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/ban": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [CREATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/bans": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans [GET]_**", "operationId": "GetUserBanHistory", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/bans/{banId}/disable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "## The endpoint is going to be 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**\nThe endpoint allows:\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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/bans/{banId}/enable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-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": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/disable": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/enable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/status [PATCH]_**", "operationId": "EnableUser", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/information": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/information [DELETE]_**", "operationId": "DeleteUserInformation", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:INFORMATION:USER:{userId} [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/information [GET]_**", "operationId": "GetUserInformation", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:INFORMATION:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/logins/histories": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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 for this endpoint:\n- This endpoint retrieve 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- This endpoint retrieve the next page of the data if we provide \u0026#39;after\u0026#39; parameters with valid Unix timestamp.\n- This endpoint retrieve the previous page of the data if we provide \u0026#39;before\u0026#39; parameter with valid data Unix timestamp.", "operationId": "GetUserLoginHistories", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:HISTORY:LOGIN:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": " ## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:PASSWORD:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/permissions": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions [POST]_**\n\nThis endpoint will REPLACE 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/permissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions/{resource}/{action} [DELETE]_**", "operationId": "DeleteUserPermission", "parameters": [ { "description": "Action (1..15)", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [DELETE]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions [POST]_**\n\nThis endpoint will update existing permission (bitwise OR the action) if found one with same resource, otherwise it will append 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 (1..15)", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/platforms": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace}": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace} [GET]_**\n\nThis endpoint requires the client access token as the bearer token\nThis endpoint will support publisher access to game and game access to publisher\nIf targetNamespace filled with publisher namespace then this endpoint will return its publisher user id and publisher namespace.\nIf targetNamespace filled with game namespace then this endpoint will return its game user id and game namespace. **Will create game user id if not exists.**", "operationId": "GetUserMapping", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Target namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:JUSTICE:USER:{userId} [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace} [GET]_**\n\nThis endpoint requires the client access token as the bearer token\n\nThe endpoint returns user Justice platform account linked with the given user. If the user Justice platform account doesn\u0026#39;t exist in the designated namespace, the endpoint is going to *create and return 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": "Namespace, only accept alphabet and numeric", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "The namespace where the user Justice platform account lives", "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-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": "## The endpoint is going to be 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 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.", "operationId": "PlatformLink", "parameters": [ { "description": "Ticket from platform", "in": "formData", "name": "ticket", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/publisher": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:PUBLISHER:USER:{userId} [READ]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/roles": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-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": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles/{roleId} [DELETE]_**", "operationId": "DeleteUserRole", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [DELETE]" ] } ] }, "post": { "consumes": [ "application/json", "text/plain" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles/{roleId} [POST]_**", "operationId": "AddUserRole", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/upgradeHeadlessAccount": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/upgradeHeadlessAccountWithVerificationCode": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n### Endpoint migration guide\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/me/headless/code/verify [POST]_**\n\nThe endpoint upgrades a headless account by linking the headless account with the email address and the password. By upgrading the headless account into a full account, the user could use the email address and password for using Justice IAM.\nThe endpoint is a shortcut for upgrading a headless account and verifying the email address in one call. In order to get a verification code for the endpoint, please check the send verification code endpoint.", "operationId": "UpgradeHeadlessAccountWithVerificationCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountWithVerificationCodeRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/verification": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/namespaces/{namespace}/users/{userId}/verificationcode": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/oauth/authorize": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nThe endpoint supports two response types:\n### 1. Response Type == \u0026#34;code\u0026#34;:\nThe endpoint returns 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. The endpoint validates user’s entitlement on the designated namespace for making sure the user is authorized for a designated namespace.\n\nFollowing are the responses returned by the endpoint:\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": "User Name", "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" } }, "/iam/oauth/jwks": { "get": { "consumes": [ "" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nThis endpoint serves 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 endpoint. 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": {} } }, "/iam/oauth/namespaces/{namespace}/platforms/{platformId}/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nThis endpoint requires 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": "PlatformTokenRequestHandler", "parameters": [ { "description": "Requested namespace for token grant", "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": {} } }, "/iam/oauth/namespaces/{namespace}/users/{userId}/revoke": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nThis endpoint requires all requests to have authorization header set with bearer token.\n\nThe endpoint revokes 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": "namespace", "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": "Revokes user's tokens'", "tags": [ "OAuth" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/oauth/revocationlist": { "get": { "consumes": [ "" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nThis endpoint will return a list of revoked users and revoked tokens. List of revoked tokens in bloom filter format. This endpoint 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": {} } }, "/iam/oauth/revoke/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nRevokes a token.\nThis endpoint requires 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": {} } }, "/iam/oauth/revoke/user": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nThis endpoint revokes a user. \nThis endpoint requires 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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId}:ADMIN [UPDATE]" ] } ] } }, "/iam/oauth/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "## The endpoint is going to be 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\nThis endpoint requires 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\nThis endpoint supports different **grant types**:\n\n1. Grant Type == \u0026lt;code\u0026gt;client_credentials\u0026lt;/code\u0026gt;:\n\tThis endpoint will check 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\nThis endpoint will track 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": "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 do token grant on other 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": "User Name (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": {} } }, "/iam/oauth/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "## The endpoint is going to be deprecated\nThis endpoint requires 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": {} } }, "/iam/roles": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [CREATE]", "ROLE:ADMIN [CREATE]" ] } ] } }, "/iam/roles/{roleId}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [DELETE]", "ROLE:ADMIN [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/admin": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/managers": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/members": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/permissions": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \nThis endpoint will REPLACE 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/roles/{roleId}/permissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \nThis endpoint will update existing permission (bitwise OR the action) if found one with same resource, otherwise it will append 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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]", "ROLE:ADMIN [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/agerestrictions": { "get": { "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/countries/agerestrictions": { "get": { "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/agerestrictions/countries [GET]_**", "operationId": "GetListCountryAgeRestriction", "parameters": [ { "description": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/countries/{countryCode}": { "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users": { "get": { "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/search [GET]_**", "operationId": "AdminSearchUsersV2", "parameters": [ { "description": "Namespace", "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 retieved 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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}": { "get": { "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId} [GET]_**", "operationId": "AdminGetUserByUserIdV2", "parameters": [ { "description": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId} [PATCH]_**\t\t\n\t\t\nThis Endpoint support update 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/ban": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [CREATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/bans": { "get": { "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans [GET]_**", "operationId": "AdminGetUserBanV2", "parameters": [ { "description": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [READ]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/disable": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/enable": { "put": { "consumes": [ "*/*" ], "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/admin/namespaces/{namespace}/users/{userId}/status [PATCH]_**", "operationId": "AdminEnableUserV2", "parameters": [ { "description": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-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": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] } }, "/iam/v2/admin/namespaces/{namespace}/users/{userId}/roles": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v2/public/namespaces/{namespace}/countries/{countryCode}/agerestrictions": { "get": { "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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" } } }, "/iam/v2/public/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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" } } }, "/iam/v2/public/namespaces/{namespace}/users/forgotPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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" } } }, "/iam/v2/public/namespaces/{namespace}/users/resetPassword": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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" } } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}": { "get": { "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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" } }, "patch": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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\nThis Endpoint support update 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": "Namespace", "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-security": {} } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/bans": { "get": { "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/bans [GET]_**", "operationId": "PublicGetUserBan", "parameters": [ { "description": "Namespace", "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" } } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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-security": {} } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/platforms/justice": { "get": { "deprecated": true, "description": "## The endpoint is going to be deprecated \n**Endpoint migration guide**\n- **Substitute endpoint: _/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms/justice [GET]_**\n\nThis endpoint gets list justice platform account by providing publisher namespace and publisher userID.", "operationId": "GetListJusticePlatformAccounts", "parameters": [ { "description": "Namespace", "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": {} } }, "/iam/v2/public/namespaces/{namespace}/users/{userId}/platforms/{platformId}/link": { "delete": { "consumes": [ "application/x-www-form-urlencoded", "text/plain" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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" } }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "deprecated": true, "description": "## The endpoint is going to be 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": "Namespace", "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" } } }, "/iam/v3/admin/bans": { "get": { "description": "Ban type is the code\navailable for ban assignment. It is applicable globally for any namespace.\naction code : 10201", "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-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.\naction code : 10202", "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-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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.PermissionSetDeleteGroupRequest" } }, { "description": "If target deleted group or module is selected by any client, by default it will failed. If this force flag is true, it will success", "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-security": [ { "userPermissions": [ "ADMIN:CLIENTCONFIG [DELETE]" ] } ] }, "get": { "description": "List Client available 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-security": {} }, "put": { "consumes": [ "application/json" ], "description": "Update Client available permissions, if module or group not exists, it will auto create.", "operationId": "AdminUpdateAvailablePermissionsByModule", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ListUpsertModulesRequest" } }, { "description": "If this update include some delete action and to be deleted group or module is selected by any client, by default it will failed. If this force flag is true, it will success", "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-security": [ { "userPermissions": [ "ADMIN:CLIENTCONFIG [UPDATE]" ] } ] } }, "/iam/v3/admin/clientConfig/templates": { "get": { "description": "List 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-security": {} } }, "/iam/v3/admin/inputValidations": { "get": { "consumes": [ "application/json" ], "description": "This endpoint is to get 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": "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-security": [ { "userPermissions": [ "ADMIN:CONFIGURATION [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This endpoint is used to update 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 non words 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 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 means 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 admin, any input from user which contain kind of blocked word(s) will be blocked for create/upgrade/update account\nIf \u0026lt;code\u0026gt;avatarConfig\u0026lt;/code\u0026gt; is set, will use this config and skip all the other validation conditions", "operationId": "AdminUpdateInputValidations", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:CONFIGURATION [UPDATE]" ] } ] } }, "/iam/v3/admin/inputValidations/{field}": { "delete": { "consumes": [ "application/json" ], "description": "This endpoint is used to reset input validation to the default input validation configurations", "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-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).\nEndpoint behavior :\n- if query parameter is defined, endpoint will search users whose email address and display name match with the query\n- if roleId parameter is defined, endpoint will search users that have the defined roleId\n- if startDate and endDate parameters is defined, endpoint will search users which created on the certain date range\n- if startDate parameter is defined, endpoint will search users that created start from the defined date\n- if endDate parameter is defined, endpoint will search 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\nThe endpoint will return all admin from all namespace when called from publisher namespace.\nWhen not called from publisher namespace, the endpoint will return all admin from the path namespace.", "operationId": "ListAdminsV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/agerestrictions": { "get": { "description": "action code: 10138", "operationId": "AdminGetAgeRestrictionStatusV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "action code: 10122", "operationId": "AdminUpdateAgeRestrictionConfigV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AgeRestrictionRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/agerestrictions/countries": { "get": { "description": "action code : 10139", "operationId": "AdminGetListCountryAgeRestrictionV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/agerestrictions/countries/{countryCode}": { "patch": { "consumes": [ "application/json" ], "description": "action code: 10123", "operationId": "AdminUpdateCountryAgeRestrictionV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CountryAgeRestrictionV3Request" } }, { "description": "Country Code ", "in": "path", "name": "countryCode", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:AGERESTRICTION [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/bans/users": { "get": { "description": "Ban type is the code\navailable for ban assignment. It is applicable globally for any namespace.\naction code : 10201", "operationId": "AdminGetBannedUsersV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-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\naction code : 10141 ", "operationId": "AdminBanUserBulkV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BulkBanCreateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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\naction code : 10142 ", "operationId": "AdminUnbanUserBulkV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BulkUnbanCreateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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.\naction code : 10201", "operationId": "AdminGetBansTypeWithNamespaceV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:BAN [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/clients": { "get": { "description": "action code: 10308", "operationId": "AdminGetClientsByNamespaceV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Add a new OAuth 2.0 client\nA new client automatically granted with these scopes: commerce, account, analytics, publishing, social.\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.\n\naction code: 10301\n\n**Fields Description:**\n- **clientId** : The client ID. e.g f815e5c44f364993961be3b3f26a7bf4\n- **clientName** : The client name. e.g E-commerce\n- **secret** : The client\u0026#39;s secret. It\u0026#39;s empty if the client\u0026#39;s type is a public client. Otherwise, the client secret is required\n- **namespace** : The namespace where the client lives. e.g sample-game\n- **redirectUri** : Contains the redirect URI used in OAuth callback. e.g https://example.net/platform\n- **oauthClientType** : The OAuth 2.0 client type. The client type determines whether the authorization needs Proof Of Key Exchange or not. \n\tA public client type doesn\u0026#39;t have a client secret and should use PKCE flow. \n\tA confidential client type has a client secret and don\u0026#39;t use PKCE flow\n\tSupported oAuthClientType :\n\t- **Public**\n\t- **Confidential**\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 for making sure the token is intended to be used by the client. 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). default value: 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\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**, default value: SECONDS\n- **oauthRefreshTokenExpirationTimeUnit**: a configurable expiration time unit for **refresh_token**, default value: SECONDS", "operationId": "AdminCreateClientV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientCreationV3Request" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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 admin can set permission with resource \u0026amp; action.\nStudio admin \u0026amp; game admin need set permission with permission module.\n\naction code: 10302\n\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", "operationId": "AdminBulkUpdateClientsV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.ClientsUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/clients/{clientId}": { "delete": { "description": "action code : 10310", "operationId": "AdminDeleteClientV3", "parameters": [ { "description": "Client ID, should follow UUID version 4 without hyphen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [DELETE]" ] } ] }, "get": { "description": "action code: 10309", "operationId": "AdminGetClientsbyNamespacebyIDV3", "parameters": [ { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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 clients by namespace and client id. Multi tenant mode allows admin portal client to be accessible regardless of namespace path.", "tags": [ "Clients" ], "x-errorCodes": { "10365": "client not found", "20001": "unauthorized access", "20002": "validation error", "20013": "insufficient permissions" }, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Updates an OAuth 2.0 client.\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 admin can set permission with resource \u0026amp; action.\nStudio admin \u0026amp; game admin need set permission with permission module.\n\naction code: 10302\n\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", "operationId": "AdminUpdateClientV3", "parameters": [ { "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": "Namespace, only accept alphabet and numeric", "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-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:**\nThis is for super admin only.\naction code: 10303\n", "operationId": "AdminAddClientPermissionsV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.ClientPermissionsV3" } }, { "description": "Client ID, should follow UUID version 4 without hypen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "**Note for Multi Tenant Mode:**\nThis is for super admin only.\naction code: 10307\n", "operationId": "AdminUpdateClientPermissionV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.ClientPermissionsV3" } }, { "description": "Client ID, should follow UUID version 4 without hypen", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/clients/{clientId}/permissions/{resource}/{action}": { "delete": { "description": "**Note for Multi Tenant Mode:**\nThis is for super admin only.\naction code : 10304", "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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENT [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/config/{configKey}": { "get": { "description": "This endpoint return the value of 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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/admin/namespaces/{namespace}/countries": { "get": { "description": "Admin get country list", "operationId": "AdminGetCountryListV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": true, "description": "filter black list", "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" } } }, "/iam/v3/admin/namespaces/{namespace}/countries/blacklist": { "get": { "description": "Admin get country blacklist", "operationId": "AdminGetCountryBlacklistV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MISC [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Admin update country blacklist", "operationId": "AdminAddCountryBlacklistV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CountryBlacklistRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MISC [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/loginAllowlist": { "get": { "description": "This endpoint return login allowlist configuration from specific namespace.", "operationId": "AdminGetLoginAllowlistV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:LOGINALLOWLIST [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This endpoint update login allowlist configuration from specific game namespace.\nroleIds: are list of role that allowed to login\nNote: only accept game namespace\n", "operationId": "AdminUpdateLoginAllowlistV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LoginAllowlistRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:LOGINALLOWLIST [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/all/clients": { "get": { "description": "This is the API to Get All Active 3rd Platform Credential.", "operationId": "RetrieveAllThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:*:CLIENT [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/all/clients/active": { "get": { "description": "This is the API to Get All Active 3rd Platform Credential.", "operationId": "RetrieveAllActiveThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:*:CLIENT [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/sso": { "get": { "description": "This is the API to Get All Active SSO Platform Credential.", "operationId": "RetrieveAllSSOLoginPlatformCredentialV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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 Credential", "tags": [ "SSO Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:*:SSO [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/clients": { "delete": { "description": "This is the API to Delete 3rd Platform Credential.", "operationId": "DeleteThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:CLIENT [DELETE]" ] } ] }, "get": { "description": "This is the API to Get 3rd Platform Credential.", "operationId": "RetrieveThirdPartyLoginPlatformCredentialV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:CLIENT [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "This is the API to Add 3rd Platform Credential.\n- The secret for **apple** is base64 encoded private key.\n- No secret for **awscognito**, we only need to configure AWS Cognito Region and User Pool\n- The secret for **discord** is client secret of the twitch client id.\n- The secret for **epicgames** is client secret of the epicgames client id.\n- The secret for **facebook** is client secret of the facebook client id.\n- The secret for **google** is client secret of the google OAuth client.\n- No secret for **nintendo**, we only need to configure app id of the game\n- No secret for **netflix**, we configure the Root, Public, Private Key certificate pem file and target environment; value: [sandbox, production]\n- The secret for **oculus** is app secret of the oculus app.\n- The secret for **ps4, ps5, and ps4web** is client secret of the psn web server.\n- The secret for **steam** is the Steam Web API Key.\n- The secret for **steamopenid** is the Steam Web API Key.\n- The secret for **twitch** is client secret of the twitch client.\n- The secret for **live** is the Relying Party Private Key in base64 encode PEM format.\n- The secret for **xblwebapi** is client secret of the xbl client.\n\nIf generic oauth flow is set to true:\n- Current supported value for TokenAuthenticationType is **code, idToken and bearerToken**\n- \u0026lt;code\u0026gt;TokenClaimsMapping\u0026lt;/code\u0026gt; is used to extract user info from idToken claims or user info endpoint response accessed using bearerToken. \nIts a JSON format with key should be \u0026lt;code\u0026gt;name\u0026lt;/code\u0026gt;, \u0026lt;code\u0026gt;email\u0026lt;/code\u0026gt; and \u0026lt;code\u0026gt;avatarUrl\u0026lt;/code\u0026gt; \nsince IAM will look up for these key when extracting user info.**default claims keys : userIdentity/sub, name, email and avatarUrl/picture**", "operationId": "UpdateThirdPartyLoginPlatformCredentialV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:CLIENT [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "This is the API to Add 3rd Platform Credential.\n- The secret for **apple** is base64 encoded private key.\n- No secret for **awscognito**, we only need to configure AWS Cognito Region and User Pool\n- The secret for **discord** is client secret of the twitch client id.\n- The secret for **epicgames** is client secret of the epicgames client id.\n- The secret for **facebook** is client secret of the facebook client id.\n- The secret for **google** is client secret of the google OAuth client.\n- No secret for **nintendo**, we only need to configure app id of the game\n- No secret for **netflix**, we configure the Root, Public, Private Key certificate pem file and target environment; value: [sandbox, production]\n- The secret for **oculus** is app secret of the oculus app.\n- The secret for **ps4, ps5, and ps4web** is client secret of the psn web server.\n- The secret for **steam** is the Steam Web API Key.\n- The secret for **steamopenid** is the Steam Web API Key.\n- The secret for **twitch** is client secret of the twitch client.\n- The secret for **live** is the Relying Party Private Key in base64 encode PEM format.\n- The secret for **xblwebapi** is client secret of the xbl client.\n\nIf generic oauth flow is set to true:\n- Current supported value for TokenAuthenticationType are **code, idToken and bearerToken**\n- \u0026lt;code\u0026gt;TokenClaimsMapping\u0026lt;/code\u0026gt; is used to extract user info from idToken claims or user info endpoint response accessed using bearerToken. \nIts a JSON format with key should be \u0026lt;code\u0026gt;name\u0026lt;/code\u0026gt;, \u0026lt;code\u0026gt;email\u0026lt;/code\u0026gt; and \u0026lt;code\u0026gt;avatarUrl\u0026lt;/code\u0026gt; \nsince IAM will look up for these key when extracting user info. **default claims keys : userIdentity/sub, name, email and avatarUrl/picture**", "operationId": "AddThirdPartyLoginPlatformCredentialV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ThirdPartyLoginPlatformCredentialRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformDomainDeleteRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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's domain", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "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.", "operationId": "PartialUpdateThirdPartyLoginPlatformDomainV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformDomainPatchRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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's domain", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformDomainUpdateRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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's domain", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:CLIENTDOMAIN [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/sso": { "delete": { "description": "This is the API to Delete SSO Platform Credential.", "operationId": "DeleteSSOLoginPlatformCredentialV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:SSO [DELETE]" ] } ] }, "get": { "description": "This is the API to Get SSO Platform Credential.", "operationId": "RetrieveSSOLoginPlatformCredential", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:SSO [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "This is the API to Delete SSO Platform Credential.", "operationId": "UpdateSSOPlatformCredential", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SSOPlatformCredentialRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PLATFORM:{platformId}:SSO [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "This is the API to Add SSO Platform Credential.\n## Supported platforms:\n- **discourse**\n\tthe ssoUrl of the discourse is the discourse forum url. example: https://forum.example.com\n- **azure with SAML**\n\t**appId** is an application identifier in IdP, in azure it\u0026#39;s called EntityID\n\t**acsUrl** is an endpoint on the service provider where the identity provider will redirect to with its authentication response. example: /iam/v3/sso/saml/azuresaml/authenticate \n\t**federationMetadataUrl** is an endpoint on the Identity Provider(IdP) to get IdP federation metadata for service provider to build trust relationship", "operationId": "AddSSOLoginPlatformCredential", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SSOPlatformCredentialRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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\nThis endpoint intended to list game user ID from the given namespace\nThis endpoint return list of user ID 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformUserIDRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}": { "get": { "description": "Get User By Platform User ID\nThis endpoint return 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": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PROFILESTRATEGY [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This API includes upsert behavior.\nNote: \n\t1. field \u0026#39;config\u0026#39;\u0026#39; in request body will only work when type is limited\n", "operationId": "AdminUpdateProfileUpdateStrategyV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdateProfileUpdateStrategyConfigRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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": "Get 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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:OVERRIDE [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "This API is for updating role override config.\nNote:\nThis API has upsert behavior, if there is no config yet, it will create a new one first.\n", "operationId": "AdminUpdateRoleOverrideConfigV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleOverrideUpdateRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RoleOverrideStatsUpdateRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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": "Change role override config active status", "tags": [ "Override Role Config v3" ], "x-errorCodes": { "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" }, "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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/roles/{roleId}/users": { "get": { "description": "This endpoint search admin users which have the roleId\n\nNotes : this endpoint only accept admin role. Admin Role is role which have admin status and members.\nUse endpoint [GET] /roles/{roleId}/admin to check the role status\naction code : 10140", "operationId": "GetAdminUsersByRoleIdV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/tags": { "get": { "description": "Retrieve Account Identifier Tags. This endpoint allows administrators to retrieve tags that are used to identify and categorize user accounts.\nTag Name can be used for partial content search.\n", "operationId": "AdminQueryTagV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Create a new Account Identifier Tag for users. This endpoint allows administrators to create tags that can be used to identify and categorize user accounts.", "operationId": "AdminCreateTagV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.TagCreateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/tags/{tagId}": { "delete": { "description": "Delete an Account Identifier Tag. This endpoint allows administrators to delete a tag that is used to identify and categorize user accounts.", "operationId": "AdminDeleteTagV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [DELETE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Update an existing Account Identifier Tag. This endpoint allows administrators to update the details of a tag that is used to identify and categorize user accounts.", "operationId": "AdminUpdateTagV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.TagUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ACCOUNT:TAGS [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users": { "get": { "description": "This endpoint search user who owns the given email address\naction code : 10132", "operationId": "AdminGetUserByEmailAddressV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This endpoint support to bulk update users based on given data.\n------\nSupported fields:\n* skipLoginQueue\n\n", "operationId": "AdminBulkUpdateUsersV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UsersUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/bans": { "post": { "consumes": [ "application/json" ], "description": "This endpoint returns user bans of userIDs specified in the payload\naction code : 10127", "operationId": "AdminGetBulkUserBanV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.GetBulkUserBansRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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\nThis endpoint intended to list user information from the given list of userID and namespace", "operationId": "AdminListUserIDByUserIDsV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AdminBulkUserRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/admin/namespaces/{namespace}/users/bulk/platforms": { "post": { "consumes": [ "application/json" ], "description": "Notes:\n- This endpoint bulk get users\u0026#39; basic 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserIDsRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CursorGetUserRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/invite": { "post": { "consumes": [ "application/json" ], "description": "Use this endpoint to invite admin or non-admin user and assign 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.InviteUserRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:INVITE [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/linkhistories": { "get": { "consumes": [ "application/json" ], "description": "if limit is not defined, The default limit is 100", "operationId": "AdminQueryThirdPlatformLinkHistoryV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/platforms/justice": { "get": { "description": "**This endpoint requires 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/search": { "get": { "consumes": [ "application/json" ], "description": "Endpoint behavior :\n- By default this endpoint searches all users on the specified namespace.\n- If query parameter is defined, endpoint will search 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, endpoint will search users which created on the certain date range.\n- If query, startDate and endDate parameters are defined, endpoint will search users whose email address and display name match and created on the certain date range.\n- If startDate parameter is defined, endpoint will search users that created start from the defined date.\n- If endDate parameter is defined, endpoint will search users that created until the defined date.\n- If platformId parameter is defined and by parameter is using thirdparty, endpoint will search users based on the platformId they have linked to.\n- If platformBy parameter is defined and by parameter is using thirdparty, endpoint will search 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\naction code : 10133", "operationId": "AdminSearchUserV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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": "Query, can be either email address or display name", "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" } }, "500": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\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", "20013": "insufficient permissions" }, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/search/bulk": { "post": { "consumes": [ "application/json" ], "description": "This endpoint search user by the list of email addresses\naction code : 10132", "operationId": "AdminGetBulkUserByEmailAddressV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ListEmailAddressRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}": { "get": { "consumes": [ "application/json" ], "description": "Admin Get User By User Id", "operationId": "AdminGetUserByUserIdV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "This Endpoint support update 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\naction code : 10103 ", "operationId": "AdminUpdateUserV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans": { "get": { "description": "This endpoint retrieve the first page of the data if after and before parameters is empty\naction code : 10126", "operationId": "AdminGetUserBanV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-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.\naction code : 10141", "operationId": "AdminBanUserV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BanCreateRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:BAN:USER:{userId} [CREATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/bans/summary": { "get": { "description": "This endpoint get user\u0026#39;s bans summary\u0026#39;", "operationId": "AdminGetUserBanSummaryV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-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.\naction code : 10142\u0026#39;", "operationId": "AdminUpdateUserBanV3", "parameters": [ { "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": "Namespace, only accept alphabet and numeric", "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-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\naction code: 10116", "operationId": "AdminSendVerificationCodeV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserVerificationRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/codes": { "get": { "description": "**[WARNING] This endpoint is only for testing purpose.**\n\nThis endpoint get active user verification code. \nThere are some scenarios of getting verification codes, all of them will be returned on this endpoint: \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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId}:CODE [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/deletion/status": { "get": { "description": "action code : 10145", "operationId": "AdminGetUserDeletionStatusV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DELETIONSTATUS:USER:{userId} [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "action code : 10144", "operationId": "AdminUpdateUserDeletionStatusV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdateUserDeletionStatusRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DELETIONSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/distinctPlatforms": { "get": { "description": "This endpoint 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": "Namespace, only accept alphabet and numeric", "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-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 \n \tThe endpoint upgrades a headless account by linking the headless account with the email address and the password.\n\tBy upgrading the headless account into a full account, the user could use the email address and password for using Justice IAM. \n \tThe endpoint is a shortcut for upgrading a headless account and verifying the email address in one call. \n\tIn order to get a verification code for the endpoint, please check the send verification code endpoint. \n \tThis endpoint also have an 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\n\t\naction code : 10124", "operationId": "AdminUpgradeHeadlessAccountV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountWithVerificationCodeRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/information": { "delete": { "description": "[WARNING] This endpoint is deleting user data from database directly by skipping GDPR flow", "operationId": "AdminDeleteUserInformationV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:INFORMATION:USER:{userId} [DELETE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/logins/histories": { "get": { "description": "Notes for this endpoint: \nThis endpoint retrieve 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- The maximum value of the limit is 100 and the minimum value of the limit is 1.\n- This endpoint retrieve the next page of the data if we provide \u0026lt;code\u0026gt;after\u0026lt;/code\u0026gt; parameters with valid Unix timestamp.\n- This endpoint retrieve the previous page of the data if we provide \u0026lt;code\u0026gt;before\u0026lt;/code\u0026gt; parameter with valid data Unix timestamp.\u0026#34;", "operationId": "AdminGetUserLoginHistoriesV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:HISTORY:LOGIN:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/password": { "put": { "consumes": [ "application/json" ], "description": "Update User Password", "operationId": "AdminResetPasswordV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserPasswordUpdateV3Request" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PASSWORD:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions": { "delete": { "consumes": [ "application/json" ], "description": "Delete User Permission", "operationId": "AdminDeleteUserPermissionBulkV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/model.PermissionDeleteRequest" }, "type": "array" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [DELETE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "This endpoint will APPEND 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.Permissions" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [CREATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This endpoint will REPLACE 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 * / , -\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": "AdminUpdateUserPermissionV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/accountcommon.Permissions" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:PERMISSION:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/permissions/{resource}/{action}": { "delete": { "description": "Delete User Permission", "operationId": "AdminDeleteUserPermissionV3", "parameters": [ { "description": "Action (1..15)", "in": "path", "name": "action", "required": true, "type": "integer" }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/distinct": { "get": { "description": "This endpoint only retrieves 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice": { "get": { "description": "This endpoint gets list justice platform account by providing publisher namespace and publisher userID", "operationId": "AdminGetListJusticePlatformAccounts", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/justice/{targetNamespace}": { "get": { "description": "This endpoint will support publisher access to game and game access to publisher\nIf targetNamespace filled with publisher namespace then this endpoint will return its publisher user id and publisher namespace.\nIf targetNamespace filled with game namespace then this endpoint will return its game user id and game namespace.", "operationId": "AdminGetUserMapping", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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. This endpoint 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LinkPlatformAccountRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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.\naction code : 10121 ", "operationId": "AdminPlatformUnlinkV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UnlinkUserPlatformRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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\nThis endpoint is used for checking 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms/{platformId}/metadata": { "get": { "description": "This endpoint 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles": { "delete": { "consumes": [ "application/json" ], "description": "Delete User Roles", "operationId": "AdminDeleteUserRolesV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "items": { "type": "string" }, "type": "array" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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 endpoint: [AdminAddUserRoleV4].", "operationId": "AdminSaveUserRoleV3", "parameters": [ { "description": "Array of Role ID to be assigned with allowed namespace", "in": "body", "name": "body", "required": true, "schema": { "items": { "$ref": "#/definitions/model.NamespaceRoleRequest" }, "type": "array" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/roles/{roleId}": { "delete": { "description": "This endpoint removes role from user\naction code: 10110", "operationId": "AdminDeleteUserRoleV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [DELETE]" ] } ] }, "post": { "description": "action code: 10109", "operationId": "AdminAddUserRoleV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/state": { "get": { "consumes": [ "application/json" ], "description": "Admin Get User State By User Id", "operationId": "AdminGetUserStateByUserIdV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/status": { "patch": { "consumes": [ "application/json" ], "description": "This endpoint disable or enable user account. Set the enable status on the request body to true to enable user account or set to false to disable it. \nDisable user for **Account Disable** purpose fill the reason with:\n- **AdminDeactivateAccount** : if your disable account request comes from admin\n\nEnable user ignore field \u0026#39;reason\u0026#39; in the request body. \naction code : 10143", "operationId": "AdminUpdateUserStatusV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpdateUserStatusRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USERSTATUS:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/trustly/identity": { "patch": { "consumes": [ "application/json" ], "description": "This endpoint ONLY accept **Client Token**\nThis endpoint is utilized 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\naction code : 10103 ", "operationId": "AdminTrustlyUpdateUserIdentity", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserIdentityUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:IDENTITY [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/users/{userId}/verify": { "put": { "description": "This endpoint force verify user\nNote:\n- namespace: only accept publisher/studio namespace\n- userId: only accept publisher/studio userId\naction code: 10118", "operationId": "AdminVerifyUserWithoutVerificationCodeV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/admin/namespaces/{namespace}/{clientId}/secret": { "put": { "consumes": [ "application/json" ], "description": "Update Client Secret", "operationId": "AdminUpdateClientSecretV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/clientmodel.V3ClientUpdateSecretRequest" } }, { "description": "Client ID", "in": "path", "name": "clientId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-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-security": [ { "userPermissions": [ "ADMIN:PLATFORM [READ]" ] } ] } }, "/iam/v3/admin/roles": { "get": { "description": "action code: 10414", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Create role request body:\n- roleName: specify role name, alphanumeric, cannot have special character (required)\n- permissions: specify the permission that this role have\n- managers: specify list of user that will act as the managers of this role\n- members: specify list of user that will act as the members of this role\n- adminRole: specify if role is for admin user (default false)\n- isWildcard: specify if role can be assigned to wildcard (*) namespace (default false)\n- deletable: specify if role can be deleted or not (default true)\n\naction code: 10401", "operationId": "AdminCreateRoleV3", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [CREATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}": { "delete": { "description": "action code: 10403", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [DELETE]" ] } ] }, "get": { "description": "action code: 10419", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Update role request body:\n- roleName: specify role name, alphanumeric, cannot have special character (required)\n- isWildcard: specify if role can be assigned to wildcard (*) namespace (default false)\n- deletable: specify if role can be deleted or not (optional)\n\naction code: 10402", "operationId": "AdminUpdateRoleV3", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/admin": { "delete": { "description": "code: 10413", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Admin roles has its members listed in the role.\naction code: 10420", "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-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.\naction code: 10412", "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-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.\naction code: 10409", "operationId": "AdminRemoveRoleManagersV3", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Role can only be assigned to other users by the role\u0026#39;s manager.\naction code: 10415", "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-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.\naction code: 10408", "operationId": "AdminAddRoleManagersV3", "parameters": [ { "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-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.\naction code: 10411\nDeprecate: Suggest to use this: AdminRevokeUserFromRoleV4", "operationId": "AdminRemoveRoleMembersV3", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Admin roles has its members listed in the role.\naction code: 10416", "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-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.\naction code: 10410", "operationId": "AdminAddRoleMembersV3", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/permissions": { "delete": { "consumes": [ "application/json" ], "operationId": "AdminDeleteRolePermissionsV3", "parameters": [ { "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", "tags": [ "Roles" ], "x-errorCodes": { "20001": "unauthorized access", "20013": "insufficient permissions" }, "x-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "This endpoint will ATTACH permission(s) into the role\naction code: 10404\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": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This endpoint will REPLACE role\u0026#39;s permissions with the ones defined in body\naction code: 10405\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": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/roles/{roleId}/permissions/{resource}/{action}": { "delete": { "consumes": [ "application/json" ], "description": "action code: 10406", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v3/admin/users/me": { "get": { "description": "Get my user data\naction code : 10147", "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-security": {} } }, "/iam/v3/authenticate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to authenticate a user account. \nIt 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).\nThis endpoint will read 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\nAction code: 10801", "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" } }, "/iam/v3/authenticateWithLink": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to authenticate a user account and perform platform link. \nIt validates user\u0026#39;s email / username and password. \nIf user already enable 2FA, then invoke _/mfa/verify_ using **mfa_token** from this endpoint 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).\nThis endpoint will read 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.", "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" } } }, "/iam/v3/authenticateWithLink/forward": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to authenticate a user account and perform platform link. \nIt validates user\u0026#39;s email / username and password. \nIf user already enable 2FA, then invoke _/mfa/verify_ using **mfa_token** from this endpoint 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).\nThis endpoint will read 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.", "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": {} } }, "/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" } } }, "/iam/v3/headless/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to create headless account after 3rd platform authenticated, and response token . \nThe \u0026#39;linkingToken\u0026#39; in request body is received from \u0026#34;/platforms/{platformId}/token\u0026#34; \nwhen 3rd platform account is not linked to justice account yet.", "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" } } }, "/iam/v3/link/code/request": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to request the one time code [8 length] for 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-security": {} } }, "/iam/v3/link/code/validate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to validate 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": {} } }, "/iam/v3/link/token/exchange": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to generate 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\u0026lt;/code\u0026gt; or \u0026lt;code\u0026gt;/iam/v3/public/users/me/link/forward\u0026lt;/code\u0026gt;.\n\nThis endpoint support creating transient token by utilizing **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": {} } }, "/iam/v3/location/country": { "get": { "consumes": [ "" ], "description": "This endpoint get 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": {} } }, "/iam/v3/logout": { "post": { "consumes": [ "*/*" ], "description": "This endpoint is used to remove **access_token**, **refresh_token** from cookie.", "operationId": "Logout", "produces": [ "application/json" ], "responses": { "204": { "description": "Logout successfully" } }, "security": [ { "authorization": [] } ], "summary": "Logout", "tags": [ "OAuth2.0 - Extension" ], "x-errorCodes": {}, "x-security": {} } }, "/iam/v3/namespace/{namespace}/token/request": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to request the code to exchange 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\u0026lt;/code\u0026gt;", "operationId": "RequestTokenExchangeCodeV3", "parameters": [ { "description": "Client ID for target namespace", "in": "formData", "name": "client_id", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-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\nThis endpoint used for retrieving third party platform token for user that login using third party,\nif user have not link requested platform in game namespace, will try to retrieving third party platform token from 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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v3/oauth/admin/namespaces/{namespace}/users/{userId}/revoke": { "post": { "consumes": [ "*/*" ], "description": "This endpoint revokes all access tokens and refresh tokens a user has prior the revocation time.\nThis endpoint requires authorized requests header with valid access token.\nIt 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.\naction code : 10707", "operationId": "RevokeUserV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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": "Revokes user's tokens'", "tags": [ "OAuth2.0" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v3/oauth/authorize": { "get": { "consumes": [ "application/json" ], "description": "Initializes OAuth2.0 authorization code flow\nThe endpoint stores authorization request and redirects to 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 supported by this endpoint, 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\naction code: 10701", "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" } }, "/iam/v3/oauth/introspect": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint returns information about an access token intended to be used by resource servers or other internal servers.\nThis endpoint requires authorized requests header with valid basic or bearer token.\naction code : 10705", "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": {} } }, "/iam/v3/oauth/jwks": { "get": { "consumes": [ "" ], "description": "This endpoint 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 endpoint. 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 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\nendpoint again.\nPlease refer to the RFC for more information about JWK (JSON Web Key): https://tools.ietf.org/html/rfc7517\naction code : 10709", "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": {} } }, "/iam/v3/oauth/mfa/code": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Send 2FA code\nThis endpoint is used for sending 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" } } }, "/iam/v3/oauth/mfa/factor/change": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Change 2FA method\nThis endpoint is used for change 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" } } }, "/iam/v3/oauth/mfa/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Verify 2FA code\nThis endpoint is used for verifying 2FA code.\n## 2FA remember device\nTo remember device for 2FA, 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": {} } }, "/iam/v3/oauth/mfa/verify/forward": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This 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\nVerify 2FA code\nThis endpoint is used for verifying 2FA code.\n## 2FA remember device\nTo remember device for 2FA, 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": {} } }, "/iam/v3/oauth/namespaces/{namespace}/users/{userId}/platforms/{platformId}/platformToken": { "get": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Retrieve User Third Party Platform Token\nThis endpoint used for retrieving third party platform token for user that login using third party,\nif user have not link requested platform in game namespace, will try to retrieving third party platform token from 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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/oauth/platforms/{platformId}/authorize": { "get": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Generate url to request auth code from third party platform\n## Supported platforms:\n- **steamopenid**This endpoint redirects to steam login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating user steam.\n- **xblweb**This endpoint redirects to xbox login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating xbox user.\n- **ps4web**This endpoint redirects to psn login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating psn user.\n- **epicgames**This endpoint redirects to Epicgames OAuth login page. then redirect to platform\n\tauthenticate endpoint after successfully authenticating an Epicgames credential\n- **twitch**This endpoint redirects to twitch login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating twitch user.\n- **azure**This endpoint redirects to azure login page, then redirect back to platform\n\tauthenticate(saml) endpoint after successfully authenticating azure user.\n- **facebook**This endpoint redirects to facebook login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating facebook user.\n- **google**This endpoint redirects to google login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating google user.\n- **snapchat**This endpoint redirects to snapchat login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating snapchat user.\n- **discord**This endpoint redirects to discord login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating discord user.\n- **amazon**This endpoint redirects to amazon login page, then redirect back to platform\n\tauthenticate endpoint after successfully authenticating amazon user.\n- **oculusweb**This endpoint redirects to oculus login page, then redirect back to Login Website page after successfully authenticating oculus user.\n\naction code : 10702\u0026#39;", "operationId": "AuthCodeRequestV3", "parameters": [ { "description": "Platform ID", "in": "path", "name": "platformId", "required": true, "type": "string" }, { "description": "Request ID retrieved from authorize endpoint ([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" } }, "/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, Justice, etc. The endpoint automatically create an account if the account associated with the platform is not exists yet.\nThis endpoint requires 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## 2FA remember device\nTo remember device for 2FA, should provide cookie: device_token or header: Device-Token\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 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 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**. 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\naction code : 10704", "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": {} } }, "/iam/v3/oauth/revocationlist": { "get": { "consumes": [ "" ], "description": "This endpoint will return a list of revoked users and revoked tokens. List of revoked tokens in bloom filter format.\nThis endpoint 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\naction code : 10708", "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" } } }, "/iam/v3/oauth/revoke": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint revokes a token.\nThis endpoint requires authorized requests header with Basic Authentication from client that establish the token.\naction code: 10706", "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": {} } }, "/iam/v3/oauth/simultaneousLogin": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "# This endpoint is in ALPHA, avoid using this endpoint fow 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" } } }, "/iam/v3/oauth/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint 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**. 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## 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;.\nThis endpoint will read device cookie from request header **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## Track Login History\nThis endpoint 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## 2FA remember device\nTo remember device for 2FA, should provide cookie: device_token or header: Device-Token\n## Response note\nIf it is a user token request and user hasn\u0026#39;t accepted required legal policy, the field \u0026lt;code\u0026gt;is_comply\u0026lt;/code\u0026gt; will be false in response and responsed token will have no permission.\t\naction code: 10703", "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 endpoint", "tags": [ "OAuth2.0" ], "x-errorCodes": {} } }, "/iam/v3/oauth/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint requires all requests to have Authorization header set with Basic access authentication constructed from client id and client secret.", "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": {} } }, "/iam/v3/platforms/{platformId}/authenticate": { "get": { "consumes": [ "*/*" ], "description": "This endpoint authenticates user platform. It validates user to its\nrespective platforms. Deactivated or login-banned users are unable to login.\nIf already linked with justice account or match SSO condition, will redirect to client\u0026#39;s redirect url with code. then invoke \u0026#39;/iam/v3/oauth/token\u0026#39; with grant_type=authorization_code\t\nIf already not linked with justice account and not match SSO condition, will redirect to client\u0026#39;s account linking page\t\n## Supported platforms:\n- **steamopenid**Steam login page will redirects to this endpoint 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 redirects to this endpoint 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 redirects to this endpoint 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 redirects to this endpoint after login success\n\tor an error occurred. If error, it redirects to the login page.\n- **twitch**Twitch login page will redirects to this endpoint 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 redirects to this endpoint 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 redirects to this endpoint 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 redirects to this endpoint 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 redirects to this endpoint after login success\n\tas previously defined on authorize request parameter \u0026lt;code\u0026gt;redirect_uri\u0026lt;/code\u0026gt;\naction code : 10709", "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" } }, "/iam/v3/platforms/{platformId}/token/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint will validate the third party platform token, for some platforms will also refresh the token stored in IAM, it will not generate any event or AB access/refresh token.\nThis endpoint can be used by game client to refresh third party token if game client got platform token not found error, for example got 404 \nplatform token not found 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": {} } }, "/iam/v3/public/inputValidations": { "get": { "consumes": [ "application/json" ], "description": "No role required\nThis endpoint is to get 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": "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" } } }, "/iam/v3/public/inputValidations/{field}": { "get": { "consumes": [ "application/json" ], "description": "This endpoint is to get input validation configuration by field.", "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" } } }, "/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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/config/{configKey}": { "get": { "description": "This endpoint return the value of config key. The namespace should be publisher namespace or studio namespace.\nNote: this endpoint does not need 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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/countries": { "get": { "description": "Public get country list, will filter out countries in black list", "operationId": "PublicGetCountryListV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/platforms/clients/active": { "get": { "description": "This is the Public API to Get All Active 3rd Platform Credential.", "operationId": "RetrieveAllActiveThirdPartyLoginPlatformCredentialPublicV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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 Active Credential for Public Usage", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error", "20001": "unauthorized access", "20013": "insufficient permissions" } } }, "/iam/v3/public/namespaces/{namespace}/platforms/clients/oidc": { "get": { "description": "This is the Public API to Get All Active OIDC Platform Credential By Client ID", "operationId": "RetrieveActiveOIDCClientsPublicV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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 Credential By Client ID", "tags": [ "Third Party Credential" ], "x-errorCodes": { "10175": "third party credential not found", "20000": "internal server error" } } }, "/iam/v3/public/namespaces/{namespace}/platforms/{platformId}/users": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "List User ID By Platform User ID\nThis endpoint intended to list game user ID from the given namespace\nThis endpoint return list of user ID 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformUserIDRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}": { "get": { "deprecated": true, "description": "Get User By Platform User ID.\nThis endpoint return 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": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/requests/{requestId}/async/status": { "get": { "description": "This endpoint is used to get linking status.\nThis API need logged user and user can only request its own linking status.", "operationId": "PublicGetAsyncStatus", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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.LinkRequest" } }, "401": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users": { "get": { "description": "This endpoint search 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": "Namespace, only accept alphabet and numeric", "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-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.\nThis endpoint support accepting agreements for the created user. Supply the accepted agreements in acceptedPolicies attribute.", "operationId": "PublicCreateUserV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserCreateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/users/bulk/basic": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "Notes:\n- This endpoint bulk get users\u0026#39; basic 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserIDsRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/users/code/request": { "post": { "consumes": [ "application/json" ], "description": "This endpoint will validate 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 [endpoint](#operations-Users-PublicVerifyRegistrationCode).", "operationId": "PublicSendRegistrationCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendRegisterVerificationCodeRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/users/code/verify": { "post": { "consumes": [ "application/json" ], "description": "Verify the registration code", "operationId": "PublicVerifyRegistrationCode", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.VerifyRegistrationCode" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/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.\naction code : 10104", "operationId": "PublicForgotPasswordV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ForgotPasswordRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/users/input/validation": { "post": { "consumes": [ "application/json" ], "description": "Validate user\u0026#39;s input. \n--------\n**note:** \n- this endpoint will check the input validation and profanity filter service(if this is enabled)\n- the namespace should be publisher namespace\n", "operationId": "PublicValidateUserInput", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserInputValidationRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/users/invite/{invitationId}": { "get": { "description": "Endpoint to validate user invitation. When not found, it could also means 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": "Namespace, only accept alphabet and numeric", "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" } }, "post": { "consumes": [ "application/json" ], "description": "This endpoint create user from saved roles when creating invitation and submitted data.\nUser will be able to login after completing submitting the data through this endpoint.\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": [ { "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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/users/me": { "patch": { "consumes": [ "application/json" ], "description": "This Endpoint support update 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\naction code : 10103 ", "operationId": "PublicPartialUpdateUserV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PublicUserUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} }, "put": { "consumes": [ "application/json" ], "description": "This Endpoint support update 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:**\nThis endpoint provides support for client that doesn\u0026#39;t have PATCH support, i.e. UE4 before v4.23 released.\nIf the client support PATCH method, use [PATCH] /iam/v3/public/namespaces/{namespace}/users/me instead\n\naction code : 10103", "operationId": "UpdateUserV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PublicUserUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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.\t\t\t\t\n\naction code: 10116", "operationId": "PublicSendVerificationCodeV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.SendVerificationCodeRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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**\naction code: 10107", "operationId": "PublicUserVerificationV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserVerificationRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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\n \tThe endpoint upgrades a headless account by linking the headless account with the email address and the password. \nBy upgrading the headless account into a full account, the user could use the email address and password for using Justice IAM. \n \tThe endpoint is a shortcut for upgrading a headless account and verifying the email address in one call. \nIn order to get a verification code for the endpoint, please check the send verification code endpoint.\n \tThis endpoint also have an 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\n\t\naction code : 10124", "operationId": "PublicUpgradeHeadlessAccountV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountWithVerificationCodeRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/headless/verify": { "post": { "consumes": [ "application/json" ], "description": "action code : 10124\n\nif 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UpgradeHeadlessAccountV3Request" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/password": { "put": { "consumes": [ "application/json" ], "description": "action code: 10107", "operationId": "PublicUpdatePasswordV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserPasswordUpdateV3Request" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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.\naction code : 10121", "operationId": "PublicPlatformUnlinkV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UnlinkUserPlatformRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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.\naction code : 10144", "operationId": "PublicPlatformLinkV3", "parameters": [ { "description": "Ticket from platform, not contain whitespace", "in": "formData", "name": "ticket", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-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, this endpoint will perform force linking and remove platform from that conflict user, not only from the current request namespace but also include 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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/link": { "get": { "description": "This endpoint is used to generate third party login page which will redirected to establish endpoint.\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": "PublicWebLinkPlatform", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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\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": "Create Public Web Linking", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/link/establish": { "get": { "description": "This endpoint is used by third party to redirect the code for the purpose of linking the account third party to IAM account.\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": "PublicWebLinkPlatformEstablish", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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": "Establish Link Progress ", "tags": [ "Users" ], "x-errorCodes": {}, "x-location-query": "PLACEHOLDER" } }, "/iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/web/link/process": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to process third party account link, this endpoint will return the link status directly instead of redirecting to the original page.\nThe param **state** comes from the response of \u0026lt;code\u0026gt;/users/me/platforms/{platformId}/web/link\u0026lt;/code\u0026gt;\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": "PublicProcessWebLinkPlatformV3", "parameters": [ { "description": "state", "in": "formData", "name": "state", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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.LinkRequest" } }, "400": { "description": "\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eerrorCode\u003c/td\u003e\u003ctd\u003eerrorMessage\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e20000\u003c/td\u003e\u003ctd\u003einternal server error\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": "Process Link Progress ", "tags": [ "Users" ], "x-errorCodes": { "20000": "internal server error", "20002": "validation error" } } }, "/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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UsersPlatformInfosRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/reset": { "post": { "consumes": [ "application/json" ], "description": "action code: 10105", "operationId": "ResetPasswordV3", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.ResetPasswordRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}": { "get": { "deprecated": true, "description": "This endpoint retrieve user attributes. action code: 10129\n**Substitute endpoint:** /v4/public/namespaces/{namespace}/users/{userId} [GET]", "operationId": "PublicGetUserByUserIdV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/distinctPlatforms": { "get": { "description": "This endpoint 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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/information": { "get": { "description": "This endpoint 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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/logins/histories": { "get": { "description": "Notes for this endpoint:\n- This endpoint retrieve 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- The maximum value of the limit is 100 and the minimum value of the limit is 1.\n- This endpoint retrieve the next page of the data if we provide \u0026lt;code\u0026gt;after\u0026lt;/code\u0026gt; parameters with valid Unix timestamp.\n- This endpoint retrieve 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": "Namespace, only accept alphabet and numeric", "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", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms": { "get": { "description": "This endpoint 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\naction code: 10128 ", "operationId": "PublicGetUserPlatformAccountsV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms/justice": { "get": { "description": "This endpoint gets list justice platform account by providing publisher namespace and publisher userID.\n\n\n**Authentication:**\nThe _**userId**_ parameter should match the one in the access token.", "operationId": "PublicListJusticePlatformAccountsV3", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/platforms/link": { "post": { "consumes": [ "application/json" ], "description": "It is going to be **DEPRECATED**.\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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LinkPlatformAccountRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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. \nThis endpoint can transfer progression from 3rd platform binding account\u0026#39;s to current account.\nThis endpoint need the same requestID which also 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.LinkPlatformAccountWithProgressionRequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:USER:{userId}:PUBLISHER [READ]" ] } ] } }, "/iam/v3/public/namespaces/{namespace}/users/{userId}/validate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to validate the user password.\nThis endpoint validate 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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v3/public/roles": { "get": { "consumes": [ "application/json" ], "description": "This endpoint is used to get all non-admin role. \naction code: 10418", "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" } } }, "/iam/v3/public/roles/{roleId}": { "get": { "consumes": [ "application/json" ], "description": "This endpoint is used to get non-admin role based on specify roleId. \naction code : 10417", "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" } } }, "/iam/v3/public/users/forgot": { "post": { "consumes": [ "application/json" ], "description": "This endpoint 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": [ { "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" } } }, "/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\n\naction code : 10147", "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-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": [ { "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-security": {} } }, "/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 endpoint \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-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": [ { "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-security": {} } }, "/iam/v3/public/users/me/link/redirection": { "get": { "description": "Get my redirect uri after link, this endpoint will return 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-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-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": [ { "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-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-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": {} } }, "/iam/v3/sso/saml/platforms/{platformId}/authenticate": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint authenticates user platform for SAML protocol. It 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 redirects to this endpoint 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" } }, "/iam/v3/sso/{platformId}": { "get": { "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": {} } }, "/iam/v3/sso/{platformId}/logout": { "post": { "description": "Logout user\u0026#39;s session on platform that logged in 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-security": {} } }, "/iam/v3/token/exchange": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to generate 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\u0026lt;/code\u0026gt;\nThe code should be generated from \u0026lt;code\u0026gt;/iam/v3/namespace/{namespace}/token/request\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": {} } }, "/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": {} } }, "/iam/v4/admin/invitationHistories": { "get": { "description": "This endpoint is to list all Invitation Histories for new studio namespace in multi tenant mode.\nIt will return error if the service multi tenant mode is set to false.\nAccepted Query:\n- namespace\n- offset\n- limit\n", "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-security": [ { "userPermissions": [ "ADMIN:USER:INVITE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to get devices a user ever used to login", "operationId": "AdminGetDevicesByUserV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/banned": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to get banned devices", "operationId": "AdminGetBannedDevicesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/bans": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to get device bans of user", "operationId": "AdminGetUserDeviceBansV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to ban a device", "operationId": "AdminBanDeviceV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DeviceBanRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [CREATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/bans/{banId}": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to get device ban config", "operationId": "AdminGetDeviceBanV4", "parameters": [ { "description": "device id", "in": "path", "name": "banId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to update a device ban config", "operationId": "AdminUpdateDeviceBanV4", "parameters": [ { "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": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/report": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to generate device report", "operationId": "AdminGenerateReportV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/types": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to get device types", "operationId": "AdminGetDeviceTypesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/bans": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to get device ban list", "operationId": "AdminGetDeviceBansV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/decrypt": { "get": { "consumes": [ "application/json" ], "deprecated": true, "description": "This is the endpoint for an admin to decrypt device id", "operationId": "AdminDecryptDeviceV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/unban": { "put": { "description": "This is the endpoint for an admin to unban device", "operationId": "AdminUnbanDeviceV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:DEVICE [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/devices/{deviceId}/users": { "get": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to get users that ever login on the device", "operationId": "AdminGetUsersByDeviceV4", "parameters": [ { "description": "device id", "in": "path", "name": "deviceId", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/invitationHistories": { "get": { "description": "This endpoint is to Invitation Historiy for specific new studio namespace in multi tenant mode.\nIt will return error if the service multi tenant mode is set to false.\n", "operationId": "AdminGetNamespaceInvitationHistoryV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:INVITE [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/invitationHistories/users": { "get": { "description": "This endpoint is to Get list of users Invitation History for specific new studio namespace in multi tenant mode.\nIt will return error if the service multi tenant mode is set to false.\nAccepted Query:\n- offset\n- limit\n", "operationId": "AdminGetNamespaceUserInvitationHistoryV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createTestUsersRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [CREATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "description": "Create a new user with unique email address and username.\n**Required attributes:**\n- authType: possible value is EMAILPASSWD\n- emailAddress: Please refer to the rule from /v3/public/inputValidations API.\n- username: Please refer to the rule from /v3/public/inputValidations API.\n- password: Please refer to the rule from /v3/public/inputValidations API.\n- country: ISO3166-1 alpha-2 two letter, e.g. US.\n- dateOfBirth: YYYY-MM-DD, e.g. 1990-01-01. valid values are between 1905-01-01 until current date.\n- uniqueDisplayName: required when uniqueDisplayNameEnabled/UNIQUE_DISPLAY_NAME_ENABLED is true, please refer to the rule from /v3/public/inputValidations API.\n\n**Not required attributes:**\t\n- displayName: Please refer to the rule from /v3/public/inputValidations API.\nThis endpoint support accepting agreements for the created user. Supply the accepted agreements in acceptedPolicies attribute.", "operationId": "AdminCreateUserV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createUserRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [CREATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/bulk/accountType": { "patch": { "consumes": [ "application/json" ], "description": "This endpoint is used to change 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.BulkAccountTypeUpdateRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:TYPE:USER [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/bulk/validate": { "post": { "consumes": [ "application/json" ], "description": "Use this endpoint to check if userID exists or not\nMaximum number of userID to be checked is 50", "operationId": "AdminBulkCheckValidUserIDV4", "parameters": [ { "description": "Object of Request to check valid userIDs", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.CheckValidUserIDRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}": { "put": { "consumes": [ "application/json" ], "description": "This Endpoint support update 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. \n\t\t\naction code : 10103 ", "operationId": "AdminUpdateUserV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.UserUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/email": { "put": { "consumes": [ "application/json" ], "description": "This is the endpoint for an admin to update a user email address.\nThis endpoint need a valid user token from an admin to verify its identity (email) before updating a user.", "operationId": "AdminUpdateUserEmailAddressV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.EmailUpdateRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [UPDATE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/mfa/disable": { "delete": { "consumes": [ "application/json" ], "description": "This endpoint is used to disable user 2FA.\n-----------\n**Note**: if the factor is not specified, will disable all 2FA methods.\n", "operationId": "AdminDisableUserMFAV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [DELETE]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/mfa/status": { "get": { "description": "**This endpoint is used to get user\u0026#39;s 2FA status.**", "operationId": "AdminGetUserMFAStatusV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:USER:{userId} [READ]" ] } ] } }, "/iam/v4/admin/namespaces/{namespace}/users/{userId}/roles": { "delete": { "consumes": [ "application/json" ], "description": "Remove a role from user\u0026#39;s roles.", "operationId": "AdminRemoveUserRoleV4", "parameters": [ { "description": "Object of Role ID with allowed namespaces to be removed", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.RemoveUserRoleV4Request" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:* [DELETE]" ] } ] }, "get": { "description": "List roles assigned to a user", "operationId": "AdminListUserRolesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-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 endpoint.", "operationId": "AdminAddUserRoleV4", "parameters": [ { "description": "Object of Role ID to be assigned with allowed namespaces", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AddUserRoleV4Request" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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 endpoint.\n", "operationId": "AdminUpdateUserRoleV4", "parameters": [ { "description": "Object of Role ID to be assigned with allowed namespaces", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.AddUserRoleV4Request" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:ROLE:USER:* [UPDATE]" ] } ] } }, "/iam/v4/admin/roles": { "get": { "description": "action code: 10414", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Create role request body:\n- roleName: specify role name, alphanumeric, cannot have special character (required)\n- adminRole: specify if role is for admin user (default false)\n- isWildcard: specify if role can be assigned to wildcard (*) namespace (default false)\n- deletable: specify if role can be deleted (default true)\n\naction code: 10401", "operationId": "AdminCreateRoleV4", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [CREATE]" ] } ] } }, "/iam/v4/admin/roles/{roleId}": { "delete": { "description": "Removes role ID from user\u0026#39;s Roles and NamespaceRoles before deleting the role.\naction code: 10403", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [DELETE]" ] } ] }, "get": { "description": "action code: 10419", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Update role request body:\n- roleName: specify role name, alphanumeric, cannot have special character (required)\n- adminRole: specify if role is for admin user (default false)\n- isWildcard: specify if role can be assigned to wildcard (*) namespace (default false)\n- deletable: specify if role can be deleted (optional)\n\naction code: 10402", "operationId": "AdminUpdateRoleV4", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v4/admin/roles/{roleId}/permissions": { "delete": { "consumes": [ "application/json" ], "operationId": "AdminDeleteRolePermissionsV4", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "This endpoint will ATTACH permission(s) into the role\naction code: 10404\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\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": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "This endpoint will REPLACE role\u0026#39;s permissions with the ones defined in body\naction code: 10405\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": [ { "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-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.\n\nParameters:\n- userId: string (required)\n- namespace: string (user’s namespace) (required)\n\naction code: 10411", "operationId": "AdminRevokeUserFromRoleV4", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] }, "get": { "description": "Query all users that has the specified role.\naction code: 10416", "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-security": [ { "userPermissions": [ "ADMIN:ROLE [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Parameters:\n- **userId**: string (required)\n- **namespace**: string (user’s namespace) (required)\n- **assignedNamespaces**: array of string (namespaces to be assigned on role) (required)\n\naction code: 10410", "operationId": "AdminAssignUserToRoleV4", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:ROLE [UPDATE]" ] } ] } }, "/iam/v4/admin/users/invite": { "post": { "consumes": [ "application/json" ], "description": "Use this endpoint to invite admin or non-admin user and assign 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 endpoint: [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": [ { "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-security": [ { "userPermissions": [ "ADMIN:USER:INVITE [CREATE]" ] } ] } }, "/iam/v4/admin/users/me": { "patch": { "consumes": [ "application/json" ], "description": "This Endpoint support update 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\naction code : 10103", "operationId": "AdminUpdateMyUserV4", "parameters": [ { "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-security": {} } }, "/iam/v4/admin/users/me/mfa/authenticator/disable": { "delete": { "consumes": [ "application/json" ], "description": "This endpoint is used to disable 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": [ { "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-security": {} } }, "/iam/v4/admin/users/me/mfa/authenticator/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to enable 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-security": {} } }, "/iam/v4/admin/users/me/mfa/authenticator/key": { "post": { "description": "This endpoint is used to generate 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-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode": { "get": { "deprecated": true, "description": "This endpoint is used to get 8-digits 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-security": {} }, "post": { "deprecated": true, "description": "This endpoint is used to generate 8-digits 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-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode/disable": { "delete": { "consumes": [ "application/json" ], "description": "This endpoint is used to disable 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": [ { "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-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode/download": { "get": { "deprecated": true, "description": "This endpoint is used to download backup codes.", "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-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCode/enable": { "post": { "deprecated": true, "description": "This endpoint is used to enable 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-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCodes": { "get": { "description": "This endpoint is used to get 8-digits 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-security": {} }, "post": { "description": "This endpoint is used to generate 8-digits 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-security": {} } }, "/iam/v4/admin/users/me/mfa/backupCodes/enable": { "post": { "description": "This endpoint is used to enable 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-security": {} } }, "/iam/v4/admin/users/me/mfa/challenge/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint will verify user\u0026#39;s\u0026#39; MFA code and generate a 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-security": {} } }, "/iam/v4/admin/users/me/mfa/email/code": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to send 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-security": {} } }, "/iam/v4/admin/users/me/mfa/email/disable": { "post": { "consumes": [ "application/json" ], "description": "This endpoint is used to disable 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": [ { "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-security": {} } }, "/iam/v4/admin/users/me/mfa/email/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to enable 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-security": {} } }, "/iam/v4/admin/users/me/mfa/factor": { "get": { "description": "This endpoint is used to get user enabled factors.", "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-security": {} }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to make 2FA factor default.", "operationId": "AdminMakeFactorMyDefaultV4", "parameters": [ { "description": "method", "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-security": {} } }, "/iam/v4/admin/users/me/mfa/status": { "get": { "description": "This endpoint will get user\u0026#39;s\u0026#39; 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-security": {} }, "post": { "deprecated": true, "description": "This endpoint will get user\u0026#39;s\u0026#39; 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-security": {} } }, "/iam/v4/admin/users/users/invite": { "post": { "consumes": [ "application/json" ], "deprecated": true, "description": "Use this endpoint to invite admin or non-admin user and assign 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 endpoint: [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\t\nSubstitute endpoint: /iam/v4/admin/users/invite", "operationId": "AdminInviteUserV4", "parameters": [ { "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-security": [ { "userPermissions": [ "ADMIN:USER:INVITE [CREATE]" ] } ] } }, "/iam/v4/oauth/authenticateWithLink": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to authenticate a user account and perform platform link. \nIt validates user\u0026#39;s email / username and password. \nIf user already enable 2FA, then invoke _/mfa/verify_ using **mfa_token** from this endpoint 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).\nThis endpoint will read 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.", "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" } } }, "/iam/v4/oauth/headless/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to create headless account after 3rd platform authenticated, and response token . \nThe \u0026#39;linkingToken\u0026#39; in request body is received from \u0026#34;/platforms/{platformId}/token\u0026#34; \nwhen 3rd platform account is not linked to justice account yet.", "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" } } }, "/iam/v4/oauth/mfa/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "Verify 2FA code\nThis endpoint is used for verifying 2FA code.\n## 2FA remember device\nTo remember device for 2FA, should provide cookie: device_token or header: Device-Token", "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": {} } }, "/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, Justice, etc. The endpoint automatically create an account if the account associated with the platform is not exists yet.\nThis endpoint requires 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## 2FA remember device\nTo remember device for 2FA, should provide cookie: device_token or header: Device-Token\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 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 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**. 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\naction code : 10704", "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": {} } }, "/iam/v4/oauth/simultaneousLogin": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "# This endpoint is in ALPHA, avoid using this endpoint fow 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" } } }, "/iam/v4/oauth/token": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint 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**. 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## 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;.\nThis endpoint will read device cookie from request header **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## Track Login History\nThis endpoint 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## 2FA remember device\nTo remember device for 2FA, should provide cookie: device_token or header: Device-Token\n## Response note\nIf it is a user token request and user hasn\u0026#39;t accepted required legal policy, the field \u0026lt;code\u0026gt;is_comply\u0026lt;/code\u0026gt; will be false in response and responsed token will have no permission.\t\naction code: 10703", "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": {} } }, "/iam/v4/oauth/token/exchange": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is being used to generate 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\u0026lt;/code\u0026gt;\nThe code should be generated from \u0026lt;code\u0026gt;/iam/v3/namespace/{namespace}/token/request\u0026lt;/code\u0026gt;.", "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": {} } }, "/iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users": { "post": { "consumes": [ "application/json" ], "description": "List User ID By Platform User ID\nThis endpoint intended to list game user ID from the given namespace\nThis endpoint return list of user ID by given platform ID and list of platform user ID, 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PlatformUserIDRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}": { "get": { "description": "Get User By Platform User ID.\nThis endpoint return 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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/test_users": { "post": { "consumes": [ "application/json" ], "description": "Create a test user and not send verification code email\n**Required attributes:**\n- verified: this new user is verified or not\n- authType: possible value is EMAILPASSWD\n- emailAddress: Please refer to the rule from /v3/public/inputValidations API.\n- username: Please refer to the rule from /v3/public/inputValidations API.\n- password: Please refer to the rule from /v3/public/inputValidations API.\n- country: ISO3166-1 alpha-2 two letter, e.g. US.\n- dateOfBirth: YYYY-MM-DD, e.g. 1990-01-01. valid values are between 1905-01-01 until current date.\n\n**Not required attributes:**\t\n- displayName: Please refer to the rule from /v3/public/inputValidations API.\n\nThis endpoint support accepting agreements for the created user. Supply the accepted agreements in acceptedPolicies attribute.", "operationId": "PublicCreateTestUserV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createTestUserRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v4/public/namespaces/{namespace}/users": { "post": { "consumes": [ "application/json" ], "description": "Create a new user with unique email address and username.\n**Required attributes:**\n- authType: possible value is EMAILPASSWD\n- emailAddress: Please refer to the rule from /v3/public/inputValidations API.\n- username: Please refer to the rule from /v3/public/inputValidations API.\n- password: Please refer to the rule from /v3/public/inputValidations API.\n- country: ISO3166-1 alpha-2 two letter, e.g. US.\n- dateOfBirth: YYYY-MM-DD, e.g. 1990-01-01. valid values are between 1905-01-01 until current date.\n- uniqueDisplayName: required when uniqueDisplayNameEnabled/UNIQUE_DISPLAY_NAME_ENABLED is true, please refer to the rule from /v3/public/inputValidations API.\n- code: required when mandatoryEmailVerificationEnabled config is true, please refer to the config from /iam/v3/public/namespaces/{namespace}/config/{configKey} [GET] API.\n\n**Not required attributes:**\t\n- displayName: Please refer to the rule from /v3/public/inputValidations API.\nThis endpoint support accepting agreements for the created user. Supply the accepted agreements in acceptedPolicies attribute.", "operationId": "PublicCreateUserV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.createUserRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v4/public/namespaces/{namespace}/users/invite/{invitationId}": { "post": { "consumes": [ "application/json" ], "description": "This endpoint create user from saved roles when creating invitation and submitted data.\nUser will be able to login after completing submitting the data through this endpoint.\nAvailable Authentication Types:\n\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.\n\nDate of Birth format : YYYY-MM-DD, e.g. 2019-04-29.\n\t\nRequired attributes:\n- authType: possible value is EMAILPASSWD (see above)\n- country: ISO3166-1 alpha-2 two letter, e.g. US.\n- dateOfBirth: YYYY-MM-DD, e.g. 1990-01-01. valid values are between 1905-01-01 until current date.\n- displayName: Please refer to the rule from /v3/public/inputValidations API.\n- password: Please refer to the rule from /v3/public/inputValidations API.\n- username: Please refer to the rule from /v3/public/inputValidations API.", "operationId": "CreateUserFromInvitationV4", "parameters": [ { "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": "Namespace, only accept alphabet and numeric", "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" } } }, "/iam/v4/public/namespaces/{namespace}/users/me": { "patch": { "consumes": [ "application/json" ], "description": "This Endpoint support update 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.\n\naction code : 10103 ", "operationId": "PublicUpdateUserV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.PublicUserUpdateRequestV3" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/email": { "put": { "consumes": [ "application/json" ], "description": "The endpoint to update my email address. \nIt requires a verification code from \u0026lt;code\u0026gt;/users/me/code/request\u0026lt;/code\u0026gt; with **UpdateEmailAddress** context.", "operationId": "PublicUpdateUserEmailAddressV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.EmailUpdateRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/headless/code/verify": { "post": { "consumes": [ "application/json" ], "description": " \tThe endpoint upgrades a headless account by linking the headless account with the email address, username, and password. \nBy upgrading the headless account into a full account, the user could use the email address, username, and password for using Justice IAM.\n\nThe endpoint is a shortcut for upgrading a headless account and verifying the email address in one call. \nIn order to get a verification code for the endpoint, please check the [send verification code endpoint](#operations-Users-PublicSendVerificationCodeV3).\n\nThis endpoint also have an 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\n\t\naction code : 10124", "operationId": "PublicUpgradeHeadlessAccountWithVerificationCodeV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.upgradeHeadlessAccountWithVerificationCodeRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-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.\naction code : 10124", "operationId": "PublicUpgradeHeadlessAccountV4", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/account.upgradeHeadlessAccountRequestV4" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/authenticator/disable": { "delete": { "consumes": [ "application/json" ], "description": "This endpoint is used to disable 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/authenticator/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to enable 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": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/authenticator/key": { "post": { "description": "This endpoint is used to generate a secret key for 3rd-party authenticator app. \nA QR code URI is also returned so that frontend can generate QR code image.", "operationId": "PublicGenerateMyAuthenticatorKeyV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode": { "get": { "deprecated": true, "description": "This endpoint is used to get 8-digits backup codes. \nEach code is a one-time code and will be deleted once used.", "operationId": "PublicGetMyBackupCodesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} }, "post": { "deprecated": true, "description": "This endpoint is used to generate 8-digits backup codes. \nEach code is a one-time code and will be deleted once used.", "operationId": "PublicGenerateMyBackupCodesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode/disable": { "delete": { "consumes": [ "application/json" ], "description": "This endpoint is used to disable 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode/download": { "get": { "deprecated": true, "description": "This endpoint is used to download backup codes.", "operationId": "PublicDownloadMyBackupCodesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCode/enable": { "post": { "deprecated": true, "description": "This endpoint is used to enable 2FA backup codes.", "operationId": "PublicEnableMyBackupCodesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCodes": { "get": { "description": "This endpoint is used to get existing 8-digits backup codes. \nEach codes is a one-time code and will be deleted once used.\nThe codes will be sent through linked email.", "operationId": "PublicGetBackupCodesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} }, "post": { "description": "This endpoint is used to generate 8-digits backup codes. \nEach codes is a one-time code and will be deleted once used.\nThe codes will be sent through linked email.", "operationId": "PublicGenerateBackupCodesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/backupCodes/enable": { "post": { "description": "This endpoint is used to enable 2FA backup codes.", "operationId": "PublicEnableBackupCodesV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/challenge/verify": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint will verify user\u0026#39;s\u0026#39; MFA code and generate a MFA token for the action.", "operationId": "PublicChallengeMyMFAV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/device": { "delete": { "description": "(Only for test)This endpoint is used to remove trusted device.\nThis endpoint Requires device_token in cookie", "operationId": "PublicRemoveTrustedDeviceV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/email/code": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to send email code.\n----------------\nSupported values of action:\n\t* ChangePassword\n\t* DisableMFAEmail\n", "operationId": "PublicSendMyMFAEmailCodeV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/email/disable": { "post": { "consumes": [ "application/json" ], "description": "This endpoint is used to disable 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": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/model.DisableMFARequest" } }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/email/enable": { "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to enable 2FA email.", "operationId": "PublicEnableMyEmailV4", "parameters": [ { "description": "code", "in": "formData", "name": "code", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/factor": { "get": { "description": "This endpoint is used to get user enabled factors.", "operationId": "PublicGetMyEnabledFactorsV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "description": "This endpoint is used to make 2FA factor default.", "operationId": "PublicMakeFactorMyDefaultV4", "parameters": [ { "description": "factor", "in": "formData", "name": "factor", "required": true, "type": "string" }, { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/me/mfa/status": { "get": { "description": "This endpoint will get user\u0026#39;s\u0026#39; MFA status.", "operationId": "PublicGetMyOwnMFAStatusV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} }, "post": { "deprecated": true, "description": "This endpoint will get user\u0026#39;s\u0026#39; MFA status.\n---------\n**Substitute endpoint**: /iam/v4/public/namespaces/{namespace}/users/me/mfa/status [GET]\n", "operationId": "PublicGetMyMFAStatusV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/namespaces/{namespace}/users/{userId}": { "get": { "description": "This endpoint only returns user\u0026#39;s public information.\n action code: 10129", "operationId": "PublicGetUserPublicInfoByUserIdV4", "parameters": [ { "description": "Namespace, only accept alphabet and numeric", "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-security": {} } }, "/iam/v4/public/users/invite": { "post": { "consumes": [ "application/json" ], "description": "This endpoint is used to invite a game studio admin user with new namespace in multi tenant mode.\nIt will return error if the service multi tenant mode is set to false.\n\nRequest body details:\n- emailAddress: email address of the user to be invited\n- namespace: new namespace of the user to be created\n- namespaceDisplayName: display name of the new namespace\n- additionalData(optional): for utm parameter data\n\nThe invited users will also be assigned with \u0026#34;User\u0026#34; role by default.", "operationId": "PublicInviteUserV4", "parameters": [ { "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" } } }, "/iam/v4/public/users/me/headless/code/verify/forward": { "post": { "consumes": [ "application/json" ], "description": "This is a forward version for code verify.\n \tThe endpoint upgrades a headless account by linking the headless account with the email address, username, and password. \nBy upgrading the headless account into a full account, the user could use the email address, username, and password for using Justice IAM.\n\nThe endpoint is a shortcut for upgrading a headless account and verifying the email address in one call. \nIn order to get a verification code for the endpoint, please check the [send verification code endpoint](#operations-Users-PublicSendCodeForwardV3).\n\nThis endpoint also have an ability to update user data (if the user data field is specified) right after the upgrade account process is done.\n", "operationId": "PublicUpgradeHeadlessWithCodeV4Forward", "parameters": [ { "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 the headless account and automatically verify the email address if the upgrade succeeds.", "tags": [ "Users V4" ], "x-errorCodes": {} } } }, "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", "enum": [ "EMAILPASSWD" ], "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "password": { "type": "string" }, "passwordMD5Sum": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "username": { "type": "string" }, "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", "enum": [ "EMAILPASSWD" ], "type": "string" }, "code": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "password": { "type": "string" }, "passwordMD5Sum": { "type": "string" }, "reachMinimumAge": { "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "type": "string" }, "username": { "type": "string" } }, "required": [ "authType", "country", "emailAddress", "username" ] }, "account.createUserResponseV4": { "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" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "authType", "country", "dateOfBirth", "displayName", "emailAddress", "namespace", "userId", "username" ] }, "account.upgradeHeadlessAccountRequestV4": { "properties": { "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "password": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "username": { "type": "string" } }, "required": [ "emailAddress", "password", "username" ] }, "account.upgradeHeadlessAccountWithVerificationCodeForwardRequestV4": { "properties": { "acceptedPolicies": { "items": { "$ref": "#/definitions/legal.AcceptedPoliciesRequest" }, "type": "array" }, "code": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "password": { "type": "string" }, "reachMinimumAge": { "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "type": "string" }, "username": { "type": "string" }, "validateOnly": { "type": "boolean", "x-omitempty": false } }, "required": [ "code", "emailAddress", "password", "username" ] }, "account.upgradeHeadlessAccountWithVerificationCodeRequestV4": { "properties": { "code": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "password": { "type": "string" }, "reachMinimumAge": { "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "type": "string" }, "username": { "type": "string" }, "validateOnly": { "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": { "type": "string" }, "userId": { "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" } }, "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": { "type": "string" }, "disabledDate": { "format": "date-time", "type": "string", "x-nullable": true }, "enabled": { "type": "boolean", "x-omitempty": false }, "endDate": { "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": { "type": "string" }, "roleId": { "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": { "type": "string" }, "Last": { "type": "string" }, "Next": { "type": "string" }, "Previous": { "type": "string" } }, "required": [ "First", "Last", "Next", "Previous" ] }, "accountcommon.PaginationV3": { "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "next": { "type": "string" }, "previous": { "type": "string" } }, "required": [ "first", "last", "next", "previous" ] }, "accountcommon.Permission": { "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" ] }, "accountcommon.PermissionGroup": { "properties": { "group": { "type": "string" }, "groupId": { "type": "string" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.AllowedPermission" }, "type": "array" } }, "required": [ "group", "groupId", "permissions" ] }, "accountcommon.PermissionV3": { "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" ] }, "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": { "type": "string" }, "Namespace": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "DisplayName", "Namespace", "UserId" ] }, "accountcommon.RoleManagerV3": { "properties": { "displayName": { "type": "string" }, "namespace": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "displayName", "namespace", "userId" ] }, "accountcommon.RoleMember": { "properties": { "DisplayName": { "type": "string" }, "Namespace": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "DisplayName", "Namespace", "UserId" ] }, "accountcommon.RoleMemberV3": { "properties": { "displayName": { "type": "string" }, "namespace": { "type": "string" }, "userId": { "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": { "type": "string" }, "ClientName": { "type": "string" }, "ClientPermissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "Namespace": { "type": "string" }, "RedirectUri": { "type": "string" }, "Secret": { "type": "string" }, "TwoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "ClientId", "ClientName", "ClientPermissions", "Namespace", "RedirectUri", "Secret", "TwoFactorEnabled" ] }, "clientmodel.ClientCreationResponse": { "properties": { "ClientId": { "type": "string" }, "ClientName": { "type": "string" }, "ClientPermissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "Namespace": { "type": "string" }, "RedirectUri": { "type": "string" }, "TwoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "ClientId", "ClientName", "ClientPermissions", "Namespace", "RedirectUri", "TwoFactorEnabled" ] }, "clientmodel.ClientCreationV3Request": { "properties": { "audiences": { "items": { "type": "string" }, "type": "array" }, "baseUri": { "type": "string" }, "clientId": { "type": "string" }, "clientName": { "type": "string" }, "clientPermissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "clientPlatform": { "type": "string" }, "deletable": { "type": "boolean", "x-omitempty": false }, "description": { "description": "length 0~1024", "type": "string" }, "modulePermissions": { "items": { "$ref": "#/definitions/accountcommon.ClientModulePermission" }, "type": "array" }, "namespace": { "type": "string" }, "oauthAccessTokenExpiration": { "description": "min value 1 second, max value 86400 seconds", "format": "int32", "type": "integer" }, "oauthAccessTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, or HOURS", "type": "string" }, "oauthClientType": { "type": "string" }, "oauthRefreshTokenExpiration": { "description": "min value 1 seconds, max value 2592000 seconds", "format": "int32", "type": "integer" }, "oauthRefreshTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, HOURS or DAYS", "type": "string" }, "parentNamespace": { "type": "string" }, "redirectUri": { "type": "string" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "secret": { "type": "string" }, "skipLoginQueue": { "description": "exempt this client from login queue", "type": "boolean", "x-omitempty": false }, "twoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "audiences", "baseUri", "clientId", "clientName", "clientPlatform", "description", "namespace", "oauthClientType", "redirectUri", "secret", "skipLoginQueue" ] }, "clientmodel.ClientResponse": { "properties": { "ClientId": { "type": "string" }, "ClientName": { "type": "string" }, "ClientPermissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "Namespace": { "type": "string" }, "RedirectUri": { "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" }, "requiredFields": { "items": { "type": "string" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "basicRequiredPermissions", "defaultValues", "description", "id", "requiredFields", "type" ] }, "clientmodel.ClientUpdateRequest": { "properties": { "ClientName": { "type": "string" }, "RedirectUri": { "type": "string" }, "TwoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "ClientName", "RedirectUri", "TwoFactorEnabled" ] }, "clientmodel.ClientUpdateSecretRequest": { "properties": { "NewSecret": { "type": "string" } }, "required": [ "NewSecret" ] }, "clientmodel.ClientUpdateV3Request": { "properties": { "audiences": { "items": { "type": "string" }, "type": "array" }, "baseUri": { "type": "string" }, "clientName": { "type": "string" }, "clientPermissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "clientPlatform": { "type": "string" }, "deletable": { "type": "boolean", "x-omitempty": false }, "description": { "description": "length 0~1024", "type": "string" }, "modulePermissions": { "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", "format": "int32", "type": "integer" }, "oauthAccessTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, or HOURS. Default is SECONDS", "type": "string" }, "oauthRefreshTokenExpiration": { "description": "min value 1 seconds, max value 2592000 seconds", "format": "int32", "type": "integer" }, "oauthRefreshTokenExpirationTimeUnit": { "description": "valid time unit: SECONDS, MINUTES, HOURS or DAYS. Default is MINUTES", "type": "string" }, "redirectUri": { "type": "string" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "skipLoginQueue": { "description": "exempt this client from login queue", "type": "boolean", "x-omitempty": false }, "twoFactorEnabled": { "type": "boolean", "x-omitempty": false } }, "required": [ "clientPlatform", "description" ] }, "clientmodel.ClientV3Response": { "properties": { "audiences": { "items": { "type": "string" }, "type": "array" }, "baseUri": { "type": "string" }, "clientId": { "type": "string" }, "clientName": { "type": "string" }, "clientPermissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "clientPlatform": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "description": { "type": "string" }, "modifiedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "modulePermissions": { "items": { "$ref": "#/definitions/accountcommon.ClientModulePermission" }, "type": "array" }, "namespace": { "type": "string" }, "oauthAccessTokenExpiration": { "format": "int32", "type": "integer" }, "oauthAccessTokenExpirationTimeUnit": { "type": "string" }, "oauthClientType": { "type": "string" }, "oauthRefreshTokenExpiration": { "format": "int32", "type": "integer" }, "oauthRefreshTokenExpirationTimeUnit": { "type": "string" }, "parentNamespace": { "type": "string" }, "redirectUri": { "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "skipLoginQueue": { "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.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" } }, "required": [ "docLink", "groups", "module", "moduleId" ] }, "clientmodel.V3ClientUpdateSecretRequest": { "properties": { "newSecret": { "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": { "type": "string" }, "email": { "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": { "type": "string" }, "progressions": { "description": "progression data of each game account", "items": { "$ref": "#/definitions/model.ProgressionInfo" }, "type": "array" }, "uniqueDisplayName": { "type": "string" }, "userName": { "type": "string" } }, "required": [ "linkedGames" ] }, "model.AddUserRoleV4Request": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "roleId": { "type": "string" } }, "required": [ "assignedNamespaces", "roleId" ] }, "model.AdminBulkUserRequest": { "properties": { "findByPublisherNamespace": { "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": { "format": "int32", "type": "integer" }, "enable": { "type": "boolean", "x-omitempty": false } }, "required": [ "ageRestriction", "enable" ] }, "model.AgeRestrictionResponse": { "properties": { "AgeRestriction": { "format": "int32", "type": "integer" }, "Enable": { "type": "boolean", "x-omitempty": false } }, "required": [ "AgeRestriction", "Enable" ] }, "model.AgeRestrictionResponseV3": { "properties": { "ageRestriction": { "format": "int32", "type": "integer" }, "enable": { "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", "type": "string" }, "userId": { "type": "string" } }, "required": [ "assignedNamespaces", "namespace", "userId" ] }, "model.AssignedUserV4Response": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "displayName": { "type": "string" }, "email": { "type": "string" }, "roleId": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "assignedNamespaces", "displayName", "email", "roleId", "userId" ] }, "model.AuthenticatorKeyResponseV4": { "properties": { "secretKey": { "type": "string" }, "uri": { "type": "string" } }, "required": [ "secretKey", "uri" ] }, "model.BackupCodesResponseV4": { "properties": { "generatedAt": { "format": "int64", "type": "integer" }, "invalidCodes": { "items": { "type": "string" }, "type": "array" }, "validCodes": { "items": { "type": "string" }, "type": "array" } }, "required": [ "generatedAt" ] }, "model.BanCreateRequest": { "properties": { "ban": { "type": "string" }, "comment": { "type": "string" }, "endDate": { "type": "string" }, "reason": { "type": "string" }, "skipNotif": { "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": { "type": "boolean", "x-omitempty": false }, "userIds": { "description": "max userId is 100", "items": { "type": "string" }, "type": "array" } }, "required": [ "testAccount", "userIds" ] }, "model.BulkBanCreateRequestV3": { "properties": { "ban": { "type": "string" }, "comment": { "type": "string" }, "endDate": { "type": "string" }, "reason": { "type": "string" }, "skipNotif": { "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": { "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": { "type": "string" }, "userId": { "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": { "type": "string" }, "deviceId": { "type": "string" }, "deviceType": { "type": "string" }, "enabled": { "type": "boolean", "x-omitempty": false }, "endDate": { "type": "string" }, "ext": { "type": "object" }, "reason": { "type": "string" } }, "required": [ "comment", "deviceId", "deviceType", "enabled", "endDate", "ext", "reason" ] }, "model.DeviceBanResponseV4": { "properties": { "bannedAt": { "format": "int64", "type": "integer" }, "bannedBy": { "type": "string" }, "comment": { "type": "string" }, "deviceId": { "type": "string" }, "deviceType": { "type": "string" }, "disabledAt": { "format": "int64", "type": "integer" }, "enabled": { "type": "boolean", "x-omitempty": false }, "endDate": { "format": "int64", "type": "integer" }, "id": { "type": "string" }, "namespace": { "type": "string" }, "reason": { "type": "string" }, "targetNamespace": { "type": "string" } }, "required": [ "bannedAt", "bannedBy", "comment", "deviceId", "deviceType", "disabledAt", "enabled", "endDate", "id", "namespace", "reason", "targetNamespace" ] }, "model.DeviceBanUpdateRequestV4": { "properties": { "enabled": { "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": { "type": "string" } }, "required": [ "deviceId" ] }, "model.DeviceResponseV4": { "properties": { "ban": { "$ref": "#/definitions/model.DeviceBanResponseV4" }, "deviceId": { "type": "string" }, "deviceType": { "type": "string" }, "ext": { "type": "object" }, "ip": { "type": "string" }, "lastLoginTime": { "format": "int64", "type": "integer" } }, "required": [ "deviceId", "deviceType", "ip", "lastLoginTime" ] }, "model.DeviceTypeResponseV4": { "properties": { "deviceType": { "type": "string" } }, "required": [ "deviceType" ] }, "model.DeviceTypesResponseV4": { "properties": { "data": { "items": { "$ref": "#/definitions/model.DeviceTypeResponseV4" }, "type": "array" } }, "required": [ "data" ] }, "model.DeviceUserResponseV4": { "properties": { "ext": { "type": "object" }, "ip": { "type": "string" }, "lastLoginTime": { "format": "int64", "type": "integer" }, "namespace": { "type": "string" }, "userId": { "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": { "type": "string" }, "mfaToken": { "type": "string" } } }, "model.DisableUserRequest": { "properties": { "Reason": { "type": "string" } } }, "model.EmailUpdateRequestV4": { "properties": { "code": { "type": "string" }, "emailAddress": { "type": "string" } }, "required": [ "code", "emailAddress" ] }, "model.EnabledFactorsResponseV4": { "properties": { "default": { "type": "string" }, "enabled": { "items": { "type": "string" }, "type": "array" }, "remainingBackupCodeCount": { "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": "1. will have value if the type is limited 2. the milliseconds time of next available edit time 3. if it does not have value, it means it is allow to edit now", "format": "int64", "type": "integer" }, "remainingTimeInSeconds": { "description": "1. will have value if the type is limited 2. the remaining seconds that need wait until user can edit this field. 3. the value O means it is allow to edit now", "format": "int64", "type": "integer" }, "type": { "description": "allow value [initial_only, limited, unlimited]", "type": "string" } }, "required": [ "field", "type" ] }, "model.ForgotPasswordRequestV3": { "properties": { "emailAddress": { "type": "string" }, "languageTag": { "type": "string" } }, "required": [ "emailAddress" ] }, "model.ForgotPasswordResponseV3": { "properties": { "namespace": { "type": "string" } }, "required": [ "namespace" ] }, "model.ForgotPasswordWithoutNamespaceRequestV3": { "properties": { "clientId": { "type": "string" }, "emailAddress": { "type": "string" }, "languageTag": { "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", "type": "boolean", "x-omitempty": false }, "platformId": { "type": "string" }, "platformLinkConflict": { "description": "if linked to this platform's other account", "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": { "type": "string" }, "UserID": { "type": "string" } }, "required": [ "DesignatedNamespace", "UserID" ] }, "model.GetUserMapping": { "properties": { "Namespace": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "Namespace", "UserId" ] }, "model.GetUserMappingV3": { "properties": { "namespace": { "type": "string" }, "userId": { "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" }, "version": { "format": "int32", "type": "integer" } }, "required": [ "data", "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": { "type": "boolean", "x-omitempty": false }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "inviter": { "type": "string" }, "namespace": { "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": { "type": "boolean", "x-omitempty": false }, "languageTag": { "type": "string" }, "namespace": { "description": "DEPRECATED. multi tenant studio namespace", "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": { "type": "boolean", "x-omitempty": false }, "isNewStudio": { "type": "boolean", "x-omitempty": false }, "languageTag": { "type": "string" }, "namespace": { "description": "multi tenant studio namespace", "type": "string" }, "roleId": { "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": { "type": "string" } }, "required": [ "chosenNamespaces", "oneTimeLinkCode" ] }, "model.LinkPlatformAccountRequest": { "properties": { "platformId": { "type": "string" }, "platformUserId": { "type": "string" } }, "required": [ "platformId", "platformUserId" ] }, "model.LinkPlatformAccountWithProgressionRequest": { "properties": { "chosenNamespaces": { "items": { "type": "string" }, "type": "array" }, "requestId": { "type": "string" } }, "required": [ "chosenNamespaces", "requestId" ] }, "model.LinkRequest": { "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.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": { "type": "boolean", "x-omitempty": false }, "roleIds": { "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", "type": "string" }, "roleId": { "type": "string" } }, "required": [ "namespace", "roleId" ] }, "model.OneTimeCodeLinkRedirectionResponse": { "properties": { "redirectUri": { "type": "string" } }, "required": [ "redirectUri" ] }, "model.PermissionDeleteRequest": { "properties": { "Action": { "format": "int32", "type": "integer" }, "Resource": { "type": "string" } }, "required": [ "Action", "Resource" ] }, "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", "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": { "format": "int64", "type": "integer" }, "dlcs": { "$ref": "#/definitions/platform.DLCAggResponse" }, "lastLoginTime": { "format": "int64", "type": "integer" }, "namespace": { "type": "string" }, "userBan": { "$ref": "#/definitions/model.SimpleUserBan" }, "wallets": { "items": { "$ref": "#/definitions/platform.WalletAggResponse" }, "type": "array" } }, "required": [ "createdAt", "namespace" ] }, "model.PublicInviteUserRequestV4": { "properties": { "additionalData": { "type": "string" }, "emailAddress": { "type": "string" }, "languageTag": { "type": "string" }, "namespace": { "type": "string" }, "namespaceDisplayName": { "type": "string" } }, "required": [ "emailAddress", "namespace", "namespaceDisplayName" ] }, "model.PublicOpenIDUserInfoResponse": { "properties": { "email": { "type": "string" }, "email_verified": { "type": "boolean", "x-omitempty": false }, "name": { "type": "string" }, "picture": { "type": "string" }, "sub": { "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": { "type": "string" }, "namespace": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" }, "userName": { "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": { "type": "string" }, "avatarUrl": { "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": { "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" }, "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": { "type": "string" }, "userId": { "type": "string" }, "userName": { "type": "string" } }, "required": [ "authType", "bans", "createdAt", "deletionStatus", "displayName", "emailVerified", "enabled", "lastDateOfBirthChangedTime", "lastEnabledChangedTime", "namespace", "namespaceRoles", "permissions", "phoneVerified", "roles", "uniqueDisplayName", "userId" ] }, "model.PublicUserUpdateRequestV3": { "properties": { "avatarUrl": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "languageTag": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "userName": { "type": "string" } } }, "model.PublicUsersResponse": { "properties": { "Users": { "items": { "$ref": "#/definitions/model.PublicUserResponse" }, "type": "array" } } }, "model.RemoveUserRoleV4Request": { "properties": { "assignedNamespaces": { "items": { "type": "string" }, "type": "array" }, "roleId": { "type": "string" } }, "required": [ "assignedNamespaces", "roleId" ] }, "model.ResetPasswordRequest": { "properties": { "Code": { "type": "string" }, "LoginID": { "type": "string" }, "NewPassword": { "type": "string" } }, "required": [ "Code", "LoginID", "NewPassword" ] }, "model.ResetPasswordRequestV3": { "properties": { "clientId": { "description": "for tracking which client this request comes from", "type": "string" }, "code": { "type": "string" }, "emailAddress": { "type": "string" }, "languageTag": { "type": "string" }, "newPassword": { "type": "string" } }, "required": [ "code", "emailAddress", "newPassword" ] }, "model.RevokeUserV4Request": { "properties": { "namespace": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "namespace", "userId" ] }, "model.RoleAdminStatusResponse": { "properties": { "AdminRole": { "type": "boolean", "x-omitempty": false } }, "required": [ "AdminRole" ] }, "model.RoleAdminStatusResponseV3": { "properties": { "adminRole": { "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": { "type": "boolean", "x-omitempty": false }, "deletable": { "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" }, "roleName": { "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": { "type": "boolean", "x-omitempty": false }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "RoleId": { "type": "string" }, "RoleName": { "type": "string" } }, "required": [ "IsWildcard", "Permissions", "RoleId", "RoleName" ] }, "model.RoleResponseV3": { "properties": { "adminRole": { "type": "boolean", "x-omitempty": false }, "isWildcard": { "type": "boolean", "x-omitempty": false }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleId": { "type": "string" }, "roleName": { "type": "string" } }, "required": [ "adminRole", "isWildcard", "permissions", "roleId", "roleName" ] }, "model.RoleResponseWithManagers": { "properties": { "IsWildcard": { "type": "boolean", "x-omitempty": false }, "Managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManager" }, "type": "array" }, "Permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "RoleId": { "type": "string" }, "RoleName": { "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": { "type": "boolean", "x-omitempty": false }, "isWildcard": { "type": "boolean", "x-omitempty": false }, "managers": { "items": { "$ref": "#/definitions/accountcommon.RoleManagerV3" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleId": { "type": "string" }, "roleName": { "type": "string" } }, "required": [ "adminRole", "isWildcard", "managers", "permissions", "roleId", "roleName" ] }, "model.RoleUpdateRequest": { "properties": { "RoleName": { "type": "string" } }, "required": [ "RoleName" ] }, "model.RoleUpdateRequestV3": { "properties": { "deletable": { "type": "boolean", "x-omitempty": false }, "isWildcard": { "type": "boolean", "x-omitempty": false }, "roleName": { "type": "string" } }, "required": [ "isWildcard", "roleName" ] }, "model.RoleV4Request": { "properties": { "adminRole": { "default": false, "type": "boolean", "x-omitempty": false }, "deletable": { "type": "boolean", "x-omitempty": false }, "isWildcard": { "default": false, "type": "boolean", "x-omitempty": false }, "roleName": { "type": "string" } }, "required": [ "adminRole", "isWildcard", "roleName" ] }, "model.RoleV4Response": { "properties": { "adminRole": { "type": "boolean", "x-omitempty": false }, "isWildcard": { "type": "boolean", "x-omitempty": false }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.PermissionV3" }, "type": "array" }, "roleId": { "type": "string" }, "roleName": { "type": "string" } }, "required": [ "adminRole", "isWildcard", "permissions", "roleId", "roleName" ] }, "model.SSOPlatformCredentialRequest": { "properties": { "acsUrl": { "type": "string" }, "apiKey": { "type": "string" }, "appId": { "type": "string" }, "federationMetadataUrl": { "type": "string" }, "isActive": { "type": "boolean", "x-omitempty": false }, "redirectUri": { "type": "string" }, "secret": { "type": "string" }, "ssoUrl": { "type": "string" } }, "required": [ "acsUrl", "apiKey", "appId", "federationMetadataUrl", "isActive", "redirectUri", "secret", "ssoUrl" ] }, "model.SSOPlatformCredentialResponse": { "properties": { "acsUrl": { "type": "string" }, "appId": { "type": "string" }, "federationMetadataUrl": { "type": "string" }, "isActive": { "type": "boolean", "x-omitempty": false }, "namespace": { "type": "string" }, "platformId": { "type": "string" }, "redirectUri": { "type": "string" }, "secret": { "type": "string" }, "ssoUrl": { "type": "string" }, "truncatedApiKey": { "description": "first few characters of key", "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": { "format": "int32", "type": "integer" } }, "required": [ "data", "paging", "totalData" ] }, "model.SendRegisterVerificationCodeRequest": { "properties": { "emailAddress": { "type": "string" }, "languageTag": { "type": "string" } }, "required": [ "emailAddress" ] }, "model.SendVerificationCodeRequest": { "properties": { "Context": { "type": "string" }, "LanguageTag": { "type": "string" }, "LoginID": { "type": "string" } }, "required": [ "LanguageTag", "LoginID" ] }, "model.SendVerificationCodeRequestV3": { "properties": { "context": { "type": "string" }, "emailAddress": { "type": "string" }, "languageTag": { "type": "string" }, "upgradeToken": { "description": "required when in /me/code/request/forward", "type": "string" } }, "required": [ "emailAddress" ] }, "model.SendVerificationLinkRequest": { "properties": { "languageTag": { "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": { "type": "string" }, "endDate": { "format": "int64", "type": "integer" } }, "required": [ "ban", "endDate" ] }, "model.TagCreateRequestV3": { "properties": { "tagName": { "type": "string" } }, "required": [ "tagName" ] }, "model.TagDetail": { "properties": { "id": { "type": "string" }, "tagName": { "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", "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": { "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": { "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", "type": "string" }, "RedirectUri": { "type": "string" }, "RegisteredDomains": { "description": "domains that are allowed to create user and grant roles", "items": { "$ref": "#/definitions/accountcommon.RegisteredDomain" }, "type": "array" }, "RelyingParty": { "description": "xbox relying party", "type": "string" }, "SandboxId": { "description": "sandbox id", "type": "string" }, "Secret": { "type": "string" }, "TeamID": { "description": "apple team id", "type": "string" }, "TokenAuthenticationType": { "description": "Token authentication type indicating what token will be used to authenticate 3rd party user. Currently support: idToken, code and bearerToken. Used for generic oauth flow.", "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. Currently allowed fields list [userIdentity, name, email, avatarUrl]", "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" }, "googleAdminConsoleKey": { "type": "string" }, "scopes": { "description": "scopes for generic OAuth Authorization code flow. Default is [openid, profile, email]", "items": { "type": "string" }, "type": "array" } }, "required": [ "ACSURL", "AWSCognitoRegion", "AWSCognitoUserPool", "AppId", "AuthorizationEndpoint", "ClientId", "Environment", "FederationMetadataURL", "GenericOauthFlow", "IsActive", "Issuer", "JWKSEndpoint", "KeyID", "NetflixCertificates", "OrganizationId", "PlatformName", "RedirectUri", "RegisteredDomains", "Secret", "TeamID", "TokenAuthenticationType", "TokenEndpoint", "UserInfoEndpoint", "UserInfoHTTPMethod", "scopes" ] }, "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 indicating what token will be used to authenticate 3rd party user. Currently support: idToken, code and bearerToken. Used for generic oauth flow.", "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": "scopes for generic OAuth Authorization code flow", "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": { "type": "string" } } }, "model.UpdatePermissionScheduleRequest": { "properties": { "SchedAction": { "format": "int32", "type": "integer" }, "SchedCron": { "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": { "type": "boolean", "x-omitempty": false }, "reason": { "type": "string" } }, "required": [ "enabled" ] }, "model.UpgradeHeadlessAccountRequest": { "properties": { "LoginID": { "description": "new email address or phone number", "type": "string" }, "Password": { "description": "new password", "type": "string" } }, "required": [ "LoginID", "Password" ] }, "model.UpgradeHeadlessAccountV3Request": { "properties": { "emailAddress": { "description": "new email address", "type": "string" }, "password": { "description": "new password", "type": "string" } }, "required": [ "emailAddress", "password" ] }, "model.UpgradeHeadlessAccountWithVerificationCodeRequest": { "properties": { "Code": { "type": "string" }, "Password": { "type": "string" }, "loginId": { "type": "string" } }, "required": [ "Code", "Password", "loginId" ] }, "model.UpgradeHeadlessAccountWithVerificationCodeRequestV3": { "properties": { "code": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "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": { "type": "string" }, "BanId": { "type": "string" }, "EndDate": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "Ban", "BanId", "EndDate" ] }, "model.UserActiveBanResponseV3": { "properties": { "ban": { "type": "string" }, "banId": { "type": "string" }, "endDate": { "format": "date-time", "type": "string", "x-nullable": false }, "targetedNamespace": { "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": { "type": "string" }, "banId": { "type": "string" }, "bannedBy": { "$ref": "#/definitions/accountcommon.BannedByV3" }, "comment": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "disabledDate": { "format": "date-time", "type": "string", "x-nullable": false }, "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", "disabledDate", "enabled", "endDate", "namespace", "reason", "userId" ] }, "model.UserBanWithStatus": { "properties": { "active": { "type": "boolean", "x-omitempty": false }, "ban": { "type": "string" }, "banId": { "type": "string" }, "bannedBy": { "$ref": "#/definitions/accountcommon.BannedByV3" }, "comment": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "disabledDate": { "format": "date-time", "type": "string", "x-nullable": false }, "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": [ "active", "ban", "banId", "bannedBy", "comment", "createdAt", "disabledDate", "enabled", "endDate", "namespace", "reason", "userId" ] }, "model.UserBaseInfo": { "properties": { "avatarUrl": { "type": "string" }, "displayName": { "type": "string" }, "platformUserIds": { "additionalProperties": { "type": "string" }, "type": "object" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "avatarUrl", "displayName", "platformUserIds", "userId" ] }, "model.UserBulkUpdateRequestV3": { "properties": { "skipLoginQueue": { "type": "boolean", "x-omitempty": false } }, "required": [ "skipLoginQueue" ] }, "model.UserCreateRequest": { "properties": { "AuthType": { "type": "string" }, "Country": { "type": "string" }, "DisplayName": { "type": "string" }, "LoginId": { "type": "string" }, "Password": { "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": { "type": "string" }, "code": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "password": { "type": "string" }, "reachMinimumAge": { "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "type": "string" } }, "required": [ "authType", "code", "country", "displayName", "emailAddress", "password", "reachMinimumAge" ] }, "model.UserCreateResponse": { "properties": { "AuthType": { "type": "string" }, "Country": { "type": "string" }, "DateOfBirth": { "format": "date-time", "type": "string", "x-nullable": false }, "DisplayName": { "type": "string" }, "LoginId": { "type": "string" }, "Namespace": { "type": "string" }, "UserId": { "type": "string" } }, "required": [ "AuthType", "Country", "DateOfBirth", "DisplayName", "LoginId", "Namespace", "UserId" ] }, "model.UserCreateResponseV3": { "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" }, "uniqueDisplayName": { "type": "string" }, "userId": { "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": { "type": "string" }, "password": { "type": "string" } } }, "model.UserInfoResponse": { "properties": { "displayName": { "type": "string" }, "emailAddress": { "type": "string" }, "namespace": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "userId": { "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": { "type": "boolean", "x-omitempty": false }, "invitee": { "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": { "type": "string" }, "expiredAt": { "format": "date-time", "type": "string", "x-nullable": false }, "id": { "type": "string" }, "isNewStudio": { "type": "boolean", "x-omitempty": false }, "languageTag": { "type": "string" }, "namespace": { "type": "string" }, "namespaceDisplayName": { "type": "string" }, "roles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "studioNamespace": { "type": "string" } }, "required": [ "createdAt", "email", "expiredAt", "roles" ] }, "model.UserLoginHistoryResponse": { "properties": { "ApplicationName": { "type": "string" }, "City": { "type": "string" }, "Country": { "type": "string" }, "DeviceId": { "type": "string" }, "State": { "type": "string" }, "Timestamp": { "format": "int64", "type": "integer" }, "deviceName": { "type": "string" } }, "required": [ "ApplicationName", "City", "Country", "DeviceId", "State", "Timestamp", "deviceName" ] }, "model.UserMFAStatusResponseV4": { "properties": { "defaultFactor": { "type": "string" }, "enabled": { "type": "boolean", "x-omitempty": false }, "enabledFactors": { "items": { "type": "string" }, "type": "array" } }, "required": [ "enabled" ] }, "model.UserMFATokenResponseV4": { "properties": { "mfaToken": { "type": "string" } }, "required": [ "mfaToken" ] }, "model.UserPasswordUpdateRequest": { "properties": { "LanguageTag": { "type": "string" }, "NewPassword": { "type": "string" }, "OldPassword": { "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": { "format": "int32", "type": "integer" }, "resource": { "type": "string" }, "schedAction": { "format": "int32", "type": "integer" }, "schedCron": { "type": "string" }, "schedRange": { "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "resource" ] }, "model.UserPlatformInfo": { "properties": { "platformAvatarUrl": { "type": "string" }, "platformDisplayName": { "type": "string" }, "platformGroup": { "type": "string" }, "platformId": { "type": "string" }, "platformUserId": { "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": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "displayName": { "type": "string" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "createdAt", "displayName", "userId" ] }, "model.UserResponse": { "properties": { "AuthType": { "type": "string" }, "AvatarUrl": { "type": "string" }, "Bans": { "items": { "$ref": "#/definitions/model.UserActiveBanResponse" }, "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 }, "LoginId": { "type": "string" }, "Namespace": { "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": { "type": "string" }, "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" }, "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": { "type": "string" }, "avatarUrl": { "type": "string" }, "bans": { "items": { "$ref": "#/definitions/model.UserActiveBanResponseV3" }, "type": "array" }, "country": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "dateOfBirth": { "format": "date-time", "type": "string", "x-nullable": true }, "deletionDate": { "type": "string" }, "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" }, "namespaceRoles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "newEmailAddress": { "type": "string" }, "oldEmailAddress": { "type": "string" }, "permissions": { "items": { "$ref": "#/definitions/model.UserPermissionsResponseV3" }, "type": "array" }, "phoneNumber": { "type": "string" }, "phoneVerified": { "type": "boolean", "x-omitempty": false }, "platformAvatarUrl": { "type": "string" }, "platformDisplayName": { "type": "string" }, "platformId": { "type": "string" }, "platformInfos": { "items": { "$ref": "#/definitions/model.UserPlatformInfo" }, "type": "array" }, "platformUserId": { "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "skipLoginQueue": { "type": "boolean", "x-omitempty": false }, "tags": { "items": { "$ref": "#/definitions/model.TagDetail" }, "type": "array" }, "testAccount": { "type": "boolean", "x-omitempty": false }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" }, "userName": { "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": { "type": "string" }, "roleName": { "type": "string" } }, "required": [ "assignedNamespaces", "roleId", "roleName" ] }, "model.UserStateResponseV3": { "properties": { "emailVerified": { "type": "boolean", "x-omitempty": false }, "enabled": { "type": "boolean", "x-omitempty": false }, "fullAccount": { "description": "If the account has email address, then it is full account", "type": "boolean", "x-omitempty": false }, "testAccount": { "type": "boolean", "x-omitempty": false } }, "required": [ "emailVerified", "enabled", "fullAccount", "testAccount" ] }, "model.UserUpdateRequest": { "properties": { "Country": { "type": "string" }, "DateOfBirth": { "type": "string" }, "DisplayName": { "type": "string" }, "LanguageTag": { "type": "string" } } }, "model.UserUpdateRequestV3": { "properties": { "avatarUrl": { "type": "string" }, "country": { "type": "string" }, "dateOfBirth": { "type": "string" }, "displayName": { "type": "string" }, "languageTag": { "type": "string" }, "skipLoginQueue": { "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": { "type": "string" }, "userName": { "type": "string" } } }, "model.UserVerificationRequest": { "properties": { "Code": { "type": "string" }, "ContactType": { "type": "string" }, "LanguageTag": { "type": "string" }, "validateOnly": { "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": { "type": "string" }, "displayName": { "type": "string" }, "platformInfos": { "items": { "$ref": "#/definitions/model.UserPlatformInfo" }, "type": "array" }, "uniqueDisplayName": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" }, "xuid": { "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", "type": "boolean", "x-omitempty": false }, "userId": { "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": { "type": "string" }, "emailAddress": { "type": "string" } }, "required": [ "code", "emailAddress" ] }, "model.WebLinkingResponse": { "properties": { "state": { "type": "string" }, "third_party_url": { "type": "string" } }, "required": [ "state", "third_party_url" ] }, "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.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.CountryLocationResponse": { "properties": { "city": { "type": "string" }, "countryCode": { "type": "string" }, "countryName": { "type": "string" }, "state": { "type": "string" } }, "required": [ "city", "countryCode", "countryName", "state" ] }, "oauthmodel.ErrorResponse": { "properties": { "clientId": { "type": "string" }, "default_factor": { "type": "string" }, "email": { "type": "string" }, "error": { "type": "string" }, "error_description": { "type": "string" }, "error_uri": { "type": "string" }, "factors": { "items": { "type": "string" }, "type": "array" }, "linkingToken": { "type": "string" }, "login_queue_ticket": { "$ref": "#/definitions/oauthmodel.LoginQueueTicketResponse" }, "messageVariables": { "additionalProperties": { "type": "string" }, "type": "object" }, "mfa_token": { "type": "string" }, "platformId": { "type": "string" }, "remainingBackupCodeCount": { "format": "int32", "type": "integer" }, "userBan": { "$ref": "#/definitions/oauthmodel.UserBan" } }, "required": [ "error" ] }, "oauthmodel.LoginQueueTicketResponse": { "properties": { "cancel": { "$ref": "#/definitions/oauthmodel.TicketEndpointAction" }, "estimatedWaitingTimeInSeconds": { "format": "int32", "type": "integer" }, "playerPollingTimeInSeconds": { "format": "int32", "type": "integer" }, "position": { "format": "int32", "type": "integer" }, "reconnectExpiredAt": { "format": "int64", "type": "integer" }, "refresh": { "$ref": "#/definitions/oauthmodel.TicketEndpointAction" }, "ticket": { "type": "string" } }, "required": [ "cancel", "estimatedWaitingTimeInSeconds", "playerPollingTimeInSeconds", "position", "reconnectExpiredAt", "refresh", "ticket" ] }, "oauthmodel.OneTimeLinkingCodeResponse": { "properties": { "exp": { "description": "code will be expired in seconds", "format": "int64", "type": "integer" }, "oneTimeLinkCode": { "type": "string" }, "oneTimeLinkUrl": { "type": "string" } }, "required": [ "exp", "oneTimeLinkCode", "oneTimeLinkUrl" ] }, "oauthmodel.OneTimeLinkingCodeValidationResponse": { "properties": { "expired": { "type": "boolean", "x-omitempty": false }, "platformId": { "type": "string" }, "valid": { "type": "boolean", "x-omitempty": false } }, "required": [ "expired", "valid" ] }, "oauthmodel.PlatformTokenRefreshResponseV3": { "properties": { "avatarUrl": { "type": "string" }, "country": { "type": "string" }, "displayName": { "type": "string" }, "platformTokenExpiresAt": { "format": "int64", "type": "integer" }, "platformUserId": { "type": "string" } } }, "oauthmodel.TargetTokenCodeResponse": { "properties": { "code": { "type": "string" } }, "required": [ "code" ] }, "oauthmodel.TicketEndpointAction": { "properties": { "action": { "type": "string" }, "href": { "type": "string" } }, "required": [ "action", "href" ] }, "oauthmodel.TokenIntrospectResponse": { "properties": { "active": { "type": "boolean", "x-omitempty": false }, "aud": { "type": "string" }, "client_id": { "type": "string" }, "exp": { "format": "int64", "type": "integer" }, "iat": { "format": "int64", "type": "integer" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "active" ] }, "oauthmodel.TokenResponse": { "properties": { "access_token": { "type": "string" }, "bans": { "items": { "$ref": "#/definitions/accountcommon.JWTBanV3" }, "type": "array" }, "device_id": { "description": "will get from xbox dpi if it exists", "type": "string" }, "display_name": { "type": "string" }, "expires_in": { "format": "int32", "type": "integer" }, "is_comply": { "type": "boolean", "x-omitempty": false }, "jflgs": { "format": "int32", "type": "integer" }, "namespace": { "type": "string" }, "namespace_roles": { "items": { "$ref": "#/definitions/accountcommon.NamespaceRole" }, "type": "array" }, "permissions": { "items": { "$ref": "#/definitions/accountcommon.Permission" }, "type": "array" }, "platform_id": { "type": "string" }, "platform_user_id": { "type": "string" }, "refresh_expires_in": { "description": "present if it is user token", "format": "int32", "type": "integer" }, "refresh_token": { "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" }, "token_type": { "type": "string" }, "user_id": { "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": { "type": "string" }, "bans": { "description": "present if it is user token", "items": { "$ref": "#/definitions/accountcommon.JWTBanV3" }, "type": "array" }, "display_name": { "type": "string" }, "expires_in": { "format": "int32", "type": "integer" }, "is_comply": { "type": "boolean", "x-omitempty": false }, "jflgs": { "format": "int32", "type": "integer" }, "namespace": { "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": { "type": "string" }, "platform_user_id": { "type": "string" }, "refresh_expires_in": { "description": "present if it is user token", "format": "int32", "type": "integer" }, "refresh_token": { "description": "present if it is user token", "type": "string" }, "roles": { "description": "roles is deprecated, only NamespaceRoles would work", "items": { "type": "string" }, "type": "array" }, "scope": { "type": "string" }, "simultaneous_platform_id": { "type": "string" }, "simultaneous_platform_user_id": { "type": "string" }, "token_type": { "type": "string" }, "unique_display_name": { "type": "string" }, "user_id": { "description": "present if it is user token", "type": "string" }, "xuid": { "type": "string" } }, "required": [ "access_token", "expires_in", "namespace", "permissions", "scope", "token_type" ] }, "oauthmodel.TokenThirdPartyResponse": { "properties": { "platformUserId": { "type": "string" }, "platform_token": { "type": "string" }, "platform_token_expires_at": { "format": "int64", "type": "integer" }, "sand_box_id": { "type": "string" } }, "required": [ "platform_token" ] }, "oauthmodel.TokenWithDeviceCookieResponseV3": { "properties": { "access_token": { "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", "type": "string" }, "bans": { "description": "present if it is user token", "items": { "$ref": "#/definitions/accountcommon.JWTBanV3" }, "type": "array" }, "display_name": { "type": "string" }, "expires_in": { "format": "int32", "type": "integer" }, "is_comply": { "type": "boolean", "x-omitempty": false }, "jflgs": { "format": "int32", "type": "integer" }, "namespace": { "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": { "type": "string" }, "platform_user_id": { "type": "string" }, "refresh_expires_in": { "description": "present if it is user token", "format": "int32", "type": "integer" }, "refresh_token": { "description": "present if it is user token", "type": "string" }, "roles": { "description": "roles is deprecated, only NamespaceRoles would work", "items": { "type": "string" }, "type": "array" }, "scope": { "type": "string" }, "simultaneous_platform_id": { "type": "string" }, "simultaneous_platform_user_id": { "type": "string" }, "token_type": { "type": "string" }, "unique_display_name": { "type": "string" }, "user_id": { "description": "present if it is user token", "type": "string" }, "xuid": { "type": "string" } }, "required": [ "access_token", "expires_in", "namespace", "permissions", "scope", "token_type" ] }, "oauthmodel.UserBan": { "properties": { "comment": { "type": "string" }, "endDate": { "format": "int64", "type": "integer" }, "reason": { "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": "2025-11-19T03:15:31+00:00", "gitHash": "9b4b248bfd6cc8859c16f9d6c10d035903f05d10", "name": "justice-iam-service", "realm": "staging", "version": "7.36.0", "version-roles-seeding": "1.2.91" } }