From bf3233f7b8862f34a8c25b5946acfe9ee0afc8e5 Mon Sep 17 00:00:00 2001
From: Vyacheslav1557 <slavabirin1@yandex.ru>
Date: Fri, 28 Mar 2025 01:14:08 +0500
Subject: [PATCH] feat(tester): add endpoints

add GetMonitor&GetTask endpoints
---
 tester/v1/openapi.yaml | 183 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 181 insertions(+), 2 deletions(-)

diff --git a/tester/v1/openapi.yaml b/tester/v1/openapi.yaml
index 60d1757..14b854e 100644
--- a/tester/v1/openapi.yaml
+++ b/tester/v1/openapi.yaml
@@ -208,13 +208,32 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/AddTaskResponse'
+  /tasks/{id}:
+    get:
+      operationId: GetTask
+      security:
+        - bearerAuth: [ ]
+      parameters:
+        - name: id
+          in: path
+          required: true
+          schema:
+            type: integer
+            format: int32
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetTaskResponse'
     delete:
       operationId: DeleteTask
       security:
         - bearerAuth: [ ]
       parameters:
-        - name: task_id
-          in: query
+        - name: id
+          in: path
           required: true
           schema:
             type: integer
@@ -415,6 +434,25 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/GetSolutionResponse'
+  /monitor:
+    get:
+      operationId: GetMonitor
+      security:
+        - bearerAuth: [ ]
+      parameters:
+        - name: contest_id
+          in: query
+          required: true
+          schema:
+            type: integer
+            format: int32
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetMonitorResponse'
 components:
   schemas:
     Problem:
@@ -923,6 +961,147 @@ components:
       properties:
         solution:
           $ref: '#/components/schemas/Solution'
+    Task:
+      type: object
+      required:
+        - id
+        - position
+        - title
+        - time_limit
+        - memory_limit
+
+        - legend_html
+        - input_format_html
+        - output_format_html
+        - notes_html
+        - scoring_html
+
+        - created_at
+        - updated_at
+      properties:
+        id:
+          type: integer
+          format: int32
+        position:
+          type: integer
+          format: int32
+        title:
+          type: string
+        time_limit:
+          type: integer
+          format: int32
+        memory_limit:
+          type: integer
+          format: int32
+
+        legend_html:
+          type: string
+        input_format_html:
+          type: string
+        output_format_html:
+          type: string
+        notes_html:
+          type: string
+        scoring_html:
+          type: string
+
+        created_at:
+          type: string
+          format: date-time
+        updated_at:
+          type: string
+          format: date-time
+    GetTaskResponse:
+      type: object
+      required:
+        - task
+        - contest
+      properties:
+        contest:
+          type: object
+          required:
+            - id
+            - title
+            - tasks
+          properties:
+            id:
+              type: integer
+              format: int32
+            title:
+              type: string
+            tasks:
+              type: array
+              items:
+                $ref: '#/components/schemas/RichTask'
+        task:
+          $ref: '#/components/schemas/Task'
+    GetMonitorResponse:
+      type: object
+      required:
+        - contest
+        - participants
+        - summary_per_problem
+      properties:
+        contest:
+          type: object
+          required:
+            - id
+            - title
+            - tasks
+          properties:
+            id:
+              type: integer
+              format: int32
+            title:
+              type: string
+            tasks:
+              type: array
+              items:
+                $ref: '#/components/schemas/RichTask'
+        participants:
+          type: array
+          items:
+            type: object
+            required:
+              - id
+              - name
+              - solved_in_total
+              - penalty_in_total
+              - solutions
+            properties:
+              id:
+                type: integer
+                format: int32
+              name:
+                type: string
+              solved_in_total:
+                type: integer
+                format: int32
+              penalty_in_total:
+                type: integer
+                format: int32
+              solutions:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SolutionListItem'
+        summary_per_problem:
+          type: array
+          items:
+            type: object
+            required:
+              - id
+              - success
+              - total
+            properties:
+              id:
+                type: integer
+                format: int32
+              success:
+                type: integer
+                format: int32
+              total:
+                type: integer
+                format: int32
   securitySchemes:
     bearerAuth:
       type: http