{ "host": "demo.accelbyte.io", "info": { "description": "Justice Matchmaking Service", "title": "Justice Match Service v2", "version": "2.38.0" }, "schemes": [ "https" ], "externalDocs": { "description": "API Docs", "url": "https://stage.accelbyte.io/match2/apidocs" }, "securityDefinitions": { "authorization": { "in": "header", "name": "Authorization", "type": "apiKey" } }, "swagger": "2.0", "paths": { "/healthz": { "get": { "operationId": "GetHealthcheckInfo", "produces": [ "application/json" ], "responses": { "200": { "description": "OK" } }, "security": [ { "authorization": [] } ], "x-errorCodes": {} } }, "/match2/healthz": { "get": { "operationId": "GetHealthcheckInfoV1", "produces": [ "application/json" ], "responses": { "200": { "description": "OK" } }, "security": [ { "authorization": [] } ], "x-errorCodes": {} } }, "/match2/v1/admin/config/log": { "get": { "description": "Get Log Configuration.\u0026lt;br\u0026gt;", "operationId": "adminGetLogConfig", "produces": [ "application/json" ], "responses": { "200": { "description": "", "schema": { "$ref": "#/definitions/logconfig.Configuration" } } }, "security": [ { "authorization": [] } ], "summary": "Get Log Configuration", "tags": [ "Config" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:CONFIG:LOG [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Update Log Configuration.\u0026lt;br\u0026gt;", "operationId": "adminPatchUpdateLogConfig", "parameters": [ { "description": "Optional values can be omitted and will update partially", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/logconfig.Configuration" } } ], "produces": [ "application/json" ], "responses": { "200": { "description": "", "schema": { "$ref": "#/definitions/logconfig.Configuration" } } }, "security": [ { "authorization": [] } ], "summary": "Patch Update Log Configuration", "tags": [ "Config" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:CONFIG:LOG [UPDATE]" ] } ] } }, "/match2/v1/admin/namespaces/{namespace}/playfeatureflag": { "delete": { "consumes": [ "application/json" ], "description": "\n\t\t\t\tDelete matchmaking Play Feature Flag.\n\t\t\t\tDeleting the current namespace\u0026#39;s custom config only removes it from the database, the system will then use the environment variable defined in the ConfigMap instead.\n\t\t\t\t", "operationId": "adminDeletePlayFeatureFlag", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "admin Delete Play Feature Flag", "tags": [ "PlayFeatureFlag", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:PLAYFEATUREFLAG [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get matchmaking Play Feature Flag.", "operationId": "adminGetPlayFeatureFlag", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.PlayFeatureFlag" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "admin Play Feature Flag", "tags": [ "PlayFeatureFlag", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:PLAYFEATUREFLAG [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Upsert matchmaking Play Feature Flag.", "operationId": "adminUpsertPlayFeatureFlag", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/models.PlayFeatureFlag" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.PlayFeatureFlag" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "admin Upsert Play Feature Flag", "tags": [ "PlayFeatureFlag", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:PLAYFEATUREFLAG [UPDATE]" ] } ] } }, "/match2/v1/admin/namespaces/{namespace}/xray/config": { "get": { "consumes": [ "application/json" ], "description": "Get XRay config", "operationId": "adminGetXRayConfig", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.XRayConfigHttpResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Admin get XRay config", "tags": [ "XRay Config", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:XRAY [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Admin update XRay config", "operationId": "adminUpdateXRayConfig", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/models.XRayConfigHttpUpdateRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Admin update XRay config", "tags": [ "XRay Config", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:XRAY [UPDATE]" ] } ] } }, "/match2/v1/config": { "get": { "consumes": [ "application/json" ], "description": "Get matchmaking config of all namespaces. Will only return namespace configs than have been updated.", "operationId": "adminGetAllConfigV1", "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.NamespaceConfigList" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "admin get all namespaces config", "tags": [ "Config", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:*:MATCHMAKING:CONFIG [READ]" ] } ] } }, "/match2/v1/config/namespaces/{namespace}": { "get": { "consumes": [ "application/json" ], "description": "Get matchmaking config of a namespaces.", "operationId": "adminGetConfigV1", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/configmodels.NamespaceConfig" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "admin get namespace config", "tags": [ "Config", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:CONFIG [READ]" ] } ] }, "patch": { "consumes": [ "application/json" ], "description": "Patch update matchmaking config of a namespaces. Partially update matchmaking config, will only update value that defined on the request.", "operationId": "adminPatchConfigV1", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.PatchNamespaceConfigRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/configmodels.NamespaceConfig" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "admin patch update namespace config", "tags": [ "Config", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:CONFIG [UPDATE]" ] } ] } }, "/match2/v1/environment-variables": { "get": { "consumes": [ "application/json" ], "description": "List environment variables.\n", "operationId": "EnvironmentVariableList", "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.ListEnvironmentVariablesResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "List environment variables", "tags": [ "Environment-Variables", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:MATCHMAKING:CONFIGURATION:ENVIRONMENTVARIABLE [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/backfill": { "get": { "consumes": [ "application/json" ], "description": "Admin Query backfill ticket\n", "operationId": "AdminQueryBackfill", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "beginning of backfill ticket creation time range in RFC 3339 format e.g. 2022-10-21T07:20:50Z", "format": "date-time", "in": "query", "name": "fromTime", "type": "string", "x-nullable": true }, { "description": "backfill isActive flag", "in": "query", "name": "isActive", "type": "boolean", "x-omitempty": false }, { "default": 20, "description": "limit of the returned data", "in": "query", "name": "limit", "type": "integer" }, { "description": "ticket match pool", "in": "query", "name": "matchPool", "type": "string" }, { "description": "offset of the data", "in": "query", "name": "offset", "type": "integer" }, { "description": "player ID of the backfilled session (WARNING: slow)", "in": "query", "name": "playerID", "type": "string" }, { "description": "preferred region of the backfilled session (WARNING: slow)", "in": "query", "name": "region", "type": "string" }, { "description": "backfill Session ID", "in": "query", "name": "sessionID", "type": "string" }, { "description": "end of backfill ticket creation time range in RFC 3339 format e.g. 2022-10-21T07:20:50Z", "format": "date-time", "in": "query", "name": "toTime", "type": "string", "x-nullable": true } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ListBackfillQueryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Admin Query backfill ticket ", "tags": [ "Backfill", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:BACKFILL [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Create backfill ticket.\n", "operationId": "CreateBackfill", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.BackFillCreateRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/api.BackfillCreateResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create a backfill ticket", "tags": [ "Backfill", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:BACKFILL [CREATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/backfill/proposal": { "get": { "consumes": [ "application/json" ], "description": "Get backfill proposal\n", "operationId": "GetBackfillProposal", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Session ID information", "in": "query", "name": "sessionID", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.BackfillProposalResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get backfill proposal", "tags": [ "Backfill", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:BACKFILL [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/backfill/{backfillID}": { "delete": { "consumes": [ "application/json" ], "description": "Delete backfill ticket.\n", "operationId": "DeleteBackfill", "parameters": [ { "description": "backfill Ticket ID", "in": "path", "name": "backfillID", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "Created" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a backfill ticket", "tags": [ "Backfill", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:BACKFILL [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get backfill ticket by ID\n", "operationId": "GetBackfill", "parameters": [ { "description": "backfill Ticket ID", "in": "path", "name": "backfillID", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.BackfillGetResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get a backfill ticket", "tags": [ "Backfill", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:BACKFILL [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/backfill/{backfillID}/proposal/accept": { "put": { "consumes": [ "application/json" ], "description": " \tAccept backfill proposal.\nField **acceptedTicketIds** can be used to accept specific tickets within a backfill proposal. If the ticketIDs are not mentioned in this field, those tickets will be rejected and reactivated for future proposals. \nIf **acceptedTicketIds** is nil or not specified, then all tickets in the proposal will be accepted.\n", "operationId": "AcceptBackfill", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.BackFillAcceptRequest" } }, { "description": "backfill Ticket ID", "in": "path", "name": "backfillID", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/models.GameSession" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Accept a backfill proposal", "tags": [ "Backfill", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:BACKFILL [UPDATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/backfill/{backfillID}/proposal/reject": { "put": { "consumes": [ "application/json" ], "description": "Reject backfill proposal\n", "operationId": "RejectBackfill", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.backFillRejectRequest" } }, { "description": "backfill Ticket ID", "in": "path", "name": "backfillID", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Reject a backfill proposal", "tags": [ "Backfill", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:BACKFILL [UPDATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-functions": { "get": { "consumes": [ "application/json" ], "description": "List existing match functions.\n", "operationId": "MatchFunctionList", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.ListMatchFunctionsResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "List existing match functions", "tags": [ "Match-Functions", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:FUNCTIONS [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a new matchmaking function.\n", "operationId": "CreateMatchFunction", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.MatchFunctionRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create a match function", "tags": [ "Match-Functions", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:FUNCTIONS [CREATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-functions/{name}": { "delete": { "consumes": [ "application/json" ], "description": "Deletes an existing match function.\n", "operationId": "DeleteMatchFunction", "parameters": [ { "description": "name of the match function", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a match function", "tags": [ "Match-Functions", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:FUNCTIONS [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get custom match function by name.\n", "operationId": "MatchFunctionGet", "parameters": [ { "description": "name of the custom match function", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.MatchFunctionConfig" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get custom match function by name", "tags": [ "Match-Functions", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:FUNCTIONS [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Update existing matchmaking function.\n", "operationId": "UpdateMatchFunction", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.MatchFunctionRequest" } }, { "description": "name of the match function", "in": "path", "name": "name", "required": true, "type": "string" }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.MatchFunctionConfig" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update a match function", "tags": [ "Match-Functions", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:FUNCTIONS [UPDATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-pools": { "get": { "consumes": [ "application/json" ], "description": "List matchmaking pools.\n", "operationId": "MatchPoolList", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "description": "Match Pool name", "in": "query", "name": "name", "type": "string" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ListMatchPoolsResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "List match pools", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a new matchmaking pool.\n\nA pool is isolated from other pools (i.e. tickets may be matched with other tickets in the same pool, but not with tickets in other pools).\nEach pool has its own matchmaking rules and/or logic.\n\nticket_expiration_seconds and backfill_ticket_expiration_seconds will be set to 300 seconds (5 minutes) by default if not filled.\n\nMatch Function holds information about the name of the match logic server that matchmaking can refers to. By default we provide (\u0026#34;default\u0026#34; and \u0026#34;basic\u0026#34;). \nMatch Function will be used as reference value for Match Function Overrides if not set.\nIn case Customer would like to use matchmaking service default match logic, then specify it in \u0026#34;match_function_overrides\u0026#34;.\t\t\t\t\nThis sample configuration will let matchmaking service will use \u0026#34;default\u0026#34; match logic for make matches, while validation will hit both \u0026#34;default\u0026#34; and \u0026#34;custom\u0026#34; match logics.\ne.g.\n{ \n \u0026#34;match_function\u0026#34;: \u0026#34;custom\u0026#34;,\n \u0026#34;match_function_overrides\u0026#34;: {\n \u0026#34;validation\u0026#34;: []{\u0026#34;default\u0026#34;,\u0026#34;custom\u0026#34;},\n \u0026#34;make_matches\u0026#34;: \u0026#34;default\u0026#34;,\n }\n}\n", "operationId": "CreateMatchPool", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.MatchPool" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create a match pool", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL [CREATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-pools/{pool}": { "delete": { "consumes": [ "application/json" ], "description": "Deletes an existing matchmaking pool.\n", "operationId": "DeleteMatchPool", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a match pool", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get details for a specific match pool\n", "operationId": "MatchPoolDetails", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.MatchPool" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get details for a specific match pool", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates an existing matchmaking pool.\n\nticket_expiration_seconds and backfill_ticket_expiration_seconds will be set to 300 seconds (5 minutes) by default if not filled.\n\nMatch Function holds information about the name of the match logic server that matchmaking can refers to. By default we provide (\u0026#34;default\u0026#34; and \u0026#34;basic\u0026#34;). \nMatch Function will be used as reference value for Match Function Overrides if not set.\nIn case Customer would like to use matchmaking service default match logic, then specify it in \u0026#34;match_function_overrides\u0026#34;.\t\t\t\t\nThis sample configuration will let matchmaking service will use \u0026#34;default\u0026#34; match logic for make matches, while validation will hit both \u0026#34;default\u0026#34; and \u0026#34;custom\u0026#34; match logics.\ne.g.\n{\n\t\u0026#34;match_function\u0026#34;: \u0026#34;custom\u0026#34;,\n\t\u0026#34;match_function_overrides\u0026#34;: {\n\t\t\u0026#34;validation\u0026#34;: []{\u0026#34;default\u0026#34;,\u0026#34;custom\u0026#34;},\n\t\t\u0026#34;make_matches\u0026#34;: \u0026#34;default\u0026#34;,\n\t}\n}\n", "operationId": "UpdateMatchPool", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.MatchPoolConfig" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.MatchPool" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update a match pool", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL [UPDATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-pools/{pool}/metrics": { "get": { "consumes": [ "application/json" ], "description": "Get metric for a specific match pool\n\nResult: queueTime in seconds\n", "operationId": "MatchPoolMetric", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.TicketMetricResultRecord" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get metrics for a specific match pool", "tags": [ "Match-Pools", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL:METRICS [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-pools/{pool}/metrics/external-failure": { "post": { "consumes": [ "application/json" ], "description": "Post metrics for external flow failure in a specific match pool\n", "operationId": "PostMatchErrorMetric", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.ExternalFailureMetricRecord" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Post metrics for external flow failure in a specific match pool", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL:METRICS [CREATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-pools/{pool}/metrics/player": { "get": { "consumes": [ "application/json" ], "description": "Get player metric for a specific match pool\n", "operationId": "GetPlayerMetric", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.PlayerMetricRecord" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get metrics player for a specific match pool", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:POOL:METRICS [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-pools/{pool}/tickets": { "get": { "consumes": [ "application/json" ], "description": "Get tickets in queue for a specific match pool\n\nResult: number of tickets and list of ticket detail in a match pool.\n", "operationId": "adminGetMatchPoolTickets", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ListMatchPoolTicketsResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get tickets in queue for a specific match pool", "tags": [ "Match-Pools", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:MATCHMAKING:POOL:TICKETS [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-tickets": { "post": { "consumes": [ "application/json" ], "description": "Creates a new request for matchmaking.\n\nCross Platform: Allow player to play game with \u0026#34;all\u0026#34; registered platforms.\n1. Cross Platform can be enabled through session service or create match ticket. \n\ta. via ticket: specify several cross_platform on create match ticket attributes. **[DEPRECATED]** client should not send from attribute \u0026lt;code\u0026gt;cross_platform\u0026lt;/code\u0026gt; will be populated from backend\n\t This value will override player attributes in session service. e.g. cross_platform:[xbox,psn,steam]\n\tb. via session service: set player/party cross_platform attributes.\n\tc. Enable match options ruleset with name cross_platform and type \u0026#34;all\u0026#34;.\n\t```\n\t{\n\t\t\u0026#34;name\u0026#34;: \u0026#34;co-op\u0026#34;,\n\t\t\u0026#34;data\u0026#34;: {\n\t\t \u0026#34;alliance\u0026#34;: {\n\t\t\t\u0026#34;min_number\u0026#34;: 1,\n\t\t\t\u0026#34;max_number\u0026#34;: 1,\n\t\t\t\u0026#34;player_min_number\u0026#34;: 1,\n\t\t\t\u0026#34;player_max_number\u0026#34;: 4\n\t\t }, \n\t\t \u0026#34;match_options\u0026#34;: {\n\t\t\t\u0026#34;options\u0026#34;: [\n\t\t\t {\u0026#34;name\u0026#34;: \u0026#34;cross_platform\u0026#34;, \u0026#34;type\u0026#34;: \u0026#34;all\u0026#34;}\n\t\t\t]\n\t\t }\n\t\t}\n\t}\n\t```\n2. Cross Platform can be disabled from the matchpool configuration \u0026lt;code\u0026gt;crossplay_disabled=true\u0026lt;/code\u0026gt;\n3. When matchpool \u0026lt;code\u0026gt;crossplay_disabled=false\u0026lt;/code\u0026gt; \n\t* request attribute cross_platform is empty **[Recommended]**:\n\t\t* Matchmaking will consider Party leader \u0026lt;code\u0026gt;crossplayEnabled\u0026lt;/code\u0026gt; preference or Session attribute \u0026lt;code\u0026gt;crossplayEnabled\u0026lt;/code\u0026gt; preference.\n\t\t* When \u0026lt;code\u0026gt;crossplayEnabled=true\u0026lt;/code\u0026gt; \u0026lt;code\u0026gt;cross_platforms\u0026lt;/code\u0026gt; attributes will be populated from [active login methods](/iam/apidocs/#/Third%20Party%20Credential/RetrieveAllActiveThirdPartyLoginPlatformCredentialPublicV3) otherwise it will set to leader current platform\n\t\t* When \u0026lt;code\u0026gt;crossplayEnabled=false\u0026lt;/code\u0026gt; \u0026lt;code\u0026gt;cross_platforms\u0026lt;/code\u0026gt; attributes will be set to user\u0026#39;s currentPlatform\n\t* request attribute cross_platform is not empty **[Not Recommended]**:\n\t\t* Cross Platform can be disabled with specify only ONE cross_platform. Current matchmaking use this behavior. e.g. cross_platform:[xbox]\n\t\t* Multiple cross_platform values is considered to be crossplay enabled\n4. This behavior only works for Default Matchmaker. Custom matchmaker (custom gRPC matchmaker) need to consider this on its own implementation.\n\nExcludedSessions: allow player to list out game sessions that they want to avoid matching, for example a match that they\u0026#39;ve recently left or get kicked out from.\n", "operationId": "CreateMatchTicket", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.MatchTicketRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/api.MatchTicketResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found when the specified match pool does not exist", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create a matchmaking ticket", "tags": [ "Match-Tickets", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:TICKET [CREATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-tickets/me": { "get": { "consumes": [ "application/json" ], "description": "Get my match tickets.\n", "operationId": "GetMyMatchTickets", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "limit of the returned data", "in": "query", "name": "limit", "type": "integer" }, { "description": "ticket match pool", "in": "query", "name": "matchPool", "type": "string" }, { "description": "offset of the data", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.MatchTicketStatuses" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get my match tickets", "tags": [ "Match-Tickets", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:TICKET [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/match-tickets/{ticketid}": { "delete": { "consumes": [ "application/json" ], "description": "Deletes an existing matchmaking ticket.\n", "operationId": "DeleteMatchTicket", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "ID of the match ticket", "in": "path", "name": "ticketid", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "406": { "description": "Not Acceptable", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a match ticket", "tags": [ "Match-Tickets", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:TICKET [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get details for a specific match ticket\n", "operationId": "MatchTicketDetails", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "id of the ticket to get the status of", "in": "path", "name": "ticketid", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.MatchTicketStatus" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get details for a specific match ticket", "tags": [ "Match-Tickets", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:TICKET [READ]" ] } ] } }, "/match2/v1/namespaces/{namespace}/rulesets": { "get": { "consumes": [ "application/json" ], "description": "List rule sets.\n", "operationId": "RuleSetList", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "default": 20, "description": "Pagination limit", "in": "query", "name": "limit", "type": "integer" }, { "description": "Rule Set name", "in": "query", "name": "name", "type": "string" }, { "default": 0, "description": "Pagination offset", "in": "query", "name": "offset", "type": "integer" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.ListRuleSetsResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "List existing rule sets", "tags": [ "Rule-Sets", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:RULES [READ]" ] } ] }, "post": { "consumes": [ "application/json" ], "description": "Creates a new rules set.\n\nA rule set has a name and contains arbitrary data which is meaningful to some particular match function(s)\nThe name is used for a match pool to select the ruleset data that should be sent to the match function when matchmaking in that pool.\n\nTo use custom rules set please set enable_custom_match_function=true. Default (false).\n\nWhen custom enable_custom_match_function=true, the ruleset will only validate if the rule is valid json.\n", "operationId": "CreateRuleSet", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.RuleSetPayload" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "201": { "description": "Created" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create a match rule set", "tags": [ "Rule-Sets", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:RULES [CREATE]" ] } ] } }, "/match2/v1/namespaces/{namespace}/rulesets/{ruleset}": { "delete": { "consumes": [ "application/json" ], "description": "Deletes an existing rule set.\n", "operationId": "DeleteRuleSet", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the rule set", "in": "path", "name": "ruleset", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Delete a rule set", "tags": [ "Rule-Sets", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:RULES [DELETE]" ] } ] }, "get": { "consumes": [ "application/json" ], "description": "Get details for a specific rule set\n", "operationId": "RuleSetDetails", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the rule set", "in": "path", "name": "ruleset", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.RuleSetPayload" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get details for a specific rule set", "tags": [ "Rule-Sets", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:RULES [READ]" ] } ] }, "put": { "consumes": [ "application/json" ], "description": "Updates an existing matchmaking rule set.\n\t\nTo use custom rules set please set enable_custom_match_function=true. Default (false).\n\nWhen custom enable_custom_match_function=true, the ruleset will only validate if the rule is valid json.\n", "operationId": "UpdateRuleSet", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/api.RuleSetPayload" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match rule set", "in": "path", "name": "ruleset", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.RuleSetPayload" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Update a match rule set", "tags": [ "Rule-Sets", "admin" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:RULES [UPDATE]" ] } ] } }, "/match2/v1/public/namespaces/{namespace}/match-pools/{pool}/metrics/player": { "get": { "consumes": [ "application/json" ], "description": "Public get player metric for a specific match pool\n", "operationId": "PublicGetPlayerMetric", "parameters": [ { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" }, { "description": "Name of the match pool", "in": "path", "name": "pool", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "Created", "schema": { "$ref": "#/definitions/api.PlayerMetricRecord" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Get metrics player for a specific match pool", "tags": [ "Match-Pools", "public" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "NAMESPACE:{namespace}:MATCHMAKING:POOL:METRICS [READ]" ] } ] } }, "/match2/version": { "get": { "operationId": "versionCheckHandler", "responses": { "200": { "description": "OK" } }, "security": [ { "authorization": [] } ], "x-errorCodes": {} } } }, "definitions": { "api.BackFillAcceptRequest": { "properties": { "acceptedTicketIds": { "items": { "type": "string" }, "type": "array" }, "proposalId": { "type": "string" }, "stop": { "type": "boolean", "x-omitempty": false } }, "required": [ "proposalId", "stop" ] }, "api.BackFillCreateRequest": { "properties": { "matchPool": { "type": "string" }, "sessionId": { "type": "string" } }, "required": [ "matchPool", "sessionId" ] }, "api.BackfillCreateResponse": { "properties": { "id": { "type": "string" } }, "required": [ "id" ] }, "api.BackfillGetResponse": { "properties": { "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "matchPool": { "type": "string" }, "matchSessionID": { "type": "string" }, "partialMatch": { "$ref": "#/definitions/api.Match" }, "ticketID": { "type": "string" } } }, "api.BackfillProposalResponse": { "properties": { "backfillTicketID": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "matchPool": { "type": "string" }, "matchSessionID": { "type": "string" }, "proposalID": { "type": "string" }, "proposedTeams": { "items": { "$ref": "#/definitions/api.Team" }, "type": "array" }, "tickets": { "items": { "$ref": "#/definitions/api.Ticket" }, "type": "array" } } }, "api.ExternalFailureMetricRecord": { "properties": { "type": { "enum": [ "connectDS", "getExternalDS" ], "type": "string" } }, "required": [ "type" ] }, "api.ListBackfillQueryResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/api.BackfillGetResponse" }, "type": "array" }, "pagination": { "$ref": "#/definitions/models.Pagination" } }, "required": [ "data" ] }, "api.ListEnvironmentVariablesResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/config.EnvironmentVariable" }, "type": "array" } }, "required": [ "data" ] }, "api.ListMatchFunctionsResponse": { "properties": { "configs": { "items": { "$ref": "#/definitions/api.MatchFunctionConfig" }, "type": "array" }, "functions": { "items": { "type": "string" }, "type": "array" }, "pagination": { "$ref": "#/definitions/models.Pagination" } }, "required": [ "functions", "pagination" ] }, "api.ListMatchPoolTicketsResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/matchmaker.MatchTicketRecord" }, "type": "array" }, "pagination": { "$ref": "#/definitions/models.Pagination" }, "totalData": { "format": "int32", "type": "integer" } }, "required": [ "data", "totalData" ] }, "api.ListMatchPoolsResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/api.MatchPool" }, "type": "array" }, "pagination": { "$ref": "#/definitions/models.Pagination" } } }, "api.ListRuleSetsResponse": { "properties": { "data": { "items": { "$ref": "#/definitions/api.MatchRuleSetNameData" }, "type": "array" }, "pagination": { "$ref": "#/definitions/models.Pagination" } } }, "api.Match": { "properties": { "backfill": { "type": "boolean", "x-omitempty": false }, "clientVersion": { "type": "string" }, "matchAttributes": { "type": "object" }, "regionPreference": { "items": { "type": "string" }, "type": "array" }, "serverName": { "type": "string" }, "teams": { "items": { "$ref": "#/definitions/api.Team" }, "type": "array" }, "tickets": { "items": { "$ref": "#/definitions/api.Ticket" }, "type": "array" } } }, "api.MatchFunctionConfig": { "properties": { "match_function": { "type": "string" }, "serviceAppName": { "type": "string" }, "url": { "type": "string" } }, "required": [ "match_function", "url" ] }, "api.MatchFunctionOverride": { "properties": { "backfill_matches": { "type": "string" }, "enrichment": { "items": { "type": "string" }, "type": "array" }, "make_matches": { "type": "string" }, "stat_codes": { "items": { "type": "string" }, "type": "array" }, "validation": { "items": { "type": "string" }, "type": "array" } } }, "api.MatchFunctionRequest": { "properties": { "match_function": { "type": "string" }, "serviceAppName": { "type": "string" }, "url": { "type": "string" } }, "required": [ "match_function", "url" ] }, "api.MatchPool": { "properties": { "auto_accept_backfill_proposal": { "type": "boolean", "x-omitempty": false }, "backfill_proposal_expiration_seconds": { "format": "int32", "type": "integer" }, "backfill_ticket_expiration_seconds": { "format": "int32", "type": "integer" }, "best_latency_calculation_method": { "type": "string" }, "crossplay_disabled": { "type": "boolean", "x-omitempty": false }, "match_function": { "type": "string" }, "match_function_override": { "$ref": "#/definitions/api.MatchFunctionOverride" }, "name": { "type": "string" }, "platform_group_enabled": { "type": "boolean", "x-omitempty": false }, "rule_set": { "type": "string" }, "session_template": { "type": "string" }, "ticket_expiration_seconds": { "format": "int32", "type": "integer" } }, "required": [ "auto_accept_backfill_proposal", "backfill_proposal_expiration_seconds", "backfill_ticket_expiration_seconds", "match_function", "match_function_override", "name", "rule_set", "session_template", "ticket_expiration_seconds" ] }, "api.MatchPoolConfig": { "properties": { "auto_accept_backfill_proposal": { "type": "boolean", "x-omitempty": false }, "backfill_proposal_expiration_seconds": { "format": "int32", "type": "integer" }, "backfill_ticket_expiration_seconds": { "format": "int32", "type": "integer" }, "best_latency_calculation_method": { "type": "string" }, "crossplay_disabled": { "type": "boolean", "x-omitempty": false }, "match_function": { "type": "string" }, "match_function_override": { "$ref": "#/definitions/api.MatchFunctionOverride" }, "platform_group_enabled": { "type": "boolean", "x-omitempty": false }, "rule_set": { "type": "string" }, "session_template": { "type": "string" }, "ticket_expiration_seconds": { "format": "int32", "type": "integer" } }, "required": [ "auto_accept_backfill_proposal", "backfill_proposal_expiration_seconds", "backfill_ticket_expiration_seconds", "match_function", "match_function_override", "rule_set", "session_template", "ticket_expiration_seconds" ] }, "api.MatchRuleSetNameData": { "properties": { "name": { "type": "string" } }, "required": [ "name" ] }, "api.MatchTicketRequest": { "properties": { "attributes": { "type": "object" }, "excludedSessions": { "items": { "type": "string" }, "type": "array" }, "latencies": { "additionalProperties": { "type": "integer" }, "type": "object" }, "matchPool": { "type": "string" }, "sessionID": { "type": "string" }, "storage": { "description": "leader session storage", "type": "object" } }, "required": [ "attributes", "latencies", "matchPool" ] }, "api.MatchTicketResponse": { "properties": { "matchTicketID": { "type": "string" }, "queueTime": { "format": "int32", "type": "integer" } }, "required": [ "matchTicketID", "queueTime" ] }, "api.MatchTicketStatus": { "properties": { "isActive": { "type": "boolean", "x-omitempty": false }, "matchFound": { "type": "boolean", "x-omitempty": false }, "matchPool": { "type": "string" }, "matchTicketID": { "type": "string" }, "proposedProposal": { "$ref": "#/definitions/api.ProposedProposal" }, "sessionID": { "type": "string" } }, "required": [ "matchFound", "sessionID" ] }, "api.MatchTicketStatuses": { "properties": { "data": { "items": { "$ref": "#/definitions/api.MatchTicketStatus" }, "type": "array" }, "pagination": { "$ref": "#/definitions/models.Pagination" } }, "required": [ "data" ] }, "api.NamespaceConfigList": { "properties": { "configs": { "items": { "$ref": "#/definitions/configmodels.NamespaceConfig" }, "type": "array" } }, "required": [ "configs" ] }, "api.Party": { "properties": { "partyID": { "type": "string" }, "userIDs": { "items": { "type": "string" }, "type": "array" } } }, "api.PatchNamespaceConfigRequest": { "properties": { "crossPlatformNoCurrentPlatform": { "type": "boolean", "x-omitempty": false }, "extraPlatforms": { "description": "additional platforms that will be included in the cross_platform attribute alongside the login method", "items": { "type": "string" }, "type": "array" }, "matchAnyCommon": { "type": "boolean", "x-omitempty": false }, "platformGroup": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" }, "xrayMaxWhitelistedUserCount": { "format": "int32", "type": "integer" } } }, "api.PlayerData": { "properties": { "attributes": { "type": "object" }, "partyID": { "type": "string" }, "playerID": { "type": "string" } } }, "api.PlayerMetricRecord": { "properties": { "playerInQueue": { "format": "int32", "type": "integer" } }, "required": [ "playerInQueue" ] }, "api.ProposedProposal": { "properties": { "backfillID": { "type": "string" }, "proposalID": { "type": "string" }, "status": { "type": "string" } } }, "api.RuleSetPayload": { "properties": { "data": { "type": "object" }, "enable_custom_match_function": { "type": "boolean", "x-omitempty": false }, "name": { "type": "string" } }, "required": [ "data", "enable_custom_match_function", "name" ] }, "api.Team": { "properties": { "parties": { "items": { "$ref": "#/definitions/api.Party" }, "type": "array" }, "teamID": { "type": "string" }, "userIDs": { "items": { "type": "string" }, "type": "array" } } }, "api.Ticket": { "properties": { "createdAt": { "format": "date-time", "type": "string", "x-nullable": true }, "latencies": { "additionalProperties": { "type": "integer" }, "type": "object" }, "matchPool": { "type": "string" }, "namespace": { "type": "string" }, "partySessionID": { "type": "string" }, "players": { "items": { "$ref": "#/definitions/api.PlayerData" }, "type": "array" }, "ticketAttributes": { "type": "object" }, "ticketID": { "type": "string" } } }, "api.TicketMetricResultRecord": { "properties": { "queueTime": { "format": "int32", "type": "integer" } }, "required": [ "queueTime" ] }, "api.backFillRejectRequest": { "properties": { "proposalId": { "type": "string" }, "stop": { "type": "boolean", "x-omitempty": false } }, "required": [ "proposalId", "stop" ] }, "config.EnvironmentVariable": { "properties": { "actualValue": { "type": "string" }, "defaultValue": { "type": "string" }, "description": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ] }, "configmodels.NamespaceConfig": { "properties": { "crossPlatformNoCurrentPlatform": { "type": "boolean", "x-omitempty": false }, "extraPlatforms": { "items": { "type": "string" }, "type": "array" }, "matchAnyCommon": { "type": "boolean", "x-omitempty": false }, "namespace": { "type": "string" }, "platformGroup": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" }, "xrayMaxWhitelistedUserCount": { "format": "int32", "type": "integer" } }, "required": [ "namespace", "xrayMaxWhitelistedUserCount" ] }, "logconfig.Configuration": { "properties": { "logLevel": { "enum": [ "debug", "error", "fatal", "info", "panic", "trace", "warning" ], "type": "string" } } }, "matchmaker.MatchTicketRecord": { "properties": { "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "ExpiredAt": { "format": "date-time", "type": "string", "x-nullable": false }, "IsActive": { "type": "boolean", "x-omitempty": false }, "PartySessionID": { "type": "string" }, "ProposedProposal": { "$ref": "#/definitions/matchmaker.ProposedProposal" }, "SessionID": { "type": "string" }, "Ticket": { "$ref": "#/definitions/matchmaker.Ticket" }, "TicketID": { "type": "string" }, "UniqueTicketID": { "type": "string" } }, "required": [ "CreatedAt", "ExpiredAt", "IsActive", "PartySessionID", "ProposedProposal", "SessionID", "Ticket", "TicketID", "UniqueTicketID" ] }, "matchmaker.Party": { "properties": { "partyID": { "type": "string" }, "userIDs": { "items": { "type": "string" }, "type": "array" } } }, "matchmaker.ProposedProposal": { "properties": { "BackfillID": { "type": "string" }, "ProposalID": { "type": "string" }, "Status": { "type": "string" } }, "required": [ "BackfillID", "ProposalID", "Status" ] }, "matchmaker.Team": { "properties": { "Parties": { "items": { "$ref": "#/definitions/matchmaker.Party" }, "type": "array" }, "TeamID": { "type": "string" }, "UserIDs": { "items": { "type": "string" }, "type": "array" } } }, "matchmaker.Ticket": { "properties": { "CreatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "ExcludedSessions": { "items": { "type": "string" }, "type": "array" }, "IsActive": { "type": "boolean", "x-omitempty": false }, "IsPivot": { "type": "boolean", "x-omitempty": false }, "IsSinglePlay": { "type": "boolean", "x-omitempty": false }, "Latencies": { "additionalProperties": { "type": "integer" }, "type": "object" }, "MatchPool": { "type": "string" }, "MatchedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "Namespace": { "type": "string" }, "PartySessionID": { "type": "string" }, "Players": { "items": { "$ref": "#/definitions/player.PlayerData" }, "type": "array" }, "ProposedProposal": { "$ref": "#/definitions/matchmaker.ProposedProposal" }, "TicketAttributes": { "type": "object" }, "TicketID": { "type": "string" }, "TicketInformation": { "type": "object" } }, "required": [ "CreatedAt", "ExcludedSessions", "IsActive", "IsPivot", "IsSinglePlay", "Latencies", "MatchPool", "MatchedAt", "Namespace", "PartySessionID", "Players", "ProposedProposal", "TicketAttributes", "TicketID", "TicketInformation" ] }, "models.Configuration": { "properties": { "clientVersion": { "type": "string" }, "deployment": { "type": "string" }, "inactiveTimeout": { "format": "int32", "type": "integer" }, "inviteTimeout": { "format": "int32", "type": "integer" }, "joinability": { "type": "string" }, "maxPlayers": { "format": "int32", "type": "integer" }, "minPlayers": { "format": "int32", "type": "integer" }, "name": { "type": "string" }, "requestedRegions": { "items": { "type": "string" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "clientVersion", "deployment", "inactiveTimeout", "inviteTimeout", "joinability", "maxPlayers", "minPlayers", "name", "requestedRegions", "type" ] }, "models.DSInformation": { "properties": { "MinPlayers": { "format": "int32", "type": "integer" }, "RequestedAt": { "type": "string" }, "RequestedRegions": { "items": { "type": "string" }, "type": "array" }, "Server": { "$ref": "#/definitions/models.Server" }, "Status": { "type": "string" } }, "required": [ "MinPlayers", "RequestedAt", "RequestedRegions", "Server", "Status" ] }, "models.GameSession": { "properties": { "DSInformation": { "$ref": "#/definitions/models.DSInformation" }, "GameMode": { "type": "string" }, "IsFull": { "type": "boolean", "x-omitempty": false }, "JoinType": { "type": "string" }, "Members": { "items": { "$ref": "#/definitions/models.User" }, "type": "array" }, "attributes": { "type": "object" }, "backfillTicketID": { "type": "string" }, "configuration": { "$ref": "#/definitions/models.Configuration" }, "createdAt": { "format": "date-time", "type": "string", "x-nullable": false }, "id": { "type": "string" }, "leaderID": { "type": "string" }, "matchPool": { "type": "string" }, "namespace": { "type": "string" }, "teams": { "items": { "$ref": "#/definitions/matchmaker.Team" }, "type": "array" }, "updatedAt": { "format": "date-time", "type": "string", "x-nullable": false }, "version": { "format": "int32", "type": "integer" } }, "required": [ "DSInformation", "GameMode", "IsFull", "JoinType", "Members", "attributes", "backfillTicketID", "configuration", "createdAt", "id", "leaderID", "matchPool", "namespace", "teams", "updatedAt", "version" ] }, "models.Pagination": { "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "next": { "type": "string" }, "previous": { "type": "string" } }, "required": [ "first", "last", "next", "previous" ] }, "models.PlayFeatureFlag": { "properties": { "ENABLE_AUTO_CANCEL_MATCH_USER_DISCONNECT": { "type": "boolean", "x-omitempty": false }, "ENABLE_AUTO_CANCEL_MATCH_USER_LEAVE": { "type": "boolean", "x-omitempty": false } }, "required": [ "ENABLE_AUTO_CANCEL_MATCH_USER_DISCONNECT", "ENABLE_AUTO_CANCEL_MATCH_USER_LEAVE" ] }, "models.Server": { "properties": { "alternate_ips": { "items": { "type": "string" }, "type": "array" }, "custom_attribute": { "type": "string" }, "deployment": { "type": "string" }, "game_version": { "type": "string" }, "image_version": { "type": "string" }, "ip": { "type": "string" }, "is_override_game_version": { "type": "boolean", "x-omitempty": false }, "last_update": { "format": "date-time", "type": "string", "x-nullable": false }, "namespace": { "type": "string" }, "pod_name": { "type": "string" }, "port": { "format": "int32", "type": "integer" }, "ports": { "additionalProperties": { "type": "integer" }, "type": "object" }, "protocol": { "type": "string" }, "provider": { "type": "string" }, "region": { "type": "string" }, "session_id": { "type": "string" }, "status": { "type": "string" } }, "required": [ "alternate_ips", "custom_attribute", "deployment", "game_version", "image_version", "ip", "is_override_game_version", "last_update", "namespace", "pod_name", "port", "ports", "protocol", "provider", "region", "session_id", "status" ] }, "models.User": { "properties": { "ID": { "type": "string" }, "PlatformID": { "type": "string" }, "PlatformUserID": { "type": "string" }, "PreviousStatus": { "type": "string" }, "Status": { "type": "string" }, "StatusV2": { "type": "string" }, "UpdatedAt": { "format": "date-time", "type": "string", "x-nullable": false } }, "required": [ "ID", "PlatformID", "PlatformUserID", "Status", "StatusV2", "UpdatedAt" ] }, "models.XRayConfigHttpResponse": { "properties": { "whitelistedUsers": { "items": { "type": "string" }, "type": "array" } }, "required": [ "whitelistedUsers" ] }, "models.XRayConfigHttpUpdateRequest": { "properties": { "whitelistedUsers": { "items": { "type": "string" }, "type": "array" } }, "required": [ "whitelistedUsers" ] }, "player.PlayerData": { "properties": { "Attributes": { "type": "object" }, "PartyID": { "type": "string" }, "PlatformID": { "type": "string" }, "PlayerID": { "type": "string" } }, "required": [ "Attributes", "PartyID", "PlatformID", "PlayerID" ] }, "response.Error": { "properties": { "ErrorCode": { "format": "int32", "type": "integer", "x-nullable": false }, "ErrorMessage": { "type": "string", "x-nullable": false } }, "required": [ "ErrorCode", "ErrorMessage" ] } }, "x-docs": { "alias": "match2", "host": "https://stage.accelbyte.io", "path": "/match2/apidocs/api.json" }, "x-version": { "buildDate": "2025-11-19T03:55:01+00:00", "gitHash": "72bb1a1b8aca6d95051b0ea2b9c803cc180ff93f", "version": "2.38.0", "version-roles-seeding": "1.2.108" } }