{ "openapi": "3.1.1", "info": { "title": "FinalFactory.Rendezvous.Server | v1", "version": "1.0.0" }, "paths": { "/health/live": { "get": { "tags": [ "Health" ], "operationId": "GetLiveness", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthResponse" } } } } } } }, "/health/ready": { "get": { "tags": [ "Health" ], "operationId": "GetReadiness", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthResponse" } } } }, "503": { "description": "Service Unavailable" } } } }, "/v1/sessions": { "post": { "tags": [ "Sessions" ], "operationId": "RegisterSession", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterSessionRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterSessionResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "410": { "description": "Gone", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } }, "security": [ { "PublisherBearer": [ ] } ] }, "get": { "tags": [ "Sessions" ], "operationId": "BrowseSessions", "parameters": [ { "name": "contractVersion", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "gameId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "environmentId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "protocolVersion", "in": "query", "required": true, "schema": { "type": "integer", "format": "uint32" } }, { "name": "regionId", "in": "query", "schema": { "type": "string" } }, { "name": "pageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "excludeFull", "in": "query", "schema": { "type": "boolean" } }, { "name": "cursor", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowseSessionsResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } } } }, "/v1/sessions/{listingId}/renew": { "post": { "tags": [ "Sessions" ], "operationId": "RenewSessionLease", "parameters": [ { "name": "listingId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RenewLeaseRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RenewLeaseResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "410": { "description": "Gone", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } }, "security": [ { "PublisherBearer": [ ] } ] } }, "/v1/sessions/{listingId}": { "put": { "tags": [ "Sessions" ], "operationId": "UpdateSession", "parameters": [ { "name": "listingId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSessionRequest" } } }, "required": true }, "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } }, "security": [ { "PublisherBearer": [ ] } ] }, "delete": { "tags": [ "Sessions" ], "operationId": "DeleteSession", "parameters": [ { "name": "listingId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSessionRequest" } } }, "required": true }, "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } }, "security": [ { "PublisherBearer": [ ] } ] }, "get": { "tags": [ "Sessions" ], "operationId": "GetSession", "parameters": [ { "name": "listingId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "contractVersion", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "gameId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "environmentId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "protocolVersion", "in": "query", "required": true, "schema": { "type": "integer", "format": "uint32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSessionResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } } } }, "/v1/sessions/{listingId}/join-attempts": { "get": { "tags": [ "Sessions" ], "operationId": "BrowseHostJoinAttempts", "parameters": [ { "name": "listingId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "contractVersion", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "X-Rendezvous-Lease-Token", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "pageSize", "in": "query", "schema": { "type": "integer", "format": "int32" } }, { "name": "cursor", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowseHostJoinAttemptsResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } } } }, "/v1/join-attempts": { "post": { "tags": [ "Join attempts" ], "operationId": "CreateJoinAttempt", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateJoinAttemptRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateJoinAttemptResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } } } }, "/v1/join-attempts/{attemptId}": { "delete": { "tags": [ "Join attempts" ], "operationId": "CancelJoinAttempt", "parameters": [ { "name": "attemptId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "X-Rendezvous-Client-Punch-Capability", "in": "header", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } } } }, "/v1/join-attempts/{attemptId}/outcome": { "post": { "tags": [ "Join attempts" ], "operationId": "ReportConnectionOutcome", "parameters": [ { "name": "attemptId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportConnectionOutcomeRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportConnectionOutcomeResponse" } } } }, "501": { "description": "Not Implemented", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiError" } } } } } } } }, "components": { "schemas": { "AddressFamilyKind": { "enum": [ "ipv4", "ipv6" ] }, "ApiError": { "required": [ "contractVersion", "code", "message" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "code": { "$ref": "#/components/schemas/RendezvousErrorCode" }, "message": { "type": "string" }, "correlationId": { "type": [ "null", "string" ] }, "retryAfterSeconds": { "type": [ "null", "integer" ], "format": "int32" } } }, "BrowseHostJoinAttemptsResponse": { "required": [ "contractVersion", "items" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/HostJoinAttempt" } }, "nextCursor": { "type": [ "null", "string" ] } } }, "BrowseSessionsResponse": { "required": [ "contractVersion", "items" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/SessionListing" } }, "nextCursor": { "type": [ "null", "string" ] } } }, "ConnectionOutcomeKind": { "enum": [ "connected", "cancelled", "timedOut", "incompatibleProtocol", "staleHost", "serviceRejected", "hostRejected", "transportFailed", "fallbackOffered" ] }, "CreateJoinAttemptRequest": { "required": [ "contractVersion", "idempotencyKey", "gameId", "environmentId", "listingId", "protocolVersion" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "idempotencyKey": { "type": "string" }, "gameId": { "$ref": "#/components/schemas/GameId" }, "environmentId": { "$ref": "#/components/schemas/EnvironmentId" }, "listingId": { "$ref": "#/components/schemas/SessionListingId" }, "protocolVersion": { "type": "integer", "format": "uint32" } } }, "CreateJoinAttemptResponse": { "required": [ "contractVersion", "attemptId", "mediationHandle", "clientPunchCapability", "expiresAt" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "attemptId": { "$ref": "#/components/schemas/JoinAttemptId" }, "mediationHandle": { "$ref": "#/components/schemas/MediationHandle" }, "clientPunchCapability": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" }, "dedicatedFallback": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/NetworkEndpoint" } ] } } }, "DeleteSessionRequest": { "required": [ "contractVersion", "leaseToken" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "leaseToken": { "type": "string" } } }, "EnvironmentId": { "type": "string" }, "GameId": { "type": "string" }, "GetSessionResponse": { "required": [ "contractVersion", "session" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "session": { "$ref": "#/components/schemas/SessionListing" } } }, "HealthResponse": { "required": [ "contractVersion", "status" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "status": { "type": "string" } } }, "HostJoinAttempt": { "required": [ "attemptId", "mediationHandle", "hostPunchCapability", "expiresAt" ], "type": "object", "properties": { "attemptId": { "$ref": "#/components/schemas/JoinAttemptId" }, "mediationHandle": { "$ref": "#/components/schemas/MediationHandle" }, "hostPunchCapability": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" } } }, "JoinAttemptId": { "type": "string", "format": "uuid" }, "LeaseId": { "type": "string", "format": "uuid" }, "ListingVisibility": { "enum": [ "public", "unlisted" ] }, "MediationHandle": { "type": "string", "format": "uuid" }, "NetworkEndpoint": { "required": [ "addressFamily", "address", "port" ], "type": "object", "properties": { "addressFamily": { "$ref": "#/components/schemas/AddressFamilyKind" }, "address": { "type": "string" }, "port": { "type": "integer", "format": "int32" } } }, "PublisherTrustMode": { "enum": [ "managedDedicated", "playerGrant", "anonymousUnlisted" ] }, "RegionId": { "type": "string" }, "RegisterSessionRequest": { "required": [ "contractVersion", "idempotencyKey", "gameId", "environmentId", "regionId", "protocolVersion", "buildVersion", "displayName", "visibility", "capacity", "metadata" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "idempotencyKey": { "type": "string" }, "gameId": { "$ref": "#/components/schemas/GameId" }, "environmentId": { "$ref": "#/components/schemas/EnvironmentId" }, "regionId": { "$ref": "#/components/schemas/RegionId" }, "protocolVersion": { "type": "integer", "format": "uint32" }, "buildVersion": { "type": "string" }, "displayName": { "type": "string" }, "visibility": { "$ref": "#/components/schemas/ListingVisibility" }, "capacity": { "$ref": "#/components/schemas/SessionCapacity" }, "metadata": { "type": "object", "additionalProperties": { "type": "string" } } } }, "RegisterSessionResponse": { "required": [ "contractVersion", "listingId", "leaseId", "leaseToken", "hostPresenceHandle", "hostPresenceCapability", "expiresAt", "leaseRenewAfterSeconds", "hostPresenceRefreshAfterSeconds" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "listingId": { "$ref": "#/components/schemas/SessionListingId" }, "leaseId": { "$ref": "#/components/schemas/LeaseId" }, "leaseToken": { "type": "string" }, "hostPresenceHandle": { "$ref": "#/components/schemas/MediationHandle" }, "hostPresenceCapability": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" }, "leaseRenewAfterSeconds": { "type": "integer", "format": "int32" }, "hostPresenceRefreshAfterSeconds": { "type": "integer", "format": "int32" } } }, "RendezvousErrorCode": { "enum": [ "none", "invalidRequest", "unsupportedContractVersion", "incompatibleProtocol", "authenticationRequired", "forbidden", "notFound", "conflict", "rateLimited", "staleHost", "expired", "replayRejected", "capacityExceeded", "serviceUnavailable", "internalError" ] }, "RenewLeaseRequest": { "required": [ "contractVersion", "leaseToken" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "leaseToken": { "type": "string" } } }, "RenewLeaseResponse": { "required": [ "contractVersion", "expiresAt", "renewAfterSeconds" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "expiresAt": { "type": "string", "format": "date-time" }, "renewAfterSeconds": { "type": "integer", "format": "int32" } } }, "ReportConnectionOutcomeRequest": { "required": [ "contractVersion", "outcome", "elapsedMilliseconds" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "outcome": { "$ref": "#/components/schemas/ConnectionOutcomeKind" }, "elapsedMilliseconds": { "type": "integer", "format": "int32" }, "diagnosticCode": { "type": [ "null", "string" ] } } }, "ReportConnectionOutcomeResponse": { "required": [ "contractVersion", "accepted" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "accepted": { "type": "boolean" } } }, "SessionCapacity": { "required": [ "currentPlayers", "maximumPlayers" ], "type": "object", "properties": { "currentPlayers": { "type": "integer", "format": "int32" }, "maximumPlayers": { "type": "integer", "format": "int32" } } }, "SessionListing": { "required": [ "contractVersion", "listingId", "gameId", "environmentId", "regionId", "protocolVersion", "buildVersion", "displayName", "visibility", "publisherTrustMode", "capacity", "metadata" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "listingId": { "$ref": "#/components/schemas/SessionListingId" }, "gameId": { "$ref": "#/components/schemas/GameId" }, "environmentId": { "$ref": "#/components/schemas/EnvironmentId" }, "regionId": { "$ref": "#/components/schemas/RegionId" }, "protocolVersion": { "type": "integer", "format": "uint32" }, "buildVersion": { "type": "string" }, "displayName": { "type": "string" }, "visibility": { "$ref": "#/components/schemas/ListingVisibility" }, "publisherTrustMode": { "$ref": "#/components/schemas/PublisherTrustMode" }, "capacity": { "$ref": "#/components/schemas/SessionCapacity" }, "metadata": { "type": "object", "additionalProperties": { "type": "string" } } } }, "SessionListingId": { "type": "string", "format": "uuid" }, "UpdateSessionRequest": { "required": [ "contractVersion", "leaseToken", "buildVersion", "displayName", "capacity", "metadata" ], "type": "object", "properties": { "contractVersion": { "type": "integer", "format": "int32" }, "leaseToken": { "type": "string" }, "buildVersion": { "type": "string" }, "displayName": { "type": "string" }, "capacity": { "$ref": "#/components/schemas/SessionCapacity" }, "metadata": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "securitySchemes": { "PublisherBearer": { "type": "http", "description": "Tenant-scoped publisher credential issued during game provisioning.", "scheme": "bearer", "bearerFormat": "rv1 publisher credential" } } }, "tags": [ { "name": "Health" }, { "name": "Sessions" }, { "name": "Join attempts" } ] }