components: schemas: userView: type: object properties: id: type: string format: uuid username: type: string email: type: string experience: type: integer level: type: integer expToCurrentLevel: type: integer expToNextLevel: type: integer games: type: array items: $ref: "#/components/schemas/gameView" role: type: string enum: - user - creator - admin required: - id - username - email - experience - level - expToCurrentLevel - expToNextLevel - games - role gameView: type: object properties: id: type: string format: uuid visible: type: boolean title: type: string description: type: string type: $ref: "#/components/schemas/gameType" points: type: integer taskCount: type: integer createdAt: type: string authors: type: array items: $ref: "#/components/schemas/userView" icon: type: string format: uuid required: - id - title - description - type - points - taskCount - createdAt - authors taskView: type: object properties: message: type: string enum: - ok_code - invalid_code - old_code - next_level - game_complete title: type: string text: type: string codes: type: array items: $ref: "#/components/schemas/codeView" required: - title - text - codes codeView: type: object properties: description: type: string code: type: string gameEdit: type: object properties: id: type: string format: uuid visible: type: boolean title: type: string description: type: string type: $ref: "#/components/schemas/gameType" tasks: type: array items: $ref: "#/components/schemas/taskEdit" points: type: integer icon: type: string format: uuid required: - visible - title - description - type - tasks - points taskEdit: type: object properties: id: type: string format: uuid title: type: string text: type: string codes: type: array items: $ref: "#/components/schemas/codeEdit" required: - id - title - text - codes codeEdit: type: object properties: id: type: string format: uuid description: type: string code: type: string required: - code gameType: type: string enum: - virtual - city fileItem: type: object properties: id: type: string format: uuid originalName: type: string size: type: integer required: - id - originalName - size