From d8f690c1151df65bf00101fe8f4691fe7d695074 Mon Sep 17 00:00:00 2001 From: Guilherme Stark Date: Sun, 20 Jul 2025 17:34:06 +0200 Subject: [PATCH 01/12] added .env file to debug compose --- deployment/docker_debug/compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deployment/docker_debug/compose.yml b/deployment/docker_debug/compose.yml index 9911c0de..42704583 100644 --- a/deployment/docker_debug/compose.yml +++ b/deployment/docker_debug/compose.yml @@ -47,6 +47,8 @@ services: - "8083:80" networks: - backend + env_file: + - .env meetatmensa-client: build: From 532bffb3cc271424965fb164296c8554d076fcba Mon Sep 17 00:00:00 2001 From: Guilherme Stark Date: Sun, 20 Jul 2025 17:43:39 +0200 Subject: [PATCH 02/12] fix: Critical bugfix regarding overwriting clients --- .../matching/client/GenAiClient.java | 18 ++++-------------- .../matching/client/UserClient.java | 6 ++---- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/server/matching/src/main/java/meet_at_mensa/matching/client/GenAiClient.java b/server/matching/src/main/java/meet_at_mensa/matching/client/GenAiClient.java index cf338c30..05d8ceae 100644 --- a/server/matching/src/main/java/meet_at_mensa/matching/client/GenAiClient.java +++ b/server/matching/src/main/java/meet_at_mensa/matching/client/GenAiClient.java @@ -1,12 +1,9 @@ package meet_at_mensa.matching.client; -import org.openapitools.client.Configuration; import org.openapitools.client.api.GenAiApi; import org.springframework.stereotype.Service; import meet_at_mensa.matching.exception.RestException; -import meet_at_mensa.matching.repository.GroupRepository; -import meet_at_mensa.matching.service.ConversationStarterService; import org.openapitools.client.ApiClient; @@ -15,14 +12,8 @@ import org.openapitools.model.ConversationStarter; import org.openapitools.model.ConversationStarterCollection; -import org.openapitools.client.auth.*; - /** * GenAiClient uses the generated java client to handle REST requests to the GenAi-Microservice - * - * WARNING: This class is currently non-functional due to complications with Auth0 - * - * TODO: @AK - Implement Authentication * */ @Service @@ -32,8 +23,8 @@ public class GenAiClient { public GenAiClient() { - // get default client - this.defaultClient = Configuration.getDefaultApiClient(); + // get new client + this.defaultClient = new ApiClient(); // set path this.defaultClient.setBasePath("http://meetatmensa-genai:80"); @@ -44,9 +35,6 @@ public GenAiClient() { /** * Uses a Generated client to a REST request to genai-service for a ConverationStarterCollection object * - * WARNING: This currently fails due to missing authentication! - * - * TODO: @AK Figure out auth0 * * @param users server-style UserCollection object of the user being fetched * @return server-style ConversationStarterCollection object (org.openapitools.model.ConversationStarterCollection) @@ -56,6 +44,8 @@ public ConversationStarterCollection getPrompts(UserCollection users) { // create instance of the API GenAiApi apiInstance = new GenAiApi(this.defaultClient); + System.out.println("Users being sent:" + users.toString()); + try { // initiate object diff --git a/server/matching/src/main/java/meet_at_mensa/matching/client/UserClient.java b/server/matching/src/main/java/meet_at_mensa/matching/client/UserClient.java index ae3cdc88..00975395 100644 --- a/server/matching/src/main/java/meet_at_mensa/matching/client/UserClient.java +++ b/server/matching/src/main/java/meet_at_mensa/matching/client/UserClient.java @@ -4,8 +4,6 @@ import java.util.List; import org.openapitools.client.ApiClient; -import org.openapitools.client.Configuration; -import org.openapitools.client.auth.*; import org.openapitools.client.api.UserApi; import org.openapitools.model.User; @@ -28,8 +26,8 @@ public class UserClient { // Constructor public UserClient() { - // get default client - this.defaultClient = Configuration.getDefaultApiClient(); + // get new client + this.defaultClient = new ApiClient(); // set path this.defaultClient.setBasePath("http://meetatmensa-user:80"); From cc6c2534b56e97a967fef78ff2aeacb215013897 Mon Sep 17 00:00:00 2001 From: Guilherme Stark Date: Sun, 20 Jul 2025 18:02:25 +0200 Subject: [PATCH 03/12] spec: API v2.3.2 replace GenAi GET endpoint --- api/changelogs/changelog_v2_3_2.md | 21 +++++++++++++++++++++ api/openapi.yaml | 26 +++++++++++++------------- 2 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 api/changelogs/changelog_v2_3_2.md diff --git a/api/changelogs/changelog_v2_3_2.md b/api/changelogs/changelog_v2_3_2.md new file mode 100644 index 00000000..746f3289 --- /dev/null +++ b/api/changelogs/changelog_v2_3_2.md @@ -0,0 +1,21 @@ +## Info +### Version +v2.3.0 +### Date +2025-20-07 +### Autor +James Stark, Anastasiia Korzhylova +## Changelog: + +### Endpoints +- Replace @GET /api/v2/genai/conversation-starter endpoint with POST + + +``` diff + +@@ /api/v2/genai/conversation-starter @@ +- Remove GET endpoint ++ add POST endpoint +# fixes issue where GET request body is empty + +``` \ No newline at end of file diff --git a/api/openapi.yaml b/api/openapi.yaml index 4b8587c9..547142dd 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -3,7 +3,7 @@ x-stoplight: id: ceylawji1yc2t info: title: MeetAtMensa - version: 2.3.1 + version: 2.3.2 description: |- This OpenAPI specification defines the endpoints, schemas, and security mechanisms for the Meet@Mensa User micro-service. @@ -1009,10 +1009,9 @@ paths: parameters: - $ref: '#/components/parameters/match-id' /api/v2/genai/conversation-starter: - get: - summary: Request conversation starter - x-stoplight: - id: 2gb78xli5e55w + parameters: [] + post: + summary: Request Conversation Starter tags: - GenAI responses: @@ -1023,22 +1022,23 @@ paths: schema: $ref: '#/components/schemas/ConversationStarterCollection' '400': - $ref: '#/components/responses/BadRequestError' - '401': - $ref: '#/components/responses/UnauthorizedError' + description: Bad Request + '403': + description: Forbidden '404': - $ref: '#/components/responses/NotFoundError' + description: Not Found '500': description: Internal Server Error - operationId: get-api-v2-genai-conversation-starter + operationId: post-api-v2-genai-conversation-starter + x-stoplight: + id: dhdc3v3wiauk8 + description: Request a series of conversation starter prompts from the GenAI microservice. Provide infomation about users on request. requestBody: content: application/json: schema: $ref: '#/components/schemas/UserCollection' - description: Request Conversation starter for these users - description: Request a series of conversation starter prompts from the GenAI microservice. Provide infomation about users on request. - parameters: [] + description: '' '/api/v2/user/me/{auth-id}': parameters: - $ref: '#/components/parameters/auth-id' From b1cdd55ac884ca2972e911b63f7b6801d6fbc407 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 20 Jul 2025 16:12:07 +0000 Subject: [PATCH 04/12] gen: generate code and documentation based on latest version of openapi.yaml --- api/flags/flags.yaml | 2 +- client/src/api.ts | 35 ++++++++--- docs/api.html | 30 +++++---- server/gateway/generated-client/README.md | 18 +++--- .../gateway/generated-client/api/openapi.yaml | 20 +++--- server/gateway/generated-client/build.gradle | 2 +- server/gateway/generated-client/build.sbt | 2 +- .../gateway/generated-client/docs/GenAiApi.md | 24 +++---- server/gateway/generated-client/pom.xml | 2 +- .../org/openapitools/client/ApiCallback.java | 2 +- .../org/openapitools/client/ApiClient.java | 4 +- .../org/openapitools/client/ApiException.java | 4 +- .../org/openapitools/client/ApiResponse.java | 2 +- .../openapitools/client/Configuration.java | 6 +- .../client/GzipRequestInterceptor.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../java/org/openapitools/client/Pair.java | 4 +- .../client/ProgressRequestBody.java | 2 +- .../client/ProgressResponseBody.java | 2 +- .../client/ServerConfiguration.java | 4 +- .../openapitools/client/ServerVariable.java | 4 +- .../org/openapitools/client/StringUtil.java | 4 +- .../org/openapitools/client/api/GenAiApi.java | 62 +++++++++---------- .../openapitools/client/api/MatchingApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 4 +- .../client/auth/Authentication.java | 4 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 4 +- .../client/model/AbstractOpenApiSchema.java | 4 +- .../client/model/ConversationStarter.java | 4 +- .../model/ConversationStarterCollection.java | 4 +- .../org/openapitools/client/model/Group.java | 4 +- .../client/model/InviteStatus.java | 2 +- .../openapitools/client/model/Location.java | 2 +- .../org/openapitools/client/model/Match.java | 4 +- .../client/model/MatchCollection.java | 4 +- .../client/model/MatchPreferences.java | 4 +- .../client/model/MatchRequest.java | 4 +- .../client/model/MatchRequestCollection.java | 4 +- .../client/model/MatchRequestNew.java | 4 +- .../client/model/MatchRequestUpdate.java | 4 +- .../client/model/MatchStatus.java | 4 +- .../client/model/RequestStatus.java | 2 +- .../org/openapitools/client/model/User.java | 4 +- .../client/model/UserCollection.java | 4 +- .../openapitools/client/model/UserNew.java | 4 +- .../openapitools/client/model/UserUpdate.java | 4 +- server/gateway/generated/build.gradle | 2 +- server/gateway/generated/pom.xml | 2 +- .../java/org/openapitools/api/GenAiApi.java | 28 ++++----- .../org/openapitools/api/MatchingApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/ConversationStarter.java | 2 +- .../model/ConversationStarterCollection.java | 2 +- .../java/org/openapitools/model/Group.java | 2 +- .../org/openapitools/model/InviteStatus.java | 2 +- .../java/org/openapitools/model/Location.java | 2 +- .../java/org/openapitools/model/Match.java | 2 +- .../openapitools/model/MatchCollection.java | 2 +- .../openapitools/model/MatchPreferences.java | 2 +- .../org/openapitools/model/MatchRequest.java | 2 +- .../model/MatchRequestCollection.java | 2 +- .../openapitools/model/MatchRequestNew.java | 2 +- .../model/MatchRequestUpdate.java | 2 +- .../org/openapitools/model/MatchStatus.java | 2 +- .../org/openapitools/model/RequestStatus.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../openapitools/model/UserCollection.java | 2 +- .../java/org/openapitools/model/UserNew.java | 2 +- .../org/openapitools/model/UserUpdate.java | 2 +- server/matching/generated-client/README.md | 18 +++--- .../generated-client/api/openapi.yaml | 20 +++--- server/matching/generated-client/build.gradle | 2 +- server/matching/generated-client/build.sbt | 2 +- .../generated-client/docs/GenAiApi.md | 24 +++---- server/matching/generated-client/pom.xml | 2 +- .../org/openapitools/client/ApiCallback.java | 2 +- .../org/openapitools/client/ApiClient.java | 4 +- .../org/openapitools/client/ApiException.java | 4 +- .../org/openapitools/client/ApiResponse.java | 2 +- .../openapitools/client/Configuration.java | 6 +- .../client/GzipRequestInterceptor.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../java/org/openapitools/client/Pair.java | 4 +- .../client/ProgressRequestBody.java | 2 +- .../client/ProgressResponseBody.java | 2 +- .../client/ServerConfiguration.java | 4 +- .../openapitools/client/ServerVariable.java | 4 +- .../org/openapitools/client/StringUtil.java | 4 +- .../org/openapitools/client/api/GenAiApi.java | 62 +++++++++---------- .../openapitools/client/api/MatchingApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 4 +- .../client/auth/Authentication.java | 4 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 4 +- .../client/model/AbstractOpenApiSchema.java | 4 +- .../client/model/ConversationStarter.java | 4 +- .../model/ConversationStarterCollection.java | 4 +- .../org/openapitools/client/model/Group.java | 4 +- .../client/model/InviteStatus.java | 2 +- .../openapitools/client/model/Location.java | 2 +- .../org/openapitools/client/model/Match.java | 4 +- .../client/model/MatchCollection.java | 4 +- .../client/model/MatchPreferences.java | 4 +- .../client/model/MatchRequest.java | 4 +- .../client/model/MatchRequestCollection.java | 4 +- .../client/model/MatchRequestNew.java | 4 +- .../client/model/MatchRequestUpdate.java | 4 +- .../client/model/MatchStatus.java | 4 +- .../client/model/RequestStatus.java | 2 +- .../org/openapitools/client/model/User.java | 4 +- .../client/model/UserCollection.java | 4 +- .../openapitools/client/model/UserNew.java | 4 +- .../openapitools/client/model/UserUpdate.java | 4 +- server/matching/generated/build.gradle | 2 +- server/matching/generated/pom.xml | 2 +- .../java/org/openapitools/api/GenAiApi.java | 28 ++++----- .../org/openapitools/api/MatchingApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/ConversationStarter.java | 2 +- .../model/ConversationStarterCollection.java | 2 +- .../java/org/openapitools/model/Group.java | 2 +- .../org/openapitools/model/InviteStatus.java | 2 +- .../java/org/openapitools/model/Location.java | 2 +- .../java/org/openapitools/model/Match.java | 2 +- .../openapitools/model/MatchCollection.java | 2 +- .../openapitools/model/MatchPreferences.java | 2 +- .../org/openapitools/model/MatchRequest.java | 2 +- .../model/MatchRequestCollection.java | 2 +- .../openapitools/model/MatchRequestNew.java | 2 +- .../model/MatchRequestUpdate.java | 2 +- .../org/openapitools/model/MatchStatus.java | 2 +- .../org/openapitools/model/RequestStatus.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../openapitools/model/UserCollection.java | 2 +- .../java/org/openapitools/model/UserNew.java | 2 +- .../org/openapitools/model/UserUpdate.java | 2 +- server/user/generated-client/README.md | 18 +++--- server/user/generated-client/api/openapi.yaml | 20 +++--- server/user/generated-client/build.gradle | 2 +- server/user/generated-client/build.sbt | 2 +- server/user/generated-client/docs/GenAiApi.md | 24 +++---- server/user/generated-client/pom.xml | 2 +- .../org/openapitools/client/ApiCallback.java | 2 +- .../org/openapitools/client/ApiClient.java | 4 +- .../org/openapitools/client/ApiException.java | 4 +- .../org/openapitools/client/ApiResponse.java | 2 +- .../openapitools/client/Configuration.java | 6 +- .../client/GzipRequestInterceptor.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../java/org/openapitools/client/Pair.java | 4 +- .../client/ProgressRequestBody.java | 2 +- .../client/ProgressResponseBody.java | 2 +- .../client/ServerConfiguration.java | 4 +- .../openapitools/client/ServerVariable.java | 4 +- .../org/openapitools/client/StringUtil.java | 4 +- .../org/openapitools/client/api/GenAiApi.java | 62 +++++++++---------- .../openapitools/client/api/MatchingApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 4 +- .../client/auth/Authentication.java | 4 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 4 +- .../client/model/AbstractOpenApiSchema.java | 4 +- .../client/model/ConversationStarter.java | 4 +- .../model/ConversationStarterCollection.java | 4 +- .../org/openapitools/client/model/Group.java | 4 +- .../client/model/InviteStatus.java | 2 +- .../openapitools/client/model/Location.java | 2 +- .../org/openapitools/client/model/Match.java | 4 +- .../client/model/MatchCollection.java | 4 +- .../client/model/MatchPreferences.java | 4 +- .../client/model/MatchRequest.java | 4 +- .../client/model/MatchRequestCollection.java | 4 +- .../client/model/MatchRequestNew.java | 4 +- .../client/model/MatchRequestUpdate.java | 4 +- .../client/model/MatchStatus.java | 4 +- .../client/model/RequestStatus.java | 2 +- .../org/openapitools/client/model/User.java | 4 +- .../client/model/UserCollection.java | 4 +- .../openapitools/client/model/UserNew.java | 4 +- .../openapitools/client/model/UserUpdate.java | 4 +- server/user/generated/build.gradle | 2 +- server/user/generated/pom.xml | 2 +- .../java/org/openapitools/api/GenAiApi.java | 28 ++++----- .../org/openapitools/api/MatchingApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/ConversationStarter.java | 2 +- .../model/ConversationStarterCollection.java | 2 +- .../java/org/openapitools/model/Group.java | 2 +- .../org/openapitools/model/InviteStatus.java | 2 +- .../java/org/openapitools/model/Location.java | 2 +- .../java/org/openapitools/model/Match.java | 2 +- .../openapitools/model/MatchCollection.java | 2 +- .../openapitools/model/MatchPreferences.java | 2 +- .../org/openapitools/model/MatchRequest.java | 2 +- .../model/MatchRequestCollection.java | 2 +- .../openapitools/model/MatchRequestNew.java | 2 +- .../model/MatchRequestUpdate.java | 2 +- .../org/openapitools/model/MatchStatus.java | 2 +- .../org/openapitools/model/RequestStatus.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../openapitools/model/UserCollection.java | 2 +- .../java/org/openapitools/model/UserNew.java | 2 +- .../org/openapitools/model/UserUpdate.java | 2 +- 207 files changed, 539 insertions(+), 524 deletions(-) diff --git a/api/flags/flags.yaml b/api/flags/flags.yaml index ffdc847c..2de8bdda 100644 --- a/api/flags/flags.yaml +++ b/api/flags/flags.yaml @@ -3,4 +3,4 @@ # DO NOT CHANGE info: - version: 2.3.1 + version: 2.3.2 diff --git a/client/src/api.ts b/client/src/api.ts index ef2df0cd..81479a4d 100644 --- a/client/src/api.ts +++ b/client/src/api.ts @@ -201,13 +201,13 @@ export interface paths { path?: never; cookie?: never; }; + get?: never; + put?: never; /** - * Request conversation starter + * Request Conversation Starter * @description Request a series of conversation starter prompts from the GenAI microservice. Provide infomation about users on request. */ - get: operations["get-api-v2-genai-conversation-starter"]; - put?: never; - post?: never; + post: operations["post-api-v2-genai-conversation-starter"]; delete?: never; options?: never; head?: never; @@ -1071,14 +1071,13 @@ export interface operations { }; }; }; - "get-api-v2-genai-conversation-starter": { + "post-api-v2-genai-conversation-starter": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; - /** @description Request Conversation starter for these users */ requestBody?: { content: { "application/json": components["schemas"]["UserCollection"]; @@ -1094,9 +1093,27 @@ export interface operations { "application/json": components["schemas"]["ConversationStarterCollection"]; }; }; - 400: components["responses"]["BadRequestError"]; - 401: components["responses"]["UnauthorizedError"]; - 404: components["responses"]["NotFoundError"]; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Forbidden */ + 403: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Not Found */ + 404: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; /** @description Internal Server Error */ 500: { headers: { diff --git a/docs/api.html b/docs/api.html index 8f16f644..61097e80 100644 --- a/docs/api.html +++ b/docs/api.html @@ -344,11 +344,11 @@ .iPCVMX ..sc-jvKoal{color:#ffffff;}/*!sc*/ .iPCVMX:focus{box-shadow:inset 0 2px 2px rgba(0, 0, 0, 0.45),0 2px 0 rgba(128, 128, 128, 0.25);}/*!sc*/ data-styled.g113[id="sc-buTqWO"]{content:"iPCVMX,"}/*!sc*/ -.dynMBc{font-size:0.929em;line-height:20px;background-color:#2F8132;color:#ffffff;padding:3px 10px;text-transform:uppercase;font-family:Montserrat,sans-serif;margin:0;}/*!sc*/ .kwcmyC{font-size:0.929em;line-height:20px;background-color:#186FAF;color:#ffffff;padding:3px 10px;text-transform:uppercase;font-family:Montserrat,sans-serif;margin:0;}/*!sc*/ +.dynMBc{font-size:0.929em;line-height:20px;background-color:#2F8132;color:#ffffff;padding:3px 10px;text-transform:uppercase;font-family:Montserrat,sans-serif;margin:0;}/*!sc*/ .gKcHYQ{font-size:0.929em;line-height:20px;background-color:#cc3333;color:#ffffff;padding:3px 10px;text-transform:uppercase;font-family:Montserrat,sans-serif;margin:0;}/*!sc*/ .dBzsUh{font-size:0.929em;line-height:20px;background-color:#95507c;color:#ffffff;padding:3px 10px;text-transform:uppercase;font-family:Montserrat,sans-serif;margin:0;}/*!sc*/ -data-styled.g114[id="sc-fQLpxn"]{content:"dynMBc,kwcmyC,gKcHYQ,dBzsUh,"}/*!sc*/ +data-styled.g114[id="sc-fQLpxn"]{content:"kwcmyC,dynMBc,gKcHYQ,dBzsUh,"}/*!sc*/ .ga-DQLq{position:absolute;width:100%;z-index:100;background:#fafafa;color:#263238;box-sizing:border-box;box-shadow:0 0 6px rgba(0, 0, 0, 0.33);overflow:hidden;border-bottom-left-radius:4px;border-bottom-right-radius:4px;transition:all 0.25s ease;visibility:hidden;transform:translateY(-50%) scaleY(0);}/*!sc*/ data-styled.g115[id="sc-ecJghI"]{content:"ga-DQLq,"}/*!sc*/ .icOxsG{padding:10px;}/*!sc*/ @@ -406,7 +406,7 @@ -

MeetAtMensa (2.3.1)

Download OpenAPI specification:

MeetAtMensa (2.3.2)

Download OpenAPI specification:

This OpenAPI specification defines the endpoints, schemas, and security mechanisms for the Meet@Mensa User micro-service.

GenAI

Paths belonging to the GenAI microservice

-

Request conversation starter

Request Conversation Starter

Request a series of conversation starter prompts from the GenAI microservice. Provide infomation about users on request.

-
Authorizations:
jwt-bearer
Request Body schema: application/json

Request Conversation starter for these users

-
required
Array of objects (User)

Responses

Request samples

Content type
application/json
{
  • "users": [
    ]
}

Response samples

Content type
application/json
{
  • "conversationsStarters": [
    ]
}

Matching

Request samples

Content type
application/json
{
  • "users": [
    ]
}

Response samples

Content type
application/json
{
  • "conversationsStarters": [
    ]
}

Matching

Paths belonging to the Matching microservice

Submit matching Request

Submit a new matching request to the Matching-Service

@@ -780,7 +778,7 @@ " class="sc-eVqvcJ sc-fszimp sc-etsjJW kIppRw jnwENr ljKHqG">

Internal Server Error

Response samples

Content type
application/json
{
  • "users": [
    ]
}