From 53582f46ad33fadfb89b1551e0177728d435e3d6 Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Thu, 28 Aug 2025 22:43:55 +0100 Subject: [PATCH 01/11] add external source definition and runtime param --- .../common/params/Composition.yml | 35 +++++++++++++++++- .../components/CompositionBehavior.yml | 26 ++++--------- .../schemas/components/InjectionSource.yml | 37 +++++++++++++++++++ .../schemas/requestBodies/RunParams.yml | 4 +- 4 files changed, 81 insertions(+), 21 deletions(-) create mode 100644 specs/composition-full/common/schemas/components/InjectionSource.yml diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index 71f49754c41..be99a02a3f4 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -26,4 +26,37 @@ ruleContexts: default: [] example: [mobile] x-categories: - - Rules \ No newline at end of file + - Rules + +injectedItems: + type: array + items: + $ref: '#/externalInjectedItem' + description: | + A list of injected objectIDs into an external source. + default: [] + example: + [{'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}}] + x-categories: + - Advanced + +externalInjectedItem: + type: object + properties: + objectID: + type: string + metadata: + $ref: '#/injectedItemMetadata' + description: | + A list of injected objectIDs into an external source. + required: + - objectID + example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} + +injectedItemMetadata: + type: object + additionalProperties: true + description: | + User defined key-values that will be added to injected item in the response. + This is identical to Hits metadata which is defined in Composition or Composition Rule, with the benefit of being set at runtime. + example: {'my-value': 'my-field'} diff --git a/specs/composition-full/common/schemas/components/CompositionBehavior.yml b/specs/composition-full/common/schemas/components/CompositionBehavior.yml index dd08596a2d2..a607db7b9b7 100644 --- a/specs/composition-full/common/schemas/components/CompositionBehavior.yml +++ b/specs/composition-full/common/schemas/components/CompositionBehavior.yml @@ -54,25 +54,8 @@ injectedItem: type: string description: injected Item unique identifier. source: - title: injectedItemSource - type: object - additionalProperties: false - properties: - search: - title: injectedItemSourceSearch - type: object - additionalProperties: false - properties: - index: - type: string - description: Composition Main Index name. - example: Products - params: - $ref: './Injection.yml#/injectedItemsQueryParameters' - required: - - index - required: - - search + description: Search source to be used to inject items into result set. + $ref: '#/injectionSource' position: type: integer minimum: 0 @@ -103,3 +86,8 @@ injectedItem: - source - position - length + +injectionSource: + oneOf: + - $ref: './InjectionSource.yml#/search' + - $ref: './InjectionSource.yml#/external' diff --git a/specs/composition-full/common/schemas/components/InjectionSource.yml b/specs/composition-full/common/schemas/components/InjectionSource.yml new file mode 100644 index 00000000000..a562d656394 --- /dev/null +++ b/specs/composition-full/common/schemas/components/InjectionSource.yml @@ -0,0 +1,37 @@ +search: + title: injectedItemSearchSource + description: Injected items will originate from a search request performed on the specified index. + type: object + additionalProperties: false + allOf: + - $ref: '#/baseSource' + - type: object + additionalProperties: false + +external: + title: injectedItemExternalSource + description: Injected items will originate from externally provided objectIDs (that must exist in the index) given at runtime in the run request payload. + type: object + additionalProperties: false + allOf: + - $ref: '#/baseSource' + properties: + ordering: + $ref: '#/externalOrdering' + +baseSource: + type: object + additionalProperties: false + properties: + index: + type: string + description: Composition Index name. + example: Products + params: + $ref: './Injection.yml#/injectedItemsQueryParameters' + required: + - index + +externalOrdering: + enum: ['default', 'user-defined'] + default: 'default' diff --git a/specs/composition-full/common/schemas/requestBodies/RunParams.yml b/specs/composition-full/common/schemas/requestBodies/RunParams.yml index bdf7fb4a8ad..d37c129dc2a 100644 --- a/specs/composition-full/common/schemas/requestBodies/RunParams.yml +++ b/specs/composition-full/common/schemas/requestBodies/RunParams.yml @@ -54,4 +54,6 @@ params: enableABTest: $ref: '../../params/Composition.yml#/enableABTest' enableReRanking: - $ref: '../../params/Search.yml#/enableReRanking' \ No newline at end of file + $ref: '../../params/Search.yml#/enableReRanking' + injectedItems: + $ref: '../../params/Composition.yml#/injectedItems' From 82f84e53bbf2a458befc18fe513f8117906f30e9 Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Fri, 29 Aug 2025 16:52:33 +0100 Subject: [PATCH 02/11] fix injection description --- specs/composition-full/common/params/Composition.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index be99a02a3f4..a695f661b06 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -48,7 +48,7 @@ externalInjectedItem: metadata: $ref: '#/injectedItemMetadata' description: | - A list of injected objectIDs into an external source. + An objectID injected into an external source. required: - objectID example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} From 58ec1abde1b396805054aae57eb8661e41092421 Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Fri, 29 Aug 2025 17:26:17 +0100 Subject: [PATCH 03/11] reuse metadata from source --- .../common/params/Composition.yml | 10 +----- .../components/CompositionBehavior.yml | 35 ++++++++++--------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index a695f661b06..ad5d62fbe93 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -46,17 +46,9 @@ externalInjectedItem: objectID: type: string metadata: - $ref: '#/injectedItemMetadata' + $ref: '../schemas/components/CompositionBehavior.yml#/metadata' description: | An objectID injected into an external source. required: - objectID example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} - -injectedItemMetadata: - type: object - additionalProperties: true - description: | - User defined key-values that will be added to injected item in the response. - This is identical to Hits metadata which is defined in Composition or Composition Rule, with the benefit of being set at runtime. - example: {'my-value': 'my-field'} diff --git a/specs/composition-full/common/schemas/components/CompositionBehavior.yml b/specs/composition-full/common/schemas/components/CompositionBehavior.yml index a607db7b9b7..697d37ae754 100644 --- a/specs/composition-full/common/schemas/components/CompositionBehavior.yml +++ b/specs/composition-full/common/schemas/components/CompositionBehavior.yml @@ -65,22 +65,7 @@ injectedItem: minimum: 0 maximum: 20 metadata: - title: injectedItemMetadata - type: object - description: Used to add metadata to the results of the injectedItem. - properties: - hits: - title: injectedItemHitsMetadata - type: object - description: Adds the provided metadata to each injected hit via an `_extra` attribute. - properties: - addItemKey: - type: boolean - description: When true, the `_injectedItemKey` field is set in the `_extra` object of each affected hit. - extra: - type: object - additionalProperties: true - description: The user-defined key-value pairs that will be placed in the `_extra` field of each affected hit. + $ref: '#/metadata' required: - key - source @@ -91,3 +76,21 @@ injectionSource: oneOf: - $ref: './InjectionSource.yml#/search' - $ref: './InjectionSource.yml#/external' + +metadata: + title: injectedItemMetadata + type: object + description: Used to add metadata to the results of the injectedItem. + properties: + hits: + title: injectedItemHitsMetadata + type: object + description: Adds the provided metadata to each injected hit via an `_extra` attribute. + properties: + addItemKey: + type: boolean + description: When true, the `_injectedItemKey` field is set in the `_extra` object of each affected hit. + extra: + type: object + additionalProperties: true + description: The user-defined key-value pairs that will be placed in the `_extra` field of each affected hit. From 14b2b6a838f38af09ec5ea98b0cfa53e1962d1b0 Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Mon, 1 Sep 2025 09:55:29 +0100 Subject: [PATCH 04/11] code review fixes --- .../common/params/Composition.yml | 10 ++++- .../components/CompositionBehavior.yml | 39 +++++++++---------- .../schemas/components/InjectionSource.yml | 30 ++++++-------- 3 files changed, 38 insertions(+), 41 deletions(-) diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index ad5d62fbe93..a695f661b06 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -46,9 +46,17 @@ externalInjectedItem: objectID: type: string metadata: - $ref: '../schemas/components/CompositionBehavior.yml#/metadata' + $ref: '#/injectedItemMetadata' description: | An objectID injected into an external source. required: - objectID example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} + +injectedItemMetadata: + type: object + additionalProperties: true + description: | + User defined key-values that will be added to injected item in the response. + This is identical to Hits metadata which is defined in Composition or Composition Rule, with the benefit of being set at runtime. + example: {'my-value': 'my-field'} diff --git a/specs/composition-full/common/schemas/components/CompositionBehavior.yml b/specs/composition-full/common/schemas/components/CompositionBehavior.yml index 697d37ae754..1592835c818 100644 --- a/specs/composition-full/common/schemas/components/CompositionBehavior.yml +++ b/specs/composition-full/common/schemas/components/CompositionBehavior.yml @@ -55,7 +55,7 @@ injectedItem: description: injected Item unique identifier. source: description: Search source to be used to inject items into result set. - $ref: '#/injectionSource' + $ref: '#/injectedItemSource' position: type: integer minimum: 0 @@ -65,32 +65,29 @@ injectedItem: minimum: 0 maximum: 20 metadata: - $ref: '#/metadata' + title: injectedItemMetadata + type: object + description: Used to add metadata to the results of the injectedItem. + properties: + hits: + title: injectedItemHitsMetadata + type: object + description: Adds the provided metadata to each injected hit via an `_extra` attribute. + properties: + addItemKey: + type: boolean + description: When true, the `_injectedItemKey` field is set in the `_extra` object of each affected hit. + extra: + type: object + additionalProperties: true + description: The user-defined key-value pairs that will be placed in the `_extra` field of each affected hit. required: - key - source - position - length -injectionSource: +injectedItemSource: oneOf: - $ref: './InjectionSource.yml#/search' - $ref: './InjectionSource.yml#/external' - -metadata: - title: injectedItemMetadata - type: object - description: Used to add metadata to the results of the injectedItem. - properties: - hits: - title: injectedItemHitsMetadata - type: object - description: Adds the provided metadata to each injected hit via an `_extra` attribute. - properties: - addItemKey: - type: boolean - description: When true, the `_injectedItemKey` field is set in the `_extra` object of each affected hit. - extra: - type: object - additionalProperties: true - description: The user-defined key-value pairs that will be placed in the `_extra` field of each affected hit. diff --git a/specs/composition-full/common/schemas/components/InjectionSource.yml b/specs/composition-full/common/schemas/components/InjectionSource.yml index a562d656394..64867ea226e 100644 --- a/specs/composition-full/common/schemas/components/InjectionSource.yml +++ b/specs/composition-full/common/schemas/components/InjectionSource.yml @@ -3,10 +3,15 @@ search: description: Injected items will originate from a search request performed on the specified index. type: object additionalProperties: false - allOf: - - $ref: '#/baseSource' - - type: object - additionalProperties: false + properties: + index: + type: string + description: Composition Index name. + example: Products + params: + $ref: './Injection.yml#/injectedItemsQueryParameters' + required: + - index external: title: injectedItemExternalSource @@ -14,24 +19,11 @@ external: type: object additionalProperties: false allOf: - - $ref: '#/baseSource' + - $ref: '#/search' properties: ordering: $ref: '#/externalOrdering' -baseSource: - type: object - additionalProperties: false - properties: - index: - type: string - description: Composition Index name. - example: Products - params: - $ref: './Injection.yml#/injectedItemsQueryParameters' - required: - - index - externalOrdering: - enum: ['default', 'user-defined'] + enum: ['default', 'userDefined'] default: 'default' From 3fa203201b12b774d2155259753bffad329f5a8c Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Mon, 1 Sep 2025 14:54:32 +0100 Subject: [PATCH 05/11] Update external injected item specs for metadata Co-authored-by: Clara Muller <5667350+ClaraMuller@users.noreply.github.com> --- .../common/params/Composition.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index a695f661b06..549e0090b67 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -46,17 +46,16 @@ externalInjectedItem: objectID: type: string metadata: - $ref: '#/injectedItemMetadata' - description: | - An objectID injected into an external source. + type: object + additionalProperties: true + description: | + User-defined key-values that will be added to the injected item in the response. + This is identical to Hits metadata defined in Composition or Composition Rule, + with the benefit of being set at runtime. + example: {'my-field': 'my-value'} required: - objectID + description: | + An objectID injected into an external source. example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} -injectedItemMetadata: - type: object - additionalProperties: true - description: | - User defined key-values that will be added to injected item in the response. - This is identical to Hits metadata which is defined in Composition or Composition Rule, with the benefit of being set at runtime. - example: {'my-value': 'my-field'} From 8e0566aba5b8e9d53f30c1101a9a729e80822a4a Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Tue, 2 Sep 2025 09:26:50 +0100 Subject: [PATCH 06/11] fix injectedItemSource --- specs/composition-full/common/params/Composition.yml | 1 - .../common/schemas/components/CompositionBehavior.yml | 11 +++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index 549e0090b67..561e5612267 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -58,4 +58,3 @@ externalInjectedItem: description: | An objectID injected into an external source. example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} - diff --git a/specs/composition-full/common/schemas/components/CompositionBehavior.yml b/specs/composition-full/common/schemas/components/CompositionBehavior.yml index 1592835c818..1ff6be0be89 100644 --- a/specs/composition-full/common/schemas/components/CompositionBehavior.yml +++ b/specs/composition-full/common/schemas/components/CompositionBehavior.yml @@ -88,6 +88,13 @@ injectedItem: - length injectedItemSource: + type: object + additionalProperties: false + properties: + search: + $ref: './InjectionSource.yml#/search' + external: + $ref: './InjectionSource.yml#/external' oneOf: - - $ref: './InjectionSource.yml#/search' - - $ref: './InjectionSource.yml#/external' + - required: [search] + - required: [external] From bec4b2e608cf4fa1d9023751def2e0a0281e852e Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Tue, 2 Sep 2025 10:18:34 +0100 Subject: [PATCH 07/11] fix external missing `ordering` field --- .../common/schemas/components/InjectionSource.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/specs/composition-full/common/schemas/components/InjectionSource.yml b/specs/composition-full/common/schemas/components/InjectionSource.yml index 64867ea226e..0519db70ef3 100644 --- a/specs/composition-full/common/schemas/components/InjectionSource.yml +++ b/specs/composition-full/common/schemas/components/InjectionSource.yml @@ -20,6 +20,12 @@ external: additionalProperties: false allOf: - $ref: '#/search' + - $ref: '#/externalFields' + +externalFields: + title: externalSourceFields + type: object + additionalProperties: false properties: ordering: $ref: '#/externalOrdering' From 4a2c5964d585d7cdeb75d10bd98886ed763ecb7e Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Tue, 2 Sep 2025 12:44:30 +0100 Subject: [PATCH 08/11] add test examples --- .../composition-full/putComposition.json | 71 +++++++++++++++++++ .../CTS/requests/composition-full/search.json | 49 +++++++++++++ 2 files changed, 120 insertions(+) diff --git a/tests/CTS/requests/composition-full/putComposition.json b/tests/CTS/requests/composition-full/putComposition.json index 9f5f729498f..af1874b2118 100644 --- a/tests/CTS/requests/composition-full/putComposition.json +++ b/tests/CTS/requests/composition-full/putComposition.json @@ -61,5 +61,76 @@ } } } + }, + { + "parameters": { + "compositionID": "my-external-injection-compo", + "composition": { + "objectID": "my-external-injection-compo", + "name": "my first composition", + "behavior": { + "injection": { + "main": { + "source": { + "search": { + "index": "foo" + } + } + }, + "injectedItems": [ + { + "key": "injectedItem1", + "source": { + "external": { + "index": "foo", + "ordering": "userDefined", + "params": { + "filters": "brand:adidas" + } + } + }, + "position": 2, + "length": 1 + } + ] + } + } + } + }, + "request": { + "path": "/1/compositions/my-external-injection-compo", + "method": "PUT", + "body": { + "objectID": "my-external-injection-compo", + "name": "my first composition", + "behavior": { + "injection": { + "main": { + "source": { + "search": { + "index": "foo" + } + } + }, + "injectedItems": [ + { + "key": "injectedItem1", + "source": { + "external": { + "index": "foo", + "ordering": "userDefined", + "params": { + "filters": "brand:adidas" + } + } + }, + "position": 2, + "length": 1 + } + ] + } + } + } + } } ] diff --git a/tests/CTS/requests/composition-full/search.json b/tests/CTS/requests/composition-full/search.json index e8be0dcbf2f..367fd9378ac 100644 --- a/tests/CTS/requests/composition-full/search.json +++ b/tests/CTS/requests/composition-full/search.json @@ -13,5 +13,54 @@ "params": { "query": "batman" } } } + }, + { + "parameters": { + "compositionID": "foo", + "requestBody": { + "params": { + "query": "batman", + "injectedItems": { + "injectedItem1": { + "items": [ + { + "objectID": "my-object-1" + }, + { + "objectID": "my-object-2", + "metadata": { + "my-key": "my-value" + } + } + ] + } + } + } + } + }, + "request": { + "path": "/1/compositions/foo/run", + "method": "POST", + "body": { + "params": { + "query": "batman", + "injectedItems": { + "injectedItem1": { + "items": [ + { + "objectID": "my-object-1" + }, + { + "objectID": "my-object-2", + "metadata": { + "my-key": "my-value" + } + } + ] + } + } + } + } + } } ] From 78ec01ed6af786bce4e2da9a736765eb9e4e8f44 Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Tue, 2 Sep 2025 14:06:10 +0100 Subject: [PATCH 09/11] fix run param injectedItems --- .../common/params/Composition.yml | 47 ++++++++++--------- .../components/CompositionBehavior.yml | 11 +---- .../schemas/components/InjectionSource.yml | 10 ++-- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index 561e5612267..a474bcc6cb0 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -29,32 +29,37 @@ ruleContexts: - Rules injectedItems: - type: array - items: + type: object + additionalProperties: $ref: '#/externalInjectedItem' description: | - A list of injected objectIDs into an external source. - default: [] - example: - [{'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}}] + A list of extenrally injected objectID groups into from an external source. + default: {} x-categories: - Advanced externalInjectedItem: type: object properties: - objectID: - type: string - metadata: - type: object - additionalProperties: true - description: | - User-defined key-values that will be added to the injected item in the response. - This is identical to Hits metadata defined in Composition or Composition Rule, - with the benefit of being set at runtime. - example: {'my-field': 'my-value'} - required: - - objectID - description: | - An objectID injected into an external source. - example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} + items: + type: array + items: + title: externalInjectedItemsArray + type: object + additionalProperties: false + properties: + objectID: + type: string + description: An objectID injected into an external source. + metadata: + type: object + additionalProperties: true + description: | + User-defined key-values that will be added to the injected item in the response. + This is identical to Hits metadata defined in Composition or Composition Rule, + with the benefit of being set at runtime. + example: {'my-field': 'my-value'} + required: + - objectID + example: + {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} diff --git a/specs/composition-full/common/schemas/components/CompositionBehavior.yml b/specs/composition-full/common/schemas/components/CompositionBehavior.yml index 1ff6be0be89..f41bea4bc76 100644 --- a/specs/composition-full/common/schemas/components/CompositionBehavior.yml +++ b/specs/composition-full/common/schemas/components/CompositionBehavior.yml @@ -88,13 +88,6 @@ injectedItem: - length injectedItemSource: - type: object - additionalProperties: false - properties: - search: - $ref: './InjectionSource.yml#/search' - external: - $ref: './InjectionSource.yml#/external' oneOf: - - required: [search] - - required: [external] + - $ref: './InjectionSource.yml#/SearchSource' + - $ref: './InjectionSource.yml#/ExternalSource' diff --git a/specs/composition-full/common/schemas/components/InjectionSource.yml b/specs/composition-full/common/schemas/components/InjectionSource.yml index 0519db70ef3..425a5d745c6 100644 --- a/specs/composition-full/common/schemas/components/InjectionSource.yml +++ b/specs/composition-full/common/schemas/components/InjectionSource.yml @@ -1,5 +1,5 @@ -search: - title: injectedItemSearchSource +SearchSource: + title: search description: Injected items will originate from a search request performed on the specified index. type: object additionalProperties: false @@ -13,13 +13,13 @@ search: required: - index -external: - title: injectedItemExternalSource +ExternalSource: + title: external description: Injected items will originate from externally provided objectIDs (that must exist in the index) given at runtime in the run request payload. type: object additionalProperties: false allOf: - - $ref: '#/search' + - $ref: '#/SearchSource' - $ref: '#/externalFields' externalFields: From 983e482fa8b571a03550327a0ed2b0212c60a923 Mon Sep 17 00:00:00 2001 From: Ben Kalmus Date: Tue, 2 Sep 2025 14:48:49 +0100 Subject: [PATCH 10/11] add search|external layer --- .../schemas/components/InjectionSource.yml | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/specs/composition-full/common/schemas/components/InjectionSource.yml b/specs/composition-full/common/schemas/components/InjectionSource.yml index 425a5d745c6..ba1301582c7 100644 --- a/specs/composition-full/common/schemas/components/InjectionSource.yml +++ b/specs/composition-full/common/schemas/components/InjectionSource.yml @@ -4,31 +4,41 @@ SearchSource: type: object additionalProperties: false properties: - index: - type: string - description: Composition Index name. - example: Products - params: - $ref: './Injection.yml#/injectedItemsQueryParameters' - required: - - index + search: + title: searchSource + type: object + additionalProperties: false + properties: + index: + type: string + description: Composition Index name. + example: Products + params: + $ref: './Injection.yml#/injectedItemsQueryParameters' + required: + - index ExternalSource: title: external description: Injected items will originate from externally provided objectIDs (that must exist in the index) given at runtime in the run request payload. type: object additionalProperties: false - allOf: - - $ref: '#/SearchSource' - - $ref: '#/externalFields' - -externalFields: - title: externalSourceFields - type: object - additionalProperties: false properties: - ordering: - $ref: '#/externalOrdering' + external: + title: externalSource + type: object + additionalProperties: false + properties: + index: + type: string + description: Composition Index name. + example: Products + params: + $ref: './Injection.yml#/injectedItemsQueryParameters' + ordering: + $ref: '#/externalOrdering' + required: + - index externalOrdering: enum: ['default', 'userDefined'] From 9e653024af5846d80bd7e22504f2d058bf68f8c1 Mon Sep 17 00:00:00 2001 From: Pierre Millot Date: Tue, 2 Sep 2025 17:02:53 +0200 Subject: [PATCH 11/11] rename wrapper --- specs/composition-full/common/params/Composition.yml | 4 +++- .../common/schemas/components/InjectionSource.yml | 12 ++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/specs/composition-full/common/params/Composition.yml b/specs/composition-full/common/params/Composition.yml index a474bcc6cb0..cdd6669298f 100644 --- a/specs/composition-full/common/params/Composition.yml +++ b/specs/composition-full/common/params/Composition.yml @@ -44,7 +44,7 @@ externalInjectedItem: items: type: array items: - title: externalInjectedItemsArray + title: externalInjection type: object additionalProperties: false properties: @@ -63,3 +63,5 @@ externalInjectedItem: - objectID example: {'objectID': 'my-object-1', 'metadata': {'my-field': 'my-value'}} + required: + - items diff --git a/specs/composition-full/common/schemas/components/InjectionSource.yml b/specs/composition-full/common/schemas/components/InjectionSource.yml index ba1301582c7..6808ad6fefb 100644 --- a/specs/composition-full/common/schemas/components/InjectionSource.yml +++ b/specs/composition-full/common/schemas/components/InjectionSource.yml @@ -1,11 +1,11 @@ SearchSource: - title: search + title: searchSource description: Injected items will originate from a search request performed on the specified index. type: object additionalProperties: false properties: search: - title: searchSource + title: search type: object additionalProperties: false properties: @@ -17,15 +17,17 @@ SearchSource: $ref: './Injection.yml#/injectedItemsQueryParameters' required: - index + required: + - search ExternalSource: - title: external + title: externalSource description: Injected items will originate from externally provided objectIDs (that must exist in the index) given at runtime in the run request payload. type: object additionalProperties: false properties: external: - title: externalSource + title: external type: object additionalProperties: false properties: @@ -39,6 +41,8 @@ ExternalSource: $ref: '#/externalOrdering' required: - index + required: + - external externalOrdering: enum: ['default', 'userDefined']