feat: game lobby service

This commit is contained in:
Ilia Denisov
2026-04-25 23:20:55 +02:00
committed by GitHub
parent 32dc29359a
commit 48b0056b49
336 changed files with 57074 additions and 1418 deletions
+143
View File
@@ -91,9 +91,13 @@ components:
- lobby.application.submitted
- lobby.membership.approved
- lobby.membership.rejected
- lobby.membership.blocked
- lobby.invite.created
- lobby.invite.redeemed
- lobby.invite.expired
- lobby.race_name.registration_eligible
- lobby.race_name.registered
- lobby.race_name.registration_denied
description: |
Exact v1 notification type catalog. `lobby.invite.revoked`
deliberately remains outside the supported catalog because it
@@ -310,6 +314,21 @@ components:
payload_json:
contentSchema:
$ref: '#/components/schemas/LobbyMembershipRejectedPayload'
- if:
properties:
notification_type:
const: lobby.membership.blocked
required:
- notification_type
then:
properties:
producer:
const: game_lobby
audience_kind:
const: user
payload_json:
contentSchema:
$ref: '#/components/schemas/LobbyMembershipBlockedPayload'
- if:
properties:
notification_type:
@@ -355,6 +374,51 @@ components:
payload_json:
contentSchema:
$ref: '#/components/schemas/LobbyInviteExpiredPayload'
- if:
properties:
notification_type:
const: lobby.race_name.registration_eligible
required:
- notification_type
then:
properties:
producer:
const: game_lobby
audience_kind:
const: user
payload_json:
contentSchema:
$ref: '#/components/schemas/LobbyRaceNameRegistrationEligiblePayload'
- if:
properties:
notification_type:
const: lobby.race_name.registered
required:
- notification_type
then:
properties:
producer:
const: game_lobby
audience_kind:
const: user
payload_json:
contentSchema:
$ref: '#/components/schemas/LobbyRaceNameRegisteredPayload'
- if:
properties:
notification_type:
const: lobby.race_name.registration_denied
required:
- notification_type
then:
properties:
producer:
const: game_lobby
audience_kind:
const: user
payload_json:
contentSchema:
$ref: '#/components/schemas/LobbyRaceNameRegistrationDeniedPayload'
GeoReviewRecommendedPayload:
type: object
additionalProperties: true
@@ -491,6 +555,34 @@ components:
game_name:
type: string
minLength: 1
LobbyMembershipBlockedPayload:
type: object
additionalProperties: true
required:
- game_id
- game_name
- membership_user_id
- membership_user_name
- reason
properties:
game_id:
type: string
minLength: 1
game_name:
type: string
minLength: 1
membership_user_id:
type: string
minLength: 1
membership_user_name:
type: string
minLength: 1
reason:
type: string
minLength: 1
enum:
- permanent_blocked
- deleted
LobbyInviteCreatedPayload:
type: object
additionalProperties: true
@@ -554,3 +646,54 @@ components:
invitee_name:
type: string
minLength: 1
LobbyRaceNameRegistrationEligiblePayload:
type: object
additionalProperties: true
required:
- game_id
- game_name
- race_name
- eligible_until_ms
properties:
game_id:
type: string
minLength: 1
game_name:
type: string
minLength: 1
race_name:
type: string
minLength: 1
eligible_until_ms:
type: integer
minimum: 1
LobbyRaceNameRegisteredPayload:
type: object
additionalProperties: true
required:
- race_name
properties:
race_name:
type: string
minLength: 1
LobbyRaceNameRegistrationDeniedPayload:
type: object
additionalProperties: true
required:
- game_id
- game_name
- race_name
- reason
properties:
game_id:
type: string
minLength: 1
game_name:
type: string
minLength: 1
race_name:
type: string
minLength: 1
reason:
type: string
minLength: 1