# Add business rules to a ruleset

> For the complete machine-readable documentation index, see [llms.txt](https://apidocs.chargebee.com/llms.txt).


[Idempotency Supported](/docs/api/idempotency)

Adds one or more business rules to a ruleset without changing any of its other attributes. The rules are appended to the end of the ruleset's evaluation order, so you cannot choose their priorities here.

Use this operation to extend a ruleset that is already in use. Unlike [Update a business ruleset](/docs/api/business_rulesets/update-a-business-ruleset), it leaves the rules already in the ruleset in place, so you do not need to resend the whole membership.

### Prerequisites & Constraints

-   Each rule referenced in `rules` must already exist, and must not already belong to the ruleset.

### Impacts

**

Business ruleset

**

The rules are appended to the end of the ruleset's evaluation order, each given a priority above the highest priority already in use, and `updated_at` and `updated_by` are set. The rules already in the ruleset keep their priorities, and the `name`, `description`, `execute_mode`, and `active` attributes of the ruleset are unchanged.

A rule can belong to more than one ruleset, so adding it here does not remove it from any other ruleset. A rule added to an `active` ruleset is evaluated only once the rule itself is also `active`.

### Implementation Notes

Confirm the resulting evaluation order with [List rules in a business ruleset](/docs/api/business_rulesets/list-rules-in-a-business-ruleset), because this operation appends rather than inserting at a position you choose. If the new rules need to be evaluated earlier, set every priority explicitly with [Update a business ruleset](/docs/api/business_rulesets/update-a-business-ruleset).

## Sample Request

#### cURL

```bash
curl  https://{site}.chargebee.com/api/v2/business_rulesets/quote_create_rules/add_rules \
     -u {site_api_key}:\
     -d rules='[{"rule_id":"custom-uuid-3"}]'
```

#### .NET

```dotnet
using ChargeBee.Api;
using ChargeBee.Models;
using Newtonsoft.Json.Linq;

ApiConfig.Configure("{site}","{site_api_key}");
EntityResult result = BusinessRuleset.AddRules("quote_create_rules")
		.Rules(new JArray { "{\"rule_id\":\"custom-uuid-3\"}" })
		.Request();

BusinessRuleset businessRuleset = result.BusinessRuleset;
```

#### Go

```go
package main
import (
    "fmt"
    "github.com/chargebee/chargebee-go/v3"
    businessrulesetAction "github.com/chargebee/chargebee-go/v3/actions/businessruleset"
    "github.com/chargebee/chargebee-go/v3/models/businessruleset"
)
func main() {
    chargebee.Configure("{site_api_key}","{site}");
    res,err := businessrulesetAction.AddRules("quote_create_rules", &businessruleset.AddRulesRequestParams{
        Rules : []*businessruleset.AddRulesRuleParams{
            {
                RuleId : "custom-uuid-3",
            },
        },
    }).Request()
    if err != nil {
        fmt.Println(err)
    } else {
        BusinessRuleset := res.BusinessRuleset
    }
}
```

#### Go

```go
package main

import (
  "fmt"
  "github.com/chargebee/chargebee-go/v4"
)

func main() {
  config := &chargebee.ClientConfig{
    SiteName: "{site}",
    ApiKey: "{site_api_key}",
  }    
  client := chargebee.NewClient(config)
  req := &chargebee.BusinessRulesetAddRulesRequest{
    Rules : []*chargebee.BusinessRulesetAddRulesRule{
        {
            RuleId : "custom-uuid-3",
        },
    },
}
  res, err := client.BusinessRuleset.AddRules("quote_create_rules", req)
      if err != nil {
        fmt.Println(err)
    } else {
        BusinessRuleset := res.BusinessRuleset
    }
}
```

#### Java

```java
import com.chargebee.*;
import com.chargebee.ListResult;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;
import java.io.IOException;
import java.util.List;
import com.chargebee.org.json.JSONArray;
import com.chargebee.org.json.JSONObject;

public class Sample {

    public static void main(String args[]) throws IOException, Exception {
        Environment.configure("{site}", "{site_api_key}");
        Result result = BusinessRuleset.addRules("quote_create_rules")
            .rules(new JSONArray("[{\"rule_id\":\"custom-uuid-3\"}]"))
            .request();

        BusinessRuleset businessRuleset = result.businessRuleset();
    }
}
```

#### Java

```java
import com.chargebee.v4.client.ChargebeeClient;
import com.chargebee.v4.models.businessRuleset.BusinessRuleset;
import com.chargebee.v4.models.businessRuleset.params.BusinessRulesetAddRulesParams;
import com.chargebee.v4.models.businessRuleset.responses.BusinessRulesetAddRulesResponse;
import java.util.List;

public class BusinessRulesetAddRules {

    public static void main(String[] args) {
        ChargebeeClient client = ChargebeeClient.builder()
            .apiKey("{site_api_key}")
            .siteName("{site}")
            .build();

        BusinessRulesetAddRulesParams params = BusinessRulesetAddRulesParams.builder()
            .rules(List.of("[{\"rule_id\":\"custom-uuid-3\"}]"))
            .build();

        BusinessRulesetAddRulesResponse response = client
            .businessRulesets()
            .addRules("quote_create_rules", params);

        BusinessRuleset businessRuleset = response.getBusinessRuleset();
    }
}
```

#### Node.js

```node
import Chargebee from "chargebee";

const chargebee = new Chargebee({
    site: "{site}",
    apiKey: "{site_api_key}",
});

try {
    const result = await chargebee.businessRuleset.addRules("quote_create_rules", {
        rules: [
            {
                rule_id: "custom-uuid-3"
            }
        ]
    });

    console.log(result);
    const businessRuleset = result.business_ruleset;
} catch (err) {
    console.log(err);
}
```

#### PHP

```php
<?php

require __DIR__ . '/vendor/autoload.php';

use Chargebee\ChargebeeClient;

$chargebee = new ChargebeeClient(options: [
    "site" => "{site}",
    "apiKey" => "{site_api_key}",
]);
$result = $chargebee->businessRuleset()->addRules("quote_create_rules", [
    "rules" => [
        [
            "rule_id" => "custom-uuid-3"
        ]
    ]
]);
$businessRuleset = $result->business_ruleset;
```

#### Python

```python
from chargebee import Chargebee

cb_client = Chargebee(api_key="{site_api_key}", site="{site}")
response = cb_client.BusinessRuleset.add_rules("quote_create_rules",
    cb_client.BusinessRuleset.AddRulesParams(
        rules=[
            cb_client.BusinessRuleset.AddRulesRuleParams(
              rule_id="custom-uuid-3"
            )
        ]
    )
)
business_ruleset = response.business_ruleset
```

#### Ruby

```ruby
require 'chargebee'

ChargeBee.configure(:site => "{site}",
  :api_key => "{site_api_key}")

result = ChargeBee::BusinessRuleset.add_rules("quote_create_rules",{
  :rules => "[{\"rule_id\":\"custom-uuid-3\"}]"
})

business_ruleset = result.business_ruleset
```

## Sample Response

```json
{
  "business_ruleset": {
    "id": "quote_create_rules",
    "name": "Quote creation rules",
    "description": "Rules evaluated when a quote is created.",
    "active": true,
    "execute_mode": "execute_all",
    "updated_at": 1788597182,
    "updated_by": "full_access_key_v1",
    "created_by": "full_access_key_v1",
    "created_at": 1788510782,
    "resource_version": 1788597182412,
    "object": "business_ruleset"
  }
}
```

## URL Format

**POST** https://[site].chargebee.com/api/v2/business_rulesets/{business-ruleset-id}/add_rules

## Input Parameters

- `rules` (optional)
  The [business rules](/docs/api/business_rules) to add to the ruleset. Each entry takes the `rule_id` of an existing business rule. Pass the list as a JSON array.
  
  To place a new rule earlier in the evaluation order, set the priorities explicitly with [Update a business ruleset](/docs/api/business_rulesets/update-a-business-ruleset) instead.
  
  **Impacts**
  
  -   Each rule is appended to the end of the ruleset's evaluation order, taking a priority above the highest already in use, in the order the entries appear in the array.
  -   Rules already in the ruleset keep their priorities.
  
  **Constraints**
  
  -   Each `rule_id` must belong to a business rule that already exists.
  -   A rule that is already in the ruleset cannot be added again.
  
  **Example →** `rules = [{"rule_id":"custom-uuid-3"},{"rule_id":"custom-uuid-4"}]`

## Returns

- `business_ruleset` (Business ruleset object)
  The business ruleset with the rules added to its membership. Its `name`, `description`, `execute_mode`, and `active` attributes are unchanged.
