curl
curl --request POST \
--url 'https://algolia_application_id.algolia.net/1/compositions/*/batch' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-algolia-api-key: ALGOLIA_API_KEY' \
--header 'x-algolia-application-id: ALGOLIA_APPLICATION_ID' \
--data '
{
"requests": [
{
"action": "upsert",
"body": {
"objectID": "my_composition_object_id",
"name": "my lovely crafted composition",
"description": "my lovely crafted composition that is used for X purpose",
"behavior": {
"injection": {
"main": {
"source": {
"search": {
"index": "Products",
"params": {
"advancedSyntax": false,
"advancedSyntaxFeatures": [
"exactPhrase",
"excludeWords"
],
"allowTyposOnNumericTokens": true,
"alternativesAsExact": [
"ignorePlurals",
"singleWordSynonym"
],
"attributeCriteriaComputedByMinProximity": false,
"attributesToHighlight": [
"author",
"title",
"conten",
"content"
],
"attributesToRetrieve": [
"author",
"title",
"content"
],
"attributesToSnippet": [
"content:80",
"description"
],
"clickAnalytics": false,
"disableExactOnAttributes": [
"description"
],
"disableTypoToleranceOnAttributes": [
"sku"
],
"distinct": 1,
"enableABTest": true,
"enablePersonalization": false,
"enableReRanking": true,
"enableRules": true,
"exactOnSingleWordQuery": "attribute",
"facetFilters": [
[
"category:Book",
"category:-Movie"
],
"author:John Doe"
],
"filters": "(category:Book OR category:Ebook) AND _tags:published",
"getRankingInfo": false,
"highlightPostTag": "</em>",
"highlightPreTag": "<em>",
"ignorePlurals": [
"ca",
"es"
],
"minProximity": 1,
"minWordSizefor1Typo": 4,
"minWordSizefor2Typos": 8,
"naturalLanguages": [],
"numericFilters": [
[
"inStock = 1",
"deliveryDate < 1441755506"
],
"price < 1000"
],
"optionalFilters": [
"category:Book",
"author:John Doe"
],
"optionalWords": "lorem",
"percentileComputation": true,
"personalizationImpact": 100,
"queryLanguages": [
"es"
],
"queryType": "prefixLast",
"removeStopWords": [
"ca",
"es"
],
"removeWordsIfNoResults": "firstWords",
"replaceSynonymsInHighlight": false,
"responseFields": [
"*"
],
"restrictHighlightAndSnippetArrays": false,
"restrictSearchableAttributes": [
"title",
"author"
],
"ruleContexts": [
"mobile"
],
"snippetEllipsisText": "…",
"synonyms": true,
"typoTolerance": true,
"facetingAfterDistinct": false,
"facets": [
"category",
"disjunctive(brand)",
"price"
],
"hitsPerPage": 20,
"maxValuesPerFacet": 100,
"renderingContent": {
"facetOrdering": {
"facets": {
"order": [
"lorem"
]
},
"values": {
"property1": {
"order": [
"lorem"
],
"sortRemainingBy": "count",
"hide": [
"lorem"
]
},
"property2": {
"order": [
"lorem"
],
"sortRemainingBy": "count",
"hide": [
"lorem"
]
}
}
},
"redirect": {
"url": "lorem"
},
"widgets": {
"banners": [
{
"image": {
"urls": [
{
"url": "lorem"
}
],
"title": "lorem"
},
"link": {
"url": "lorem"
}
}
],
"resultCard": {
"enabled": true
}
}
},
"sortFacetValuesBy": "count",
"sumOrFiltersScores": false
}
}
}
},
"injectedItems": [
{
"key": "lorem",
"source": {
"search": {
"index": "Products",
"params": {
"advancedSyntax": false,
"advancedSyntaxFeatures": [
"exactPhrase",
"excludeWords"
],
"allowTyposOnNumericTokens": true,
"alternativesAsExact": [
"ignorePlurals",
"singleWordSynonym"
],
"attributeCriteriaComputedByMinProximity": false,
"attributesToHighlight": [
"author",
"title",
"conten",
"content"
],
"attributesToRetrieve": [
"author",
"title",
"content"
],
"attributesToSnippet": [
"content:80",
"description"
],
"clickAnalytics": false,
"disableExactOnAttributes": [
"description"
],
"disableTypoToleranceOnAttributes": [
"sku"
],
"distinct": 1,
"enableABTest": true,
"enablePersonalization": false,
"enableReRanking": true,
"enableRules": true,
"exactOnSingleWordQuery": "attribute",
"facetFilters": [
[
"category:Book",
"category:-Movie"
],
"author:John Doe"
],
"filters": "(category:Book OR category:Ebook) AND _tags:published",
"getRankingInfo": false,
"highlightPostTag": "</em>",
"highlightPreTag": "<em>",
"ignorePlurals": [
"ca",
"es"
],
"minProximity": 1,
"minWordSizefor1Typo": 4,
"minWordSizefor2Typos": 8,
"naturalLanguages": [],
"numericFilters": [
[
"inStock = 1",
"deliveryDate < 1441755506"
],
"price < 1000"
],
"optionalFilters": [
"category:Book",
"author:John Doe"
],
"optionalWords": "lorem",
"percentileComputation": true,
"personalizationImpact": 100,
"queryLanguages": [
"es"
],
"queryType": "prefixLast",
"removeStopWords": [
"ca",
"es"
],
"removeWordsIfNoResults": "firstWords",
"replaceSynonymsInHighlight": false,
"responseFields": [
"*"
],
"restrictHighlightAndSnippetArrays": false,
"restrictSearchableAttributes": [
"title",
"author"
],
"ruleContexts": [
"mobile"
],
"snippetEllipsisText": "…",
"synonyms": true,
"typoTolerance": true
}
}
},
"position": 0,
"length": 0,
"metadata": {
"hits": {
"addItemKey": true,
"extra": {}
}
}
}
],
"deduplication": {
"positioning": "highest"
}
}
},
"sortingStrategy": {
"Price (asc)": "products-low-to-high",
"Price (desc)": "products-high-to-low"
}
}
}
]
}
'// Initialize the client
var client = new CompositionClient(
new CompositionConfig("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
);
// Call the API
var response = await client.MultipleBatchAsync(
new BatchParams
{
Requests = new List<MultipleBatchRequest>
{
new MultipleBatchRequest
{
Action = Enum.Parse<Action>("Upsert"),
Body = new BatchCompositionAction(
new Composition
{
ObjectID = "my-compo",
Name = "my composition",
Behavior = new CompositionBehavior(
new CompositionInjectionBehavior
{
Injection = new Injection
{
Main = new InjectionMain
{
Source = new InjectionMainSource(
new InjectionMainSearchSource
{
Search = new InjectionMainSearch { Index = "foo" },
}
),
},
InjectedItems = new List<InjectionInjectedItem>
{
new InjectionInjectedItem
{
Key = "my-unique-injected-item-key",
Source = new InjectedItemSource(
new InjectedItemSearchSource
{
Search = new InjectedItemSearch { Index = "foo" },
}
),
Position = 2,
Length = 1,
},
},
Deduplication = new Deduplication
{
Positioning = Enum.Parse<DedupPositioning>("Highest"),
},
},
}
),
}
),
},
},
}
);
// print the response
Console.WriteLine(response);// Initialize the client
final client = CompositionClient(
appId: 'ALGOLIA_APPLICATION_ID', apiKey: 'ALGOLIA_API_KEY');
// Call the API
final response = await client.multipleBatch(
batchParams: BatchParams(
requests: [
MultipleBatchRequest(
action: Action.fromJson("upsert"),
body: Composition(
objectID: "my-compo",
name: "my composition",
behavior: CompositionInjectionBehavior(
injection: Injection(
main: InjectionMain(
source: InjectionMainSearchSource(
search: InjectionMainSearch(
index: "foo",
),
),
),
injectedItems: [
InjectionInjectedItem(
key: "my-unique-injected-item-key",
source: InjectedItemSearchSource(
search: InjectedItemSearch(
index: "foo",
),
),
position: 2,
length: 1,
),
],
deduplication: Deduplication(
positioning: DedupPositioning.fromJson("highest"),
),
),
),
),
),
],
),
);
// print the response
print(response);// Initialize the client
client, err := composition.NewClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
if err != nil {
// The client can fail to initialize if you pass an invalid parameter.
panic(err)
}
// Call the API
response, err := client.MultipleBatch(client.NewApiMultipleBatchRequest(
composition.NewEmptyBatchParams().SetRequests(
[]composition.MultipleBatchRequest{
*composition.NewEmptyMultipleBatchRequest().SetAction(composition.Action("upsert")).SetBody(composition.CompositionAsBatchCompositionAction(
composition.NewEmptyComposition().SetObjectID("my-compo").SetName("my composition").SetBehavior(composition.CompositionInjectionBehaviorAsCompositionBehavior(
composition.NewEmptyCompositionInjectionBehavior().SetInjection(
composition.NewEmptyInjection().SetMain(
composition.NewEmptyInjectionMain().SetSource(composition.InjectionMainSearchSourceAsInjectionMainSource(
composition.NewEmptyInjectionMainSearchSource().SetSearch(
composition.NewEmptyInjectionMainSearch().SetIndex("foo"))))).SetInjectedItems(
[]composition.InjectionInjectedItem{*composition.NewEmptyInjectionInjectedItem().SetKey("my-unique-injected-item-key").SetSource(composition.InjectedItemSearchSourceAsInjectedItemSource(
composition.NewEmptyInjectedItemSearchSource().SetSearch(
composition.NewEmptyInjectedItemSearch().SetIndex("foo")))).SetPosition(2).SetLength(1)}).SetDeduplication(
composition.NewEmptyDeduplication().SetPositioning(composition.DedupPositioning("highest")))))))),
}),
))
if err != nil {
// handle the eventual error
panic(err)
}
// print the response
print(response)// Initialize the client
CompositionClient client = new CompositionClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");
// Call the API
MultipleBatchResponse response = client.multipleBatch(
new BatchParams().setRequests(
Arrays.asList(
new MultipleBatchRequest().setAction(Action.UPSERT).setBody(
new Composition()
.setObjectID("my-compo")
.setName("my composition")
.setBehavior(
new CompositionInjectionBehavior().setInjection(
new Injection()
.setMain(
new InjectionMain().setSource(new InjectionMainSearchSource().setSearch(new InjectionMainSearch().setIndex("foo")))
)
.setInjectedItems(
Arrays.asList(
new InjectionInjectedItem()
.setKey("my-unique-injected-item-key")
.setSource(new InjectedItemSearchSource().setSearch(new InjectedItemSearch().setIndex("foo")))
.setPosition(2)
.setLength(1)
)
)
.setDeduplication(new Deduplication().setPositioning(DedupPositioning.HIGHEST))
)
)
)
)
)
);
// print the response
System.out.println(response);// Initialize the client
const client = compositionClient('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
const response = await client.multipleBatch({
requests: [
{
action: 'upsert',
body: {
objectID: 'my-compo',
name: 'my composition',
behavior: {
injection: {
main: { source: { search: { index: 'foo' } } },
injectedItems: [
{ key: 'my-unique-injected-item-key', source: { search: { index: 'foo' } }, position: 2, length: 1 },
],
deduplication: { positioning: 'highest' },
},
},
},
},
],
});
// print the response
console.log(response);// Initialize the client
val client = CompositionClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
var response =
client.multipleBatch(
batchParams =
BatchParams(
requests =
listOf(
MultipleBatchRequest(
action = Action.entries.first { it.value == "upsert" },
body =
Composition(
objectID = "foo",
name = "my first composition",
behavior =
CompositionInjectionBehavior(
injection =
Injection(
main =
InjectionMain(
source =
InjectionMainSearchSource(
search = InjectionMainSearch(index = "bar")
)
)
)
),
),
),
MultipleBatchRequest(
action = Action.entries.first { it.value == "delete" },
body = DeleteCompositionAction(objectID = "baz"),
),
)
)
)
// print the response
println(response)// Initialize the client
$client = CompositionClient::create('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
$response = $client->multipleBatch(
['requests' => [
['action' => 'upsert',
'body' => ['objectID' => 'my-compo',
'name' => 'my composition',
'behavior' => ['injection' => ['main' => ['source' => ['search' => ['index' => 'foo',
],
],
],
'injectedItems' => [
['key' => 'my-unique-injected-item-key',
'source' => ['search' => ['index' => 'foo',
],
],
'position' => 2,
'length' => 1,
],
],
'deduplication' => ['positioning' => 'highest',
],
],
],
],
],
],
],
);
// print the response
var_dump($response);# Initialize the client
# In an asynchronous context, you can use CompositionClient instead, which exposes the exact same methods.
client = CompositionClientSync("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
response = client.multiple_batch(
batch_params={
"requests": [
{
"action": "upsert",
"body": {
"objectID": "my-compo",
"name": "my composition",
"behavior": {
"injection": {
"main": {
"source": {
"search": {
"index": "foo",
},
},
},
"injectedItems": [
{
"key": "my-unique-injected-item-key",
"source": {
"search": {
"index": "foo",
},
},
"position": 2,
"length": 1,
},
],
"deduplication": {
"positioning": "highest",
},
},
},
},
},
],
},
)
# print the response
print(response)# Initialize the client
client = Algolia::CompositionClient.create("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
response = client.multiple_batch(
Algolia::Composition::BatchParams.new(
requests: [
Algolia::Composition::MultipleBatchRequest.new(
action: "upsert",
body: Algolia::Composition::Composition.new(
algolia_object_id: "my-compo",
name: "my composition",
behavior: Algolia::Composition::CompositionInjectionBehavior.new(
injection: Algolia::Composition::Injection.new(
main: Algolia::Composition::InjectionMain.new(
source: Algolia::Composition::InjectionMainSearchSource.new(
search: Algolia::Composition::InjectionMainSearch.new(index: "foo")
)
),
injected_items: [
Algolia::Composition::InjectionInjectedItem.new(
key: "my-unique-injected-item-key",
source: Algolia::Composition::InjectedItemSearchSource.new(
search: Algolia::Composition::InjectedItemSearch.new(index: "foo")
),
position: 2,
length: 1
)
],
deduplication: Algolia::Composition::Deduplication.new(positioning: "highest")
)
)
)
)
]
)
)
# print the response
puts(response)// Initialize the client
val client = CompositionClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
val response = Await.result(
client.multipleBatch(
batchParams = BatchParams(
requests = Seq(
MultipleBatchRequest(
action = Action.withName("upsert"),
body = Composition(
objectID = "my-compo",
name = "my composition",
behavior = CompositionInjectionBehavior(
injection = Injection(
main = InjectionMain(
source = Some(
InjectionMainSearchSource(
search = InjectionMainSearch(
index = "foo"
)
)
)
),
injectedItems = Some(
Seq(
InjectionInjectedItem(
key = "my-unique-injected-item-key",
source = InjectedItemSearchSource(
search = InjectedItemSearch(
index = "foo"
)
),
position = 2,
length = 1
)
)
),
deduplication = Some(
Deduplication(
positioning = DedupPositioning.withName("highest")
)
)
)
)
)
)
)
)
),
Duration(100, "sec")
)
// print the response
println(response)// Initialize the client
let client = try CompositionClient(appID: "ALGOLIA_APPLICATION_ID", apiKey: "ALGOLIA_API_KEY")
// Call the API
let response = try await client
.multipleBatch(batchParams: CompositionBatchParams(requests: [CompositionMultipleBatchRequest(
action: CompositionAction.upsert,
body: BatchCompositionAction.composition(Composition(
objectID: "my-compo",
name: "my composition",
behavior: CompositionBehavior
.compositionInjectionBehavior(CompositionInjectionBehavior(injection: Injection(
main: InjectionMain(source: InjectionMainSource
.injectionMainSearchSource(
InjectionMainSearchSource(search: InjectionMainSearch(index: "foo"))
)),
injectedItems: [InjectionInjectedItem(
key: "my-unique-injected-item-key",
source: InjectedItemSource
.injectedItemSearchSource(
InjectedItemSearchSource(search: InjectedItemSearch(index: "foo"))
),
position: 2,
length: 1
)],
deduplication: Deduplication(positioning: DedupPositioning.highest)
)))
))
)]))
// print the response
print(response){
"taskID": {}
}{
"message": "Invalid Application-Id or API-Key"
}{
"message": "Invalid Application-Id or API-Key"
}{
"message": "Invalid Application-Id or API-Key"
}{
"message": "Invalid Application-Id or API-Key"
}Composition
Batch action to multiple compositions
Adds, updates, or deletes compositions with a single API request.
POST
/
1
/
compositions
/
*
/
batch
curl
curl --request POST \
--url 'https://algolia_application_id.algolia.net/1/compositions/*/batch' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-algolia-api-key: ALGOLIA_API_KEY' \
--header 'x-algolia-application-id: ALGOLIA_APPLICATION_ID' \
--data '
{
"requests": [
{
"action": "upsert",
"body": {
"objectID": "my_composition_object_id",
"name": "my lovely crafted composition",
"description": "my lovely crafted composition that is used for X purpose",
"behavior": {
"injection": {
"main": {
"source": {
"search": {
"index": "Products",
"params": {
"advancedSyntax": false,
"advancedSyntaxFeatures": [
"exactPhrase",
"excludeWords"
],
"allowTyposOnNumericTokens": true,
"alternativesAsExact": [
"ignorePlurals",
"singleWordSynonym"
],
"attributeCriteriaComputedByMinProximity": false,
"attributesToHighlight": [
"author",
"title",
"conten",
"content"
],
"attributesToRetrieve": [
"author",
"title",
"content"
],
"attributesToSnippet": [
"content:80",
"description"
],
"clickAnalytics": false,
"disableExactOnAttributes": [
"description"
],
"disableTypoToleranceOnAttributes": [
"sku"
],
"distinct": 1,
"enableABTest": true,
"enablePersonalization": false,
"enableReRanking": true,
"enableRules": true,
"exactOnSingleWordQuery": "attribute",
"facetFilters": [
[
"category:Book",
"category:-Movie"
],
"author:John Doe"
],
"filters": "(category:Book OR category:Ebook) AND _tags:published",
"getRankingInfo": false,
"highlightPostTag": "</em>",
"highlightPreTag": "<em>",
"ignorePlurals": [
"ca",
"es"
],
"minProximity": 1,
"minWordSizefor1Typo": 4,
"minWordSizefor2Typos": 8,
"naturalLanguages": [],
"numericFilters": [
[
"inStock = 1",
"deliveryDate < 1441755506"
],
"price < 1000"
],
"optionalFilters": [
"category:Book",
"author:John Doe"
],
"optionalWords": "lorem",
"percentileComputation": true,
"personalizationImpact": 100,
"queryLanguages": [
"es"
],
"queryType": "prefixLast",
"removeStopWords": [
"ca",
"es"
],
"removeWordsIfNoResults": "firstWords",
"replaceSynonymsInHighlight": false,
"responseFields": [
"*"
],
"restrictHighlightAndSnippetArrays": false,
"restrictSearchableAttributes": [
"title",
"author"
],
"ruleContexts": [
"mobile"
],
"snippetEllipsisText": "…",
"synonyms": true,
"typoTolerance": true,
"facetingAfterDistinct": false,
"facets": [
"category",
"disjunctive(brand)",
"price"
],
"hitsPerPage": 20,
"maxValuesPerFacet": 100,
"renderingContent": {
"facetOrdering": {
"facets": {
"order": [
"lorem"
]
},
"values": {
"property1": {
"order": [
"lorem"
],
"sortRemainingBy": "count",
"hide": [
"lorem"
]
},
"property2": {
"order": [
"lorem"
],
"sortRemainingBy": "count",
"hide": [
"lorem"
]
}
}
},
"redirect": {
"url": "lorem"
},
"widgets": {
"banners": [
{
"image": {
"urls": [
{
"url": "lorem"
}
],
"title": "lorem"
},
"link": {
"url": "lorem"
}
}
],
"resultCard": {
"enabled": true
}
}
},
"sortFacetValuesBy": "count",
"sumOrFiltersScores": false
}
}
}
},
"injectedItems": [
{
"key": "lorem",
"source": {
"search": {
"index": "Products",
"params": {
"advancedSyntax": false,
"advancedSyntaxFeatures": [
"exactPhrase",
"excludeWords"
],
"allowTyposOnNumericTokens": true,
"alternativesAsExact": [
"ignorePlurals",
"singleWordSynonym"
],
"attributeCriteriaComputedByMinProximity": false,
"attributesToHighlight": [
"author",
"title",
"conten",
"content"
],
"attributesToRetrieve": [
"author",
"title",
"content"
],
"attributesToSnippet": [
"content:80",
"description"
],
"clickAnalytics": false,
"disableExactOnAttributes": [
"description"
],
"disableTypoToleranceOnAttributes": [
"sku"
],
"distinct": 1,
"enableABTest": true,
"enablePersonalization": false,
"enableReRanking": true,
"enableRules": true,
"exactOnSingleWordQuery": "attribute",
"facetFilters": [
[
"category:Book",
"category:-Movie"
],
"author:John Doe"
],
"filters": "(category:Book OR category:Ebook) AND _tags:published",
"getRankingInfo": false,
"highlightPostTag": "</em>",
"highlightPreTag": "<em>",
"ignorePlurals": [
"ca",
"es"
],
"minProximity": 1,
"minWordSizefor1Typo": 4,
"minWordSizefor2Typos": 8,
"naturalLanguages": [],
"numericFilters": [
[
"inStock = 1",
"deliveryDate < 1441755506"
],
"price < 1000"
],
"optionalFilters": [
"category:Book",
"author:John Doe"
],
"optionalWords": "lorem",
"percentileComputation": true,
"personalizationImpact": 100,
"queryLanguages": [
"es"
],
"queryType": "prefixLast",
"removeStopWords": [
"ca",
"es"
],
"removeWordsIfNoResults": "firstWords",
"replaceSynonymsInHighlight": false,
"responseFields": [
"*"
],
"restrictHighlightAndSnippetArrays": false,
"restrictSearchableAttributes": [
"title",
"author"
],
"ruleContexts": [
"mobile"
],
"snippetEllipsisText": "…",
"synonyms": true,
"typoTolerance": true
}
}
},
"position": 0,
"length": 0,
"metadata": {
"hits": {
"addItemKey": true,
"extra": {}
}
}
}
],
"deduplication": {
"positioning": "highest"
}
}
},
"sortingStrategy": {
"Price (asc)": "products-low-to-high",
"Price (desc)": "products-high-to-low"
}
}
}
]
}
'// Initialize the client
var client = new CompositionClient(
new CompositionConfig("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
);
// Call the API
var response = await client.MultipleBatchAsync(
new BatchParams
{
Requests = new List<MultipleBatchRequest>
{
new MultipleBatchRequest
{
Action = Enum.Parse<Action>("Upsert"),
Body = new BatchCompositionAction(
new Composition
{
ObjectID = "my-compo",
Name = "my composition",
Behavior = new CompositionBehavior(
new CompositionInjectionBehavior
{
Injection = new Injection
{
Main = new InjectionMain
{
Source = new InjectionMainSource(
new InjectionMainSearchSource
{
Search = new InjectionMainSearch { Index = "foo" },
}
),
},
InjectedItems = new List<InjectionInjectedItem>
{
new InjectionInjectedItem
{
Key = "my-unique-injected-item-key",
Source = new InjectedItemSource(
new InjectedItemSearchSource
{
Search = new InjectedItemSearch { Index = "foo" },
}
),
Position = 2,
Length = 1,
},
},
Deduplication = new Deduplication
{
Positioning = Enum.Parse<DedupPositioning>("Highest"),
},
},
}
),
}
),
},
},
}
);
// print the response
Console.WriteLine(response);// Initialize the client
final client = CompositionClient(
appId: 'ALGOLIA_APPLICATION_ID', apiKey: 'ALGOLIA_API_KEY');
// Call the API
final response = await client.multipleBatch(
batchParams: BatchParams(
requests: [
MultipleBatchRequest(
action: Action.fromJson("upsert"),
body: Composition(
objectID: "my-compo",
name: "my composition",
behavior: CompositionInjectionBehavior(
injection: Injection(
main: InjectionMain(
source: InjectionMainSearchSource(
search: InjectionMainSearch(
index: "foo",
),
),
),
injectedItems: [
InjectionInjectedItem(
key: "my-unique-injected-item-key",
source: InjectedItemSearchSource(
search: InjectedItemSearch(
index: "foo",
),
),
position: 2,
length: 1,
),
],
deduplication: Deduplication(
positioning: DedupPositioning.fromJson("highest"),
),
),
),
),
),
],
),
);
// print the response
print(response);// Initialize the client
client, err := composition.NewClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
if err != nil {
// The client can fail to initialize if you pass an invalid parameter.
panic(err)
}
// Call the API
response, err := client.MultipleBatch(client.NewApiMultipleBatchRequest(
composition.NewEmptyBatchParams().SetRequests(
[]composition.MultipleBatchRequest{
*composition.NewEmptyMultipleBatchRequest().SetAction(composition.Action("upsert")).SetBody(composition.CompositionAsBatchCompositionAction(
composition.NewEmptyComposition().SetObjectID("my-compo").SetName("my composition").SetBehavior(composition.CompositionInjectionBehaviorAsCompositionBehavior(
composition.NewEmptyCompositionInjectionBehavior().SetInjection(
composition.NewEmptyInjection().SetMain(
composition.NewEmptyInjectionMain().SetSource(composition.InjectionMainSearchSourceAsInjectionMainSource(
composition.NewEmptyInjectionMainSearchSource().SetSearch(
composition.NewEmptyInjectionMainSearch().SetIndex("foo"))))).SetInjectedItems(
[]composition.InjectionInjectedItem{*composition.NewEmptyInjectionInjectedItem().SetKey("my-unique-injected-item-key").SetSource(composition.InjectedItemSearchSourceAsInjectedItemSource(
composition.NewEmptyInjectedItemSearchSource().SetSearch(
composition.NewEmptyInjectedItemSearch().SetIndex("foo")))).SetPosition(2).SetLength(1)}).SetDeduplication(
composition.NewEmptyDeduplication().SetPositioning(composition.DedupPositioning("highest")))))))),
}),
))
if err != nil {
// handle the eventual error
panic(err)
}
// print the response
print(response)// Initialize the client
CompositionClient client = new CompositionClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");
// Call the API
MultipleBatchResponse response = client.multipleBatch(
new BatchParams().setRequests(
Arrays.asList(
new MultipleBatchRequest().setAction(Action.UPSERT).setBody(
new Composition()
.setObjectID("my-compo")
.setName("my composition")
.setBehavior(
new CompositionInjectionBehavior().setInjection(
new Injection()
.setMain(
new InjectionMain().setSource(new InjectionMainSearchSource().setSearch(new InjectionMainSearch().setIndex("foo")))
)
.setInjectedItems(
Arrays.asList(
new InjectionInjectedItem()
.setKey("my-unique-injected-item-key")
.setSource(new InjectedItemSearchSource().setSearch(new InjectedItemSearch().setIndex("foo")))
.setPosition(2)
.setLength(1)
)
)
.setDeduplication(new Deduplication().setPositioning(DedupPositioning.HIGHEST))
)
)
)
)
)
);
// print the response
System.out.println(response);// Initialize the client
const client = compositionClient('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
const response = await client.multipleBatch({
requests: [
{
action: 'upsert',
body: {
objectID: 'my-compo',
name: 'my composition',
behavior: {
injection: {
main: { source: { search: { index: 'foo' } } },
injectedItems: [
{ key: 'my-unique-injected-item-key', source: { search: { index: 'foo' } }, position: 2, length: 1 },
],
deduplication: { positioning: 'highest' },
},
},
},
},
],
});
// print the response
console.log(response);// Initialize the client
val client = CompositionClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
var response =
client.multipleBatch(
batchParams =
BatchParams(
requests =
listOf(
MultipleBatchRequest(
action = Action.entries.first { it.value == "upsert" },
body =
Composition(
objectID = "foo",
name = "my first composition",
behavior =
CompositionInjectionBehavior(
injection =
Injection(
main =
InjectionMain(
source =
InjectionMainSearchSource(
search = InjectionMainSearch(index = "bar")
)
)
)
),
),
),
MultipleBatchRequest(
action = Action.entries.first { it.value == "delete" },
body = DeleteCompositionAction(objectID = "baz"),
),
)
)
)
// print the response
println(response)// Initialize the client
$client = CompositionClient::create('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
$response = $client->multipleBatch(
['requests' => [
['action' => 'upsert',
'body' => ['objectID' => 'my-compo',
'name' => 'my composition',
'behavior' => ['injection' => ['main' => ['source' => ['search' => ['index' => 'foo',
],
],
],
'injectedItems' => [
['key' => 'my-unique-injected-item-key',
'source' => ['search' => ['index' => 'foo',
],
],
'position' => 2,
'length' => 1,
],
],
'deduplication' => ['positioning' => 'highest',
],
],
],
],
],
],
],
);
// print the response
var_dump($response);# Initialize the client
# In an asynchronous context, you can use CompositionClient instead, which exposes the exact same methods.
client = CompositionClientSync("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
response = client.multiple_batch(
batch_params={
"requests": [
{
"action": "upsert",
"body": {
"objectID": "my-compo",
"name": "my composition",
"behavior": {
"injection": {
"main": {
"source": {
"search": {
"index": "foo",
},
},
},
"injectedItems": [
{
"key": "my-unique-injected-item-key",
"source": {
"search": {
"index": "foo",
},
},
"position": 2,
"length": 1,
},
],
"deduplication": {
"positioning": "highest",
},
},
},
},
},
],
},
)
# print the response
print(response)# Initialize the client
client = Algolia::CompositionClient.create("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
response = client.multiple_batch(
Algolia::Composition::BatchParams.new(
requests: [
Algolia::Composition::MultipleBatchRequest.new(
action: "upsert",
body: Algolia::Composition::Composition.new(
algolia_object_id: "my-compo",
name: "my composition",
behavior: Algolia::Composition::CompositionInjectionBehavior.new(
injection: Algolia::Composition::Injection.new(
main: Algolia::Composition::InjectionMain.new(
source: Algolia::Composition::InjectionMainSearchSource.new(
search: Algolia::Composition::InjectionMainSearch.new(index: "foo")
)
),
injected_items: [
Algolia::Composition::InjectionInjectedItem.new(
key: "my-unique-injected-item-key",
source: Algolia::Composition::InjectedItemSearchSource.new(
search: Algolia::Composition::InjectedItemSearch.new(index: "foo")
),
position: 2,
length: 1
)
],
deduplication: Algolia::Composition::Deduplication.new(positioning: "highest")
)
)
)
)
]
)
)
# print the response
puts(response)// Initialize the client
val client = CompositionClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
val response = Await.result(
client.multipleBatch(
batchParams = BatchParams(
requests = Seq(
MultipleBatchRequest(
action = Action.withName("upsert"),
body = Composition(
objectID = "my-compo",
name = "my composition",
behavior = CompositionInjectionBehavior(
injection = Injection(
main = InjectionMain(
source = Some(
InjectionMainSearchSource(
search = InjectionMainSearch(
index = "foo"
)
)
)
),
injectedItems = Some(
Seq(
InjectionInjectedItem(
key = "my-unique-injected-item-key",
source = InjectedItemSearchSource(
search = InjectedItemSearch(
index = "foo"
)
),
position = 2,
length = 1
)
)
),
deduplication = Some(
Deduplication(
positioning = DedupPositioning.withName("highest")
)
)
)
)
)
)
)
)
),
Duration(100, "sec")
)
// print the response
println(response)// Initialize the client
let client = try CompositionClient(appID: "ALGOLIA_APPLICATION_ID", apiKey: "ALGOLIA_API_KEY")
// Call the API
let response = try await client
.multipleBatch(batchParams: CompositionBatchParams(requests: [CompositionMultipleBatchRequest(
action: CompositionAction.upsert,
body: BatchCompositionAction.composition(Composition(
objectID: "my-compo",
name: "my composition",
behavior: CompositionBehavior
.compositionInjectionBehavior(CompositionInjectionBehavior(injection: Injection(
main: InjectionMain(source: InjectionMainSource
.injectionMainSearchSource(
InjectionMainSearchSource(search: InjectionMainSearch(index: "foo"))
)),
injectedItems: [InjectionInjectedItem(
key: "my-unique-injected-item-key",
source: InjectedItemSource
.injectedItemSearchSource(
InjectedItemSearchSource(search: InjectedItemSearch(index: "foo"))
),
position: 2,
length: 1
)],
deduplication: Deduplication(positioning: DedupPositioning.highest)
)))
))
)]))
// print the response
print(response){
"taskID": {}
}{
"message": "Invalid Application-Id or API-Key"
}{
"message": "Invalid Application-Id or API-Key"
}{
"message": "Invalid Application-Id or API-Key"
}{
"message": "Invalid Application-Id or API-Key"
}Required ACL:
editSettingsAuthorizations
Body
application/json
Last modified on March 23, 2026
Was this page helpful?