Files
Rendezvous/docs/api/rendezvous-v1.json
T
KyuubiYoru 69c8b2d2bc
quality-gate / quality (push) Successful in 51s
feat: freeze v1 transport contracts (#4)
Closes #4
2026-07-16 04:52:38 +02:00

1131 lines
26 KiB
JSON

{
"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"
}
}
}
},
"501": {
"description": "Not Implemented",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
}
}
},
"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": "cursor",
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrowseSessionsResponse"
}
}
}
},
"501": {
"description": "Not Implemented",
"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"
}
}
}
},
"501": {
"description": "Not Implemented",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
}
}
}
},
"/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"
},
"501": {
"description": "Not Implemented",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
}
}
},
"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"
},
"501": {
"description": "Not Implemented",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
}
}
},
"get": {
"tags": [
"Sessions"
],
"operationId": "GetSession",
"parameters": [
{
"name": "listingId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSessionResponse"
}
}
}
},
"501": {
"description": "Not Implemented",
"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"
}
}
}
},
"501": {
"description": "Not Implemented",
"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"
}
}
}
},
"501": {
"description": "Not Implemented",
"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"
],
"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"
}
}
},
"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"
],
"type": "object",
"properties": {
"contractVersion": {
"type": "integer",
"format": "int32"
},
"expiresAt": {
"type": "string",
"format": "date-time"
}
}
},
"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"
}
}
}
}
}
},
"tags": [
{
"name": "Health"
},
{
"name": "Sessions"
},
{
"name": "Join attempts"
}
]
}