From 1c0a8e5da38c5218f8e3ca8ef37447a817684dad Mon Sep 17 00:00:00 2001 From: Ben Greenbank <61185468+bengreenbank@users.noreply.github.com> Date: Mon, 7 Apr 2025 11:16:49 +0100 Subject: [PATCH 1/2] add realtime to config --- .../common/responses/FeatureNotEnabled.yml | 5 +++++ .../common/schemas/Configuration.yml | 13 +++++++++++++ .../common/schemas/ConfigurationObject.yml | 4 +++- .../common/schemas/ErrorCodes.yml | 5 +++++ .../common/schemas/ErrorMessages.yml | 7 +++++++ .../common/schemas/ErrorResponses.yml | 8 ++++++++ specs/advanced-personalization/paths/config.yml | 6 +++++- 7 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 specs/advanced-personalization/common/responses/FeatureNotEnabled.yml diff --git a/specs/advanced-personalization/common/responses/FeatureNotEnabled.yml b/specs/advanced-personalization/common/responses/FeatureNotEnabled.yml new file mode 100644 index 00000000000..04fcd8dab3e --- /dev/null +++ b/specs/advanced-personalization/common/responses/FeatureNotEnabled.yml @@ -0,0 +1,5 @@ +description: Feature not enabled. +content: + application/json: + schema: + $ref: '../schemas/ErrorResponses.yml#/featureNotEnabled' diff --git a/specs/advanced-personalization/common/schemas/Configuration.yml b/specs/advanced-personalization/common/schemas/Configuration.yml index 563a004d66a..cac9eb774f1 100644 --- a/specs/advanced-personalization/common/schemas/Configuration.yml +++ b/specs/advanced-personalization/common/schemas/Configuration.yml @@ -74,3 +74,16 @@ status: $ref: '../enums.yml#/errorCodes' lastUpdatedAt: type: string + +features: + type: object + properties: + realtime: + $ref: '#/realtime' + +realtime: + type: object + properties: + enabled: + type: bool + description: Whether the realtime personalization feature is enabled. diff --git a/specs/advanced-personalization/common/schemas/ConfigurationObject.yml b/specs/advanced-personalization/common/schemas/ConfigurationObject.yml index 12a04206160..84cf9aa0533 100644 --- a/specs/advanced-personalization/common/schemas/ConfigurationObject.yml +++ b/specs/advanced-personalization/common/schemas/ConfigurationObject.yml @@ -38,4 +38,6 @@ configurationObject: $ref: './Configuration.yml#/profileType' status: $ref: './Configuration.yml#/status' - required: [indices, personalzationReRanking, profileType, status] + features: + $ref: './Configuration.yml#/features' + required: [indices, personalzationReRanking, profileType, status, features] diff --git a/specs/advanced-personalization/common/schemas/ErrorCodes.yml b/specs/advanced-personalization/common/schemas/ErrorCodes.yml index 379faf1db2d..bb2530db380 100644 --- a/specs/advanced-personalization/common/schemas/ErrorCodes.yml +++ b/specs/advanced-personalization/common/schemas/ErrorCodes.yml @@ -8,6 +8,11 @@ unauthorized: description: HTTP status code for an authorization error. enum: [401] +paymentRequired: + type: integer + description: HTTP status code for a payment required error. + enum: [402] + notFound: type: integer description: HTTP status code for a not found error. diff --git a/specs/advanced-personalization/common/schemas/ErrorMessages.yml b/specs/advanced-personalization/common/schemas/ErrorMessages.yml index 960b883bdee..63876df49be 100644 --- a/specs/advanced-personalization/common/schemas/ErrorMessages.yml +++ b/specs/advanced-personalization/common/schemas/ErrorMessages.yml @@ -13,6 +13,13 @@ unauthorized: description: Details about the response, such as error messages. enum: [Unauthorized] +featureNotEnabled: + type: string + description: Details about the response, such as error messages. + enum: + - "Predictive profiles are not allowed for this app. Please contact support to upgrade your plan: https://support.algolia.com/" + - "Realtime Personalization is not allowed for this app. Please contact support to upgrade your plan: https://support.algolia.com/" + genericNotFound: type: string description: Details about the response, such as error messages. diff --git a/specs/advanced-personalization/common/schemas/ErrorResponses.yml b/specs/advanced-personalization/common/schemas/ErrorResponses.yml index 01891ad741d..52622715797 100644 --- a/specs/advanced-personalization/common/schemas/ErrorResponses.yml +++ b/specs/advanced-personalization/common/schemas/ErrorResponses.yml @@ -53,3 +53,11 @@ internalServerError: $ref: './ErrorCodes.yml#/internalServerError' message: $ref: './ErrorMessages.yml#/internalServerError' + +featureNotEnabled: + type: object + properties: + status: + $ref: './ErrorCodes.yml#/paymentRequired' + message: + $ref: './ErrorMessages.yml#/featureNotEnabled' diff --git a/specs/advanced-personalization/paths/config.yml b/specs/advanced-personalization/paths/config.yml index a1805757689..6cb0f749918 100644 --- a/specs/advanced-personalization/paths/config.yml +++ b/specs/advanced-personalization/paths/config.yml @@ -67,7 +67,9 @@ put: $ref: '../common/schemas/Configuration.yml#/personalizationReRanking' profileType: $ref: '../common/schemas/Configuration.yml#/profileType' - required: [indices, personalizationReRanking, profileType] + features: + $ref: '../common/schemas/Configuration.yml#/features' + required: [indices, personalizationReRanking, profileType, features] responses: '200': description: OK @@ -94,5 +96,7 @@ put: $ref: '../common/responses/BadRequest.yml' '401': $ref: '../common/responses/Unauthorized.yml' + '402': + $ref: '../common/responses/FeatureNotEnabled.yml' '500': $ref: '../common/responses/InternalServerError.yml' From 0c82511e1c36934ec7f77a746e70c605a5446a54 Mon Sep 17 00:00:00 2001 From: Ben Greenbank <61185468+bengreenbank@users.noreply.github.com> Date: Mon, 7 Apr 2025 11:19:41 +0100 Subject: [PATCH 2/2] fix boolean --- specs/advanced-personalization/common/schemas/Configuration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/advanced-personalization/common/schemas/Configuration.yml b/specs/advanced-personalization/common/schemas/Configuration.yml index cac9eb774f1..b330eef4670 100644 --- a/specs/advanced-personalization/common/schemas/Configuration.yml +++ b/specs/advanced-personalization/common/schemas/Configuration.yml @@ -85,5 +85,5 @@ realtime: type: object properties: enabled: - type: bool + type: boolean description: Whether the realtime personalization feature is enabled.