Skip to main content
The Custom Rules API allows you to create, read, update, and delete custom rules. For more information, view the API specification.

Example

The following example will create a new custom rule type in the myFusionApp app. The new custom rule type will use a pipeline with an ID of custom-rule-pipeline and will have two custom text fields for Manufacturer and Type. This assumes a pipeline called custom-rule-pipeline already exists. If that is not the case, you can add /{id} to the URL and use PUT instead of POST to update an existing custom rule type. See Create Custom Rule Actions with the API for more information on creating custom rule types.
Custom rule actions allow you to define a unique action to take when certain conditions are met. They involve three primary components: a query pipeline, a custom rule type, and a rule that is triggered by conditions defined by the user.This article describes the general workflow for creating a custom rule action. The example assumes the following components are used:
ComponentName
Query pipelinecustom-rule-pipeline
Custom rule typecustom-rule-type
Rulecustom-rule-action
  1. Create a query pipeline, custom-rule-pipeline, that is used to complete the rule action.
  2. Create a custom rule type, custom-rule-type, that uses your query pipeline. Here are some important parameters to include in your POST request.
    Rule properties, included as part of the schema</code, define the values required from the user to create a rule that uses the custom rule type.
    id
    required
    A unique ID for the custom rule type. The id value must be unique across all apps in Fusion (global namespace).
    Example: custom-rule-type
    pipeline_id
    required
    The ID of the pipeline that is invoked during rule processing.
    Example: custom-rule-pipeline
    display_type
    required
    A user-friendly name for the custom rule type.
    Example: My Custom Rule
    custom_param1
    required
    The ID of the rule’s parameter. This field is used in the API but is not visible in the Rules Editor.
    Example: 1st-rule-parameter
    type
    required
    The type of user-input.
    Example: string
    title
    required
    A user-friendly name for the parameter.
    Example: Manufacturer
    description
    required
    A user-friendly description of what the field is used for. The description value is shown in the field’s tooltip in the Rules Editor.
    Example: The manufacturer of the product to which this rule applies.
    For example:
    curl -u USERNAME:PASSWORD -XPOST -H "Content-type:application/json" \
    https://EXAMPLE_COMPANY.b.lucidworks.cloud/api/apps/myFusionApp/custom-rule-types -d '{
    "id":"custom-rule-type",
    "pipeline_id":"custom-rule-pipeline",
    "display_type":"My Custom Rule",
    "schema": {
        "type" : "object",
        "properties" : {
        "custom_param1" : {
            "type" : "string",
            "title" : "Manufacturer",
            "description" : "The manufacturer of the product this rule action applies to."
        },
        "custom_param2" : {
            "type": "string",
            "title": "Type",
            "description": "The type of product this rule action applies to."
        }
        }
    }
    }'
    
  3. Verify the custom rule type was created by visiting https://EXAMPLE_COMPANY.b.lucidworks.cloud/api/apps/myFusionApp/custom-rule-types. Custom rule types are also available in the Rules Editor: Custom Rule Type in the Rules Editor
  4. Create a rule, custom-rule-action, that uses your custom rule, custom-rule-type. If you are creating the rule using the Query Rewrite API, the following image depicts which parameters are shared between the custom rule type and the rule: Custom rule type and rule parameters Note that the custom rule type id value is used for the rule’s type and custom_type fields. Remember to assign values to the custom rule properties, custom_param1 and custom_param2.
    curl -u USERNAME:PASSWORD -XPOST -H "Content-type:application/json" \
    https://EXAMPLE_COMPANY.b.lucidworks.cloud/api/apps/myFusionApp/query-rewrite/instances -d '{
      "id":"123456",
      "type":"custom-rule-type",
      "custom_type":"custom-rule-type",
      "name":"My Rule",
      "description":"A rule that uses my custom rule, custom-rule-type.",
      "search_terms":["upcoming sale"],
      "custom_param1":"ABC",
      "custom_param2":"XYZ",
      "pipeline_id":"custom-rule-pipeline",
      "display_type":"My Custom Rule"
    }'
    
  5. Verify your rule was created by checking the rule ID, 123456, with the Query Rewrite API: https://EXAMPLE_COMPANY.b.lucidworks.cloud/api/apps/myFusionApp/query-rewrite/instances/123456
  6. Test your custom rule using your normal rule development process.
curl -u USERNAME:PASSWORD -XPOST -H "Content-type:application/json" \
https://FUSION_HOST:6764/api/apps/{app-name}/custom-rule-types -d '{
  "id":"{custom-rule-type}",
  "pipeline_id":"{query-pipeline}",
  "display_type":"My Custom Rule",
  "schema": {
    "type" : "object",
    "properties" : {
      "custom_param1" : {
        "type" : "string",
        "title" : "Manufacturer",
        "description" : "The manufacturer of the product this rule action applies to."
      },
      "custom_param2" : {
        "type": "string",
        "title": "Type",
        "description": "The type of product this rule action applies to."
      }
    }
  }
}'
I