From f53dda310a3a80a0a1c6973aa8ed558a1203d4cc Mon Sep 17 00:00:00 2001 From: Ben Greenbank <61185468+bengreenbank@users.noreply.github.com> Date: Fri, 6 Jun 2025 15:46:29 +0100 Subject: [PATCH 1/4] add new endpoint and amend existing endpoint --- specs/common/responses/Accepted.yml | 19 ++++++++++++++ specs/common/responses/Conflict.yml | 19 ++++++++++++++ specs/common/responses/TooManyRequests.yml | 19 ++++++++++++++ .../realtime-personalization/common/enums.yml | 1 + .../paths/computeUser.yml | 25 +++++++++++++++++++ .../paths/getUser.yml | 8 +++--- specs/realtime-personalization/spec.yml | 3 +++ 7 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 specs/common/responses/Accepted.yml create mode 100644 specs/common/responses/Conflict.yml create mode 100644 specs/common/responses/TooManyRequests.yml create mode 100644 specs/realtime-personalization/paths/computeUser.yml diff --git a/specs/common/responses/Accepted.yml b/specs/common/responses/Accepted.yml new file mode 100644 index 00000000000..d04bb44f8dd --- /dev/null +++ b/specs/common/responses/Accepted.yml @@ -0,0 +1,19 @@ +description: Accepted +content: + application/json: + schema: + title: acceptedResponse + type: object + additionalProperties: false + required: + - status + - message + properties: + status: + type: integer + example: 202 + description: Status code. + message: + type: string + example: Accepted + description: Response message. diff --git a/specs/common/responses/Conflict.yml b/specs/common/responses/Conflict.yml new file mode 100644 index 00000000000..54645531855 --- /dev/null +++ b/specs/common/responses/Conflict.yml @@ -0,0 +1,19 @@ +description: Success +content: + application/json: + schema: + title: acceptedResponse + type: object + additionalProperties: false + required: + - status + - message + properties: + status: + type: integer + example: 202 + description: Status code. + message: + type: string + example: Accepted + description: Response message. diff --git a/specs/common/responses/TooManyRequests.yml b/specs/common/responses/TooManyRequests.yml new file mode 100644 index 00000000000..ba7fe2ff85b --- /dev/null +++ b/specs/common/responses/TooManyRequests.yml @@ -0,0 +1,19 @@ +description: Too Many Requests +content: + application/json: + schema: + title: tooManyRequestsResponse + type: object + additionalProperties: false + required: + - status + - message + properties: + status: + type: integer + example: 421 + description: Status code. + message: + type: string + example: Too Many Requests + description: Response message. diff --git a/specs/realtime-personalization/common/enums.yml b/specs/realtime-personalization/common/enums.yml index dccbc0aca78..054ab2e1462 100644 --- a/specs/realtime-personalization/common/enums.yml +++ b/specs/realtime-personalization/common/enums.yml @@ -2,5 +2,6 @@ strategy: type: string enum: - session + - historical - hybrid example: 'session' diff --git a/specs/realtime-personalization/paths/computeUser.yml b/specs/realtime-personalization/paths/computeUser.yml new file mode 100644 index 00000000000..4bc2b761dc8 --- /dev/null +++ b/specs/realtime-personalization/paths/computeUser.yml @@ -0,0 +1,25 @@ +post: + tags: + - users + operationId: computeUser + x-acl: + - recommendation + summary: Compute the user's personalization profile + description: Sends a request to compute the user's personalization profile. + parameters: + - $ref: '../common/parameters.yml#/UserToken' + responses: + '202': + $ref: '../../common/responses/Accepted.yml' + '400': + $ref: '../../common/responses/BadRequest.yml' + '402': + $ref: '../../common/responses/FeatureNotEnabled.yml' + '409': + $ref: '../../common/responses/Conflict.yml' + '421': + $ref: '../../common/responses/TooManyRequests.yml' + '422': + $ref: '../../common/responses/StatusUnprocessableEntity.yml' + '500': + $ref: '../../common/responses/InternalError.yml' diff --git a/specs/realtime-personalization/paths/getUser.yml b/specs/realtime-personalization/paths/getUser.yml index ca49bccba94..b05cd321582 100644 --- a/specs/realtime-personalization/paths/getUser.yml +++ b/specs/realtime-personalization/paths/getUser.yml @@ -19,7 +19,7 @@ get: $ref: '../../common/responses/BadRequest.yml' '402': $ref: '../../common/responses/FeatureNotEnabled.yml' - '403': - $ref: '../../common/responses/MethodNotAllowed.yml' - '404': - $ref: '../../common/responses/IndexNotFound.yml' + '421': + $ref: '../../common/responses/TooManyRequests.yml' + '500': + $ref: '../../common/responses/InternalError.yml' diff --git a/specs/realtime-personalization/spec.yml b/specs/realtime-personalization/spec.yml index 533ad0ce343..1cdf3dcab60 100644 --- a/specs/realtime-personalization/spec.yml +++ b/specs/realtime-personalization/spec.yml @@ -49,3 +49,6 @@ paths: /2/realtime/users/{userToken}: $ref: 'paths/getUser.yml' + + /2/realtime/users/{userToken}/compute: + $ref: 'paths/computeUser.yml' From 447926dff3740bbe104948547ef5f5e797d45e4f Mon Sep 17 00:00:00 2001 From: Ben Greenbank <61185468+bengreenbank@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:02:05 +0100 Subject: [PATCH 2/4] fix --- specs/common/responses/Accepted.yml | 2 +- specs/common/responses/Conflict.yml | 8 ++++---- specs/common/responses/TooManyRequests.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/specs/common/responses/Accepted.yml b/specs/common/responses/Accepted.yml index d04bb44f8dd..b0c78412f5c 100644 --- a/specs/common/responses/Accepted.yml +++ b/specs/common/responses/Accepted.yml @@ -1,4 +1,4 @@ -description: Accepted +description: Accepted. content: application/json: schema: diff --git a/specs/common/responses/Conflict.yml b/specs/common/responses/Conflict.yml index 54645531855..e521f7d8971 100644 --- a/specs/common/responses/Conflict.yml +++ b/specs/common/responses/Conflict.yml @@ -1,8 +1,8 @@ -description: Success +description: Conflict. content: application/json: schema: - title: acceptedResponse + title: conflictResponse type: object additionalProperties: false required: @@ -11,9 +11,9 @@ content: properties: status: type: integer - example: 202 + example: 409 description: Status code. message: type: string - example: Accepted + example: Conflict description: Response message. diff --git a/specs/common/responses/TooManyRequests.yml b/specs/common/responses/TooManyRequests.yml index ba7fe2ff85b..80ccd70bfef 100644 --- a/specs/common/responses/TooManyRequests.yml +++ b/specs/common/responses/TooManyRequests.yml @@ -1,4 +1,4 @@ -description: Too Many Requests +description: Too Many Requests. content: application/json: schema: From 5de64f23d29a2570d1ac5b07bf0856724495213d Mon Sep 17 00:00:00 2001 From: Ben Greenbank <61185468+bengreenbank@users.noreply.github.com> Date: Thu, 12 Jun 2025 09:55:36 +0100 Subject: [PATCH 3/4] add historical filters --- specs/realtime-personalization/common/schemas/user.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/specs/realtime-personalization/common/schemas/user.yml b/specs/realtime-personalization/common/schemas/user.yml index bec1b795b8a..016325d09c8 100644 --- a/specs/realtime-personalization/common/schemas/user.yml +++ b/specs/realtime-personalization/common/schemas/user.yml @@ -42,3 +42,8 @@ searchFilter: items: type: string example: ['brand:Dyson'] + historical: + type: array + items: + type: string + example: ['brand:Dyson', 'category:electronics'] From 1c53ebfe7d0e30fbab5b28f91e67fb2299804ca1 Mon Sep 17 00:00:00 2001 From: Ben Greenbank <61185468+bengreenbank@users.noreply.github.com> Date: Thu, 12 Jun 2025 16:29:12 +0100 Subject: [PATCH 4/4] Revert "add historical filters" This reverts commit 5de64f23d29a2570d1ac5b07bf0856724495213d. --- specs/realtime-personalization/common/schemas/user.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/specs/realtime-personalization/common/schemas/user.yml b/specs/realtime-personalization/common/schemas/user.yml index 016325d09c8..bec1b795b8a 100644 --- a/specs/realtime-personalization/common/schemas/user.yml +++ b/specs/realtime-personalization/common/schemas/user.yml @@ -42,8 +42,3 @@ searchFilter: items: type: string example: ['brand:Dyson'] - historical: - type: array - items: - type: string - example: ['brand:Dyson', 'category:electronics']