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

Create or update or delete composition rules

Create or update or delete multiple composition rules.

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
import 'package:algolia_client_composition/algolia_client_composition.dart';

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

final response = await client.saveRules(
  compositionID: "rule-with-exernal-source",
  rules: CompositionRulesBatchParams(
    requests: [
      RulesMultipleBatchRequest(
        action: Action.fromJson("upsert"),
        body: CompositionRule(
          objectID: "rule-with-exernal-source",
          description: "my description",
          tags: [
            "tag1",
            "tag2",
          ],
          enabled: true,
          validity: [
            TimeRange(
              from: 1704063600,
              until: 1704083600,
            ),
          ],
          conditions: [
            Condition(
              anchoring: Anchoring.fromJson("contains"),
              pattern: "harry",
            ),
            Condition(
              anchoring: Anchoring.fromJson("contains"),
              pattern: "potter",
            ),
          ],
          consequence: CompositionRuleConsequence(
            behavior: CompositionBehavior(
              injection: Injection(
                main: Main(
                  source: CompositionSource(
                    search: CompositionSourceSearch(
                      index: "my-index",
                      params: MainInjectionQueryParameters(
                        filters: "brand:adidas",
                      ),
                    ),
                  ),
                ),
                injectedItems: [
                  InjectedItem(
                    key: "injectedItem",
                    source: ExternalSource(
                      external_: External(
                        index: "my-index",
                        params: BaseInjectionQueryParameters(
                          filters: "brand:adidas",
                        ),
                        ordering: ExternalOrdering.fromJson("userDefined"),
                      ),
                    ),
                    position: 0,
                    length: 3,
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    ],
  ),
);