{ "host": "demo.accelbyte.io", "info": { "description": "Justice Session History Service", "title": "justice-session-history-service", "version": "1.14.5" }, "schemes": [ "https" ], "externalDocs": { "description": "API Docs", "url": "https://stage.accelbyte.io/sessionhistory/apidocs" }, "securityDefinitions": { "authorization": { "in": "header", "name": "Authorization", "type": "apiKey" } }, "swagger": "2.0", "paths": { "/sessionhistory/v2/admin/namespaces/{namespace}/xray/tickets": { "post": { "consumes": [ "application/json" ], "description": "Create ticket observability request\nRequest body details (all attributes are optional):\nTimestamp \t\t\t\t : timestamp when calling this endpoint \nAction \t\t\t\t : support one of the following value: \n\t\t\t\t\t\t 1. \u0026#34;matchFound\u0026#34;\n\t\t\t\t\t\t 2. \u0026#34;matchNotFound\u0026#34;\n\t\t\t\t\t\t 3. \u0026#34;flexed\u0026#34;\nTicketID\t\t\t\t : ticket ID \nMatchID\t\t\t\t\t : match ID will be filled only when match found\nNamespace \t : ticket current namespace\nGameMode \t : ticket current matchpool\nActiveAllianceRule \t : current active alliance ruleset \nActiveMatchingRule \t : current active matching ruleset\nFunction \t : name of the function that called the endpoint \nIteration \t : total iteration before match found\nTimeToMatchSec \t : time to match (in seconds) will be filled only when match found \nUnmatchReason \t : reason when unable to find match\nRemainingTickets \t : remaining ticket when unable to find match\nRemainingPlayersPerTicket : remaining players when unable to find match\nUnbackfillReason : reason when unable to backfill\nIsBackfillMatch \t : flag to distinguish between new match and backfill match\nIsRuleSetFlexed \t : flag if ruleset is getting flexed\nTickID \t\t : tick id for the matchmaking tick\nSessionTickID \t\t\t : session tick id for differentiate session when doing matches\n", "operationId": "createXrayTicketObservability", "parameters": [ { "description": "Create ticket observability request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.XRayTicketObservabilityRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.XRayTicketObservabilityResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create ticket observability request", "tags": [ "XRay" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:HISTORY [CREATE]" ] } ] } }, "/sessionhistory/v2/admin/namespaces/{namespace}/xray/tickets/bulk": { "post": { "consumes": [ "application/json" ], "description": "Create bulk ticket observability request\nRequest body details (all attributes are optional):\nTimestamp \t\t\t\t : timestamp when calling this endpoint \nAction \t\t\t\t : support one of the following value: \n\t\t\t\t\t\t 1. \u0026#34;matchFound\u0026#34;\n\t\t\t\t\t\t 2. \u0026#34;matchNotFound\u0026#34;\n\t\t\t\t\t\t 3. \u0026#34;flexed\u0026#34;\nPartyID\t\t\t\t\t : ticket Party ID \nMatchID\t\t\t\t\t : match ID will be filled only when match found\nNamespace \t : ticket current namespace\nGameMode \t : ticket current matchpool\nActiveAllianceRule \t : current active alliance ruleset \nActiveMatchingRule \t : current active matching ruleset\nFunction \t : name of the function that called the endpoint \nIteration \t : total iteration before match found\nTimeToMatchSec \t : time to match (in seconds) will be filled only when match found \nUnmatchReason \t : reason when unable to find match\nRemainingTickets \t : remaining ticket when unable to find match\nRemainingPlayersPerTicket : remaining players when unable to find match\nUnbackfillReason : reason when unable to backfill\nIsBackfillMatch \t : flag to distinguish between new match and backfill match\nIsRuleSetFlexed \t : flag if ruleset is getting flexed\nTickID \t\t : tick id for the matchmaking tick\nSessionTickID \t\t\t : session tick id for differentiate session when doing matches\n", "operationId": "createXrayBulkTicketObservability", "parameters": [ { "description": "Create bulk ticket observability request", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/apimodels.XRayBulkTicketObservabilityRequest" } }, { "description": "namespace of the game", "in": "path", "name": "namespace", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/apimodels.XRayBulkTicketObservabilityResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.Error" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.Error" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.Error" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.Error" } } }, "security": [ { "authorization": [] } ], "summary": "Create bulk ticket observability request", "tags": [ "XRay" ], "x-errorCodes": {}, "x-security": [ { "userPermissions": [ "ADMIN:NAMESPACE:{namespace}:SESSION:HISTORY [CREATE]" ] } ] } } }, "definitions": { "apimodels.XRayBulkTicketObservabilityRequest": { "properties": { "ticketObservabilities": { "items": { "$ref": "#/definitions/apimodels.XRayTicketObservabilityRequest" }, "type": "array" } }, "required": [ "ticketObservabilities" ] }, "apimodels.XRayBulkTicketObservabilityResponse": { "properties": { "ticketIDs": { "items": { "type": "string" }, "type": "array" } }, "required": [ "ticketIDs" ] }, "apimodels.XRayTicketObservabilityRequest": { "properties": { "action": { "type": "string" }, "activeAllianceRule": { "$ref": "#/definitions/models.AllianceRule" }, "activeMatchingRule": { "items": { "$ref": "#/definitions/models.MatchingRule" }, "type": "array" }, "function": { "type": "string" }, "gameMode": { "type": "string" }, "isBackfillMatch": { "type": "boolean", "x-omitempty": false }, "isRuleSetFlexed": { "type": "boolean", "x-omitempty": false }, "iteration": { "format": "int32", "type": "integer" }, "matchID": { "type": "string" }, "namespace": { "type": "string" }, "remainingPlayersPerTicket": { "items": { "format": "int32", "type": "integer" }, "type": "array" }, "remainingTickets": { "format": "int32", "type": "integer" }, "sessionTickID": { "type": "string" }, "tickID": { "format": "int64", "type": "integer" }, "ticketID": { "type": "string" }, "timeToMatchSec": { "format": "double", "type": "number" }, "timestamp": { "format": "date-time", "type": "string", "x-nullable": false }, "unbackfillReason": { "type": "string" }, "unmatchReason": { "type": "string" } }, "required": [ "action", "gameMode", "isBackfillMatch", "isRuleSetFlexed", "namespace", "sessionTickID", "tickID", "ticketID", "timestamp" ] }, "apimodels.XRayTicketObservabilityResponse": { "properties": { "ticketID": { "type": "string" } }, "required": [ "ticketID" ] }, "models.AllianceRule": { "properties": { "max_number": { "format": "int32", "type": "integer" }, "min_number": { "format": "int32", "type": "integer" }, "player_max_number": { "format": "int32", "type": "integer" }, "player_min_number": { "format": "int32", "type": "integer" } }, "required": [ "max_number", "min_number", "player_max_number", "player_min_number" ] }, "models.MatchingRule": { "properties": { "attribute": { "type": "string", "x-nullable": false }, "criteria": { "type": "string", "x-nullable": false }, "reference": { "format": "double", "type": "number", "x-nullable": false } }, "required": [ "attribute", "criteria", "reference" ] }, "response.Error": { "properties": { "attributes": { "additionalProperties": { "type": "string" }, "type": "object" }, "errorCode": { "format": "int32", "type": "integer" }, "errorMessage": { "type": "string" }, "message": { "type": "string" }, "name": { "type": "string" } }, "required": [ "attributes", "errorCode", "errorMessage", "message", "name" ] } }, "x-docs": { "alias": "sessionhistory", "host": "https://stage.accelbyte.io", "path": "/sessionhistory/apidocs/api.json" }, "x-version": { "buildDate": "2025-11-24T06:59:42+00:00", "gitHash": "bbc2880bb1323e685e3e5f9d1a88cc3bc22c3217", "version": "1.14.5", "version-roles-seeding": "1.2.102" } }