# uip rules debug

> Syntax and options for `uip rules debug`, which uploads a Business Rules project's solution to Studio Web and evaluates it once through the rules engine.

`uip rules debug` uploads the solution that holds a Business Rules project to Studio Web and evaluates the project once through the rules engine. It returns the decision outputs and any evaluation errors. With `--explain`, it also returns the ID of a trace that shows which rules fired.

The project must sit directly inside its solution folder, as [`uip rules init`](./uip-rules-init.md) creates it. The first run writes the `SolutionId` that Studio Web assigns to the solution's `.uipx` file, so later runs overwrite the same Studio Web solution.

The command requires an authenticated session. Refer to [Authentication](./authentication.md).

## Synopsis

```
uip rules debug <project-path> [-i <json|@file.json>] [--explain]
                [--folder-path <path> | --folder-key <key>]
                [--timeout <seconds>] [--login-validity <minutes>]
```

## Arguments

| Name | Required | Purpose |
|---|---|---|
| `<project-path>` | yes | Path to the Business Rules project directory. The directory must contain `project.uiproj`. |

## Options

| Short | Long | Value | Default | Description |
|---|---|---|---|---|
| `-i` | `--inputs` | JSON object or `@file.json` | `{}` | Input values for the rule, as one JSON object or a path to a file that holds one, prefixed with `@`. |
| | `--explain` | flag | off | Publish a trace of the run and return its ID in `traceId`. Read the trace with [`uip traces spans get`](./uip-traces.md#uip-traces-spans-get). |
| | `--folder-path` | string | your personal workspace | Folder to evaluate in and to publish the `--explain` trace into. |
| | `--folder-key` | GUID | your personal workspace | Key of the folder to evaluate in and to publish the `--explain` trace into. Cannot be combined with `--folder-path`. |
| | `--timeout` | integer (1–3600) | `120` | Maximum seconds to wait for the rules engine to evaluate. |
| | `--login-validity` | integer | `10` | Minimum minutes before token expiration that trigger a session refresh before the run. |

## Examples

```bash
# Evaluate with one set of inputs and return the trace ID
uip rules debug ./LoanSolution/LoanEligibility --inputs '{"creditScore": 720}' --explain

# Read the inputs from a file and evaluate in a specific folder
uip rules debug ./LoanSolution/LoanEligibility --inputs @inputs.json --folder-path Shared
```

## Data shape (--output json)

`Data` keys are camelCase.

```json
{
  "Code": "RulesDebug",
  "Data": {
    "solutionId": "30823424-33e3-405e-f21c-08df1c789a14",
    "projectId": "ee8a16e8-385c-42c1-81ee-1628ab7d7cb7",
    "studioWebUrl": "https://cloud.uipath.com/acme/studio_/designer/ee8a16e8-385c-42c1-81ee-1628ab7d7cb7?solutionId=30823424-33e3-405e-f21c-08df1c789a14",
    "fileName": "LoanEligibility.dmn",
    "stats": { "submitted": 1, "succeeded": 1, "failed": 0, "notEvaluated": 0 },
    "results": [
      {
        "id": "1",
        "decisions": [
          { "decisionName": "Eligibility", "outputs": { "eligible": true } }
        ]
      }
    ],
    "traceId": "499d9124f5da47462bd6535055483918"
  }
}
```

`traceId` is present only when `--explain` is passed and the rules engine recorded a trace. With `--explain`, `Instructions` holds the `uip traces spans get` command for the trace.

## Exit codes

Refer to [Exit codes](./exit-codes.md) for the shared contract. The command exits `1` in these cases:

| Condition | `ErrorCode` |
|---|---|
| The rules engine fails to evaluate the input. `Data` holds the same shape as a successful run, with the engine's errors in `Data.results`. | `invalid_argument` |
| `--inputs` is not a JSON object, or the `@file.json` file cannot be read. | `invalid_argument` |
| The project directory's parent folder holds no `.uipx` file. | `invalid_argument` |
| Both `--folder-path` and `--folder-key` are passed. | `invalid_argument` |
| The rules engine does not answer within `--timeout` seconds. | `timeout` |
| Business Rules is not enabled on the tenant. | `configuration_error` |
| Studio Web does not let the rules engine read the uploaded project. | `permission_denied` |

## Related commands

- [`uip rules validate`](./uip-rules-validate.md) checks the project before the run.
- [`uip traces spans get`](./uip-traces.md#uip-traces-spans-get) reads the trace that `--explain` publishes.
- [`uip solution upload`](./uip-solution-upload.md) uploads a solution to Studio Web without evaluating it.

## See also

- [`uip rules`](./uip-rules.md) for the tool overview and project layout.
