From 9185367fcd7d95af89fac36dd892d8b064dbd94f Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 14 Feb 2026 20:32:47 +0900 Subject: feat(openapi): generate OpenAPI specs from TypeSpec sources Migrate hand-written OpenAPI YAML to TypeSpec (.tsp) source files. TypeSpec compiles to OpenAPI 3.0 YAML, enabling type-safe API definitions. - Add typespec/ directory with api-server and fortee definitions - Integrate TypeSpec build into `just gen` and `just build` pipelines - Update backend handler code to match new generated type names (inlined error responses, separate GameType/ProblemLanguage enums) - Regenerate frontend TypeScript types from new OpenAPI output Co-Authored-By: Claude Opus 4.6 --- openapi/fortee.yaml | 52 +++++++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 29 deletions(-) (limited to 'openapi/fortee.yaml') diff --git a/openapi/fortee.yaml b/openapi/fortee.yaml index 7e27f30..89a1842 100644 --- a/openapi/fortee.yaml +++ b/openapi/fortee.yaml @@ -2,30 +2,15 @@ openapi: 3.0.0 info: title: fortee API version: 0.1.0 +tags: [] paths: /api/user/login: post: operationId: postLogin - summary: User login - requestBody: - required: true - content: - application/x-www-form-urlencoded: - schema: - type: object - properties: - username: - type: string - example: "john" - password: - type: string - example: "password123" - required: - - username - - password + parameters: [] responses: '200': - description: Successfully authenticated + description: The request has succeeded. content: application/json: schema: @@ -33,30 +18,41 @@ paths: properties: loggedIn: type: boolean - example: true user: type: object properties: username: type: string - example: "john" required: - username required: - loggedIn + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + username: + type: string + password: + type: string + required: + - username + - password /api/user/view/{username}: get: operationId: getUser - summary: Get a user parameters: - - in: path - name: username + - name: username + in: path + required: true schema: type: string - required: true responses: '200': - description: User found + description: The request has succeeded. content: application/json: schema: @@ -64,16 +60,14 @@ paths: properties: uuid: type: string - example: "11111111-1111-1111-1111-111111111111" username: type: string - example: "john" avatar_url: type: string - example: "/files/_user/11111111-1111-1111-1111-111111111111.jpg" required: - uuid - username - avatar_url '404': - description: User not found + description: The server cannot find the requested resource. +components: {} -- cgit v1.3.1