You're viewing an archived version of our docs. Check out our current documentation →

Upsert a composition

Upsert a composition in the current Algolia application.

Usage

Required ACL: editSettings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import 'package:algolia_client_composition/algolia_client_composition.dart';

final client = CompositionClient(
    appId: 'ALGOLIA_APPLICATION_ID', apiKey: 'ALGOLIA_API_KEY');

final response = await client.putComposition(
  compositionID: "my-metadata-compo",
  composition: Composition(
    objectID: "my-metadata-compo",
    name: "my composition",
    behavior: CompositionBehavior(
      injection: Injection(
        main: Main(
          source: CompositionSource(
            search: CompositionSourceSearch(
              index: "foo",
              params: MainInjectionQueryParameters(
                filters: "brand:adidas",
              ),
            ),
          ),
        ),
        injectedItems: [
          InjectedItem(
            key: "injectedItem1",
            source: SearchSource(
              search: Search(
                index: "foo",
                params: BaseInjectionQueryParameters(
                  filters: "brand:adidas",
                ),
              ),
            ),
            position: 2,
            length: 1,
            metadata: InjectedItemMetadata(
              hits: InjectedItemHitsMetadata(
                addItemKey: true,
                extra: {
                  'my-string': "string",
                  'my-bool': true,
                  'my-number': 42,
                  'my-object': {
                    'sub-key': 'sub-value',
                  },
                },
              ),
            ),
          ),
          InjectedItem(
            key: "externalItem",
            source: SearchSource(
              search: Search(
                index: "foo",
                params: BaseInjectionQueryParameters(
                  filters: "brand:puma",
                ),
              ),
            ),
            position: 5,
            length: 5,
            metadata: InjectedItemMetadata(
              hits: InjectedItemHitsMetadata(
                addItemKey: true,
                extra: {
                  'my-string': "string",
                  'my-bool': true,
                  'my-number': 42,
                  'my-object': {
                    'sub-key': 'sub-value',
                  },
                },
              ),
            ),
          ),
        ],
      ),
    ),
  ),
);