LogoLogo
API Documentation
Current Version
Current Version
  • DecisionRules Documentation
  • DecisionRules Academy
  • API
    • API Introduction
    • API Keys
      • Solver API Keys
      • Management API keys
      • BI API keys
    • Rule Solver API
    • Management API
      • Rule Migration Strategies
      • Deprecated Endpoints
    • Console Logs API
    • Business Intelligence API
      • Deprecated Endpoints
    • Datacenters & Locations
      • Global Cloud
      • Regional Cloud
    • Apache Kafka Solver API
    • Endpoint Settings
    • Archive
      • Rule Flow Solver API (DEPRECATED)
  • AI Assistant
    • About Assistant
  • RULES
    • Rules Introduction
    • Rule List
    • Rule Mode
    • Common Rule Features
      • Input & Output Model
        • Simple Editor
        • JSON Editor
      • Test Bench
      • Rule Alias
      • Rule State
      • Versioning
      • Rule Variables
      • Execution Strategy
      • Rule Dependencies
      • Rule Export & Import
        • Rule Export
        • Rule Import
        • Managing Decision Table in Excel/Google Sheets
        • Deprecated Formats: XLSX v.1 and CSV
      • Tags
      • Rule Comparison
        • Decision Table Comparison
        • Decision Tree Comparison
        • Scripting Rule Comparison
      • Rule Lock
      • Teamwork Indicator
      • Event Timeline
    • Data Types & Functions
      • Supported Data Types
      • Operators and Functions
        • Basic operators
        • Date operators
        • Functions
          • Logical Functions
          • Math Functions
          • Date and Time Functions
          • Text Functions
          • Data Functions
          • Array Functions
          • Integration functions
          • Functions and JSON
    • Decision Table
      • Table Designer
        • Table Operations
          • Filter Values
          • Valid Values
          • Sorting
      • Binding to Model
    • Decision Tree
      • Tree Designer
    • Workflow
      • Workflow Designer
      • Workflow Nodes Overview
      • Workflow Limits
    • Scripting Rule
      • Custom functions in Scripting Rules
      • Calling external API within ScriptingRules
      • Use Rule Variables in Scripting Rules
      • Call Embedded Rules in Scripting Rules
      • Tips
    • Rule Flow
      • Rule Flow Designer
      • Rule Flow Mapping
      • Rule States in Rule Flow
      • Warnings & Errors
      • Rule Flow Limits
  • SPACE
    • Space Introduction
    • Space Info
    • Dashboard
    • Access
    • API Keys
    • Audit Logs
  • Organization
    • Organization Introduction
    • Organization List
    • Members
    • Teams
    • Spaces
    • Space Roles
    • Policies
    • Statistics
    • Settings
  • Profile
    • Profile Introduction
    • General
    • Dashboard
    • Plans
    • Add-ons
    • Limits
      • Plan Limits Explained
    • Subscriptions
    • Invoices
  • Access
    • Sign Up & Login
    • Invitations & Permissions
    • Single Sign-On (SSO)
  • Business Intelligence
    • Audit Logs
    • Power BI Connectivity
      • Create a Power BI Report
      • Connect Power BI to Business Intelligence API
      • Connecting from Power BI (deprecated)
      • Connect DecisionRules to Power BI Using Our Custom Connector
  • OTHER DEPLOYMENT OPTIONS
    • Regional Cloud
      • Region Specific API URLs
    • Docker & On-Premise
      • Environment Variables
      • Redis Connection Modes
      • DecisionRules Application
        • Minimal Requirements
        • DecisionRules Server
        • DecisionRules Client
        • DecisionRules Business Intelligence
        • Networking Between Docker Containers
      • Setup Single Sign-On (SSO)
        • Set up Microsoft Entra ID SSO
        • Set up Google SSO
      • Docker Showcase App
        • Showcase
        • Showcase + Business Intelligence
      • AWS Setup
        • AWS ECS/Fargate
        • Cache - Amazon ElastiCache
      • Microsoft Azure Setup
        • Database - Azure CosmosDB
        • Cache - Azure Cache for Redis
        • Azure Container Apps
      • Azure Red Hat OpenShift
      • Google Kubernetes Engine (GKE)
      • Kubernetes Setup
        • Kubernetes Setup with Business Intelligence
      • Logging options
      • CD/CI Pipelines
        • Azure DevOps CICD Pipelines
        • Using Migration script (old way)
      • Offline License
  • SDK and Integrations
    • Languages / Frameworks
      • SQL Server
      • Oracle PL/SQL
      • PostgreSQL
      • JavaScript
      • Java Spring Example
      • PHP Library
      • Python Library
      • .NET Library
      • Google Tag Manager
    • Excel Add-in
  • Terms & Conditions
    • Terms and Conditions
    • Privacy Policy
    • Service Level Agreement
      • Community Support
      • Standard Cloud (SaaS)
      • Silver SLA
      • Gold SLA
      • Custom SLA
    • Sub-Processor List
  • Product Updates
    • Release Notes
      • Public Cloud
      • On-Premise / Private Cloud
    • Major Updates
      • Changes in Version 1.19.0 (10/2024)
      • Changes in Version 1.20.0 (4/2025)
    • Roadmap
Powered by GitBook
On this page

Was this helpful?

  1. API

Management API

The Management API is a secure REST API that provides read/write access to your rules and spaces.

Last updated 1 month ago

Was this helpful?

API Request methods cheat sheet:

GET - Used to retrieve resource representation/information and not modify it in any way, e.g., get a JSON representaition of a rule with the GET RULES endpoint.

POST - Used to create new subordinate resources, e.g., creating a new rule in a Space or Importing a rule into a Space.

PUT - Used primarily to update an existing resource (if the resource does not exist, then API may decide to create a new resource or not), e.g., updating a Rule Flow

PATCH - Used to make a partial update on a resource, e.g., add Tags to an existing rule.

DELETE - Used to delete resources, e.g., deleting rules.

NEW in v1.16.0! The Management API now fully support use of Rule Aliases when making requests.

If you're using the Regional Cloud version of DecisionRules, read more about API calls .

Swagger

You can check out these endpoints and call them right away using swagger.

Swagger UI:

Swagger JSON File:

Folder Paths

NEW in v1.18.1 Some Management API Endpoints now support targetting by Folder Path.

All Folder and select Rule endpoints now support targetting items by their folder path. Instead of having to provide the requests with Rule Aliases/IDs or Folder IDs users can now define the request target by leveraging the new Folder Path functionality.

Example:

To access Calculation v2 (see image below), instead of appending it's rule ID to the request as a parameter you can now specify the ?path= query parameter.

In this case to GET the rule the request would look like this:

https://api.decisionrules.io/api/rule?path=/Client/Important/Calculation&version=2

To access the entire "Important" Folder the request could now look like this:

https://api.decisionrules.io/api/folder?path=/Client/Important
  • Request targets can be defined either by the ID or path, not both at the same time

  • Folder Paths have to always begin with a slash "/"

  • To target specific rule versions by path use the ?version= query parameter

Rules and Rule Flows

Get rule

GET https://api.decisionrules.io/api/rule/:ruleId/:version?

Gets all of the infromation stored about the rule, including its content, version or input and output schemas.

If the version is specified, gets the version irrespective of the rule status.

If the version is not specified, gets the latest published version.

Path Parameters

Name
Type
Description

ruleId

string

Unique rule ID or alias which is common to all rule versions.

version

integer

Business rule version.

Path Query Parameters

Name
Type
Description

path

string

Unique folder path leading to the rule.

version

integer

Business rule version.

Headers

Name
Type
Description

Authorization*

string

Bearer

Content-Type*

string

application/json

{
  "name": "Rule Name",
  "description": "",
  "inputSchema": {
    "Input attribute": {}
  },
  "outputSchema": {
    "Output Attribute": {}
  },
  "decisionTable": {
    "columns": [
      {
        "condition": {
          "type": "simple",
          "inputVariable": "Input attribute",
          "name": "New Condition"
        },
        "columnId": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
        "type": "input"
      },
      {
        "columnOutput": {
          "type": "simple",
          "outputVariable": "Output Attribute",
          "name": "New Result"
        },
        "columnId": "2e46eb73-de05-51bc-5913-4b261bbe2069",
        "type": "output"
      }
    ],
    "rows": [
      {
        "cells": [
          {
            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
            "scalarCondition": {
              "value": "",
              "operator": "anything"
            },
            "type": "input"
          },
          {
            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
            "outputScalarValue": {
              "value": "Hello from Solver"
            },
            "type": "output"
          }
        ]
      }
    ]
  },
  "type": "decision-table",
  "status": "published",
  "ruleId": "4ea...",
  "version": 1,
  "createdIn": "2021-09-03T06:35:42.663Z",
  "lastUpdate": "2021-09-03T06:35:42.663Z",
  "tags": ["tagName", "anotherTagName"]
}
Error: This rule belongs to another user OR rule not found
{
    "error": {
        "message": "Authentication token missing"
    }
}

Path Parameters

Name
Type
Description

ruleId*

string

gM6RzkIZ2Yoa

version

integer

kwk9EqWFZN7S

Headers

Name
Type
Description

Authorization*

string

LgWcKwwM0JXy

Content-Type*

string

RycZjvfN2via

Get rule might be useful when you wish to create a new version of a rule. To do so you may GET the rule, manually change the "version"attribute of the returned JSON object and then use said object with the POST Create rule method. This will result in a new version of the rule being created.

Update rule status

PUT https://api.decisionrules.io/api/rule/status/:ruleId/:status/:version?

Changes rule status from pending to published and vice versa. If the version is not specified, the latest version will be used.

Path Parameters

Name
Type
Description

ruleId*

String

Unique rule ID or alias which is common to all rule versions.

status*

String

pending XOR published

version

Number

rule version

Headers

Name
Type
Description

Authorization*

String

Bearer MANAGEMENT_API_KEY

Content-Type*

String

application/json

Returns updated rule.

{
    // Response
}

Update rule

PUT https://api.decisionrules.io/api/rule/:ruleId/:version

Changes the rule according to the body of the request.

Path Parameters

Name
Type
Description

ruleId

string

Unique rule ID or alias which is common to all rule versions.

version

integer

Version of Rule

Path Query Parameters

Name
Type
Description

path

string

Unique folder path leading to the rule.

version

integer

Business rule version.

Headers

Name
Type
Description

Authorization*

string

Bearer

Content-Type*

String

application/json

Request Body

Name
Type
Description

body*

object

A complete rule in JSON format

TypeError: rule.decisionTable.rows is not iterable
{
    "error": {
        "message": "Authentication token missing"
    }
}

Path Parameters

Name
Type
Description

ruleId*

string

9yrSPizz7lb5

version*

integer

TJzLrOP1EINh

Headers

Name
Type
Description

Authorization*

string

6M4q9gDafPGp

Content-Type*

String

OpsT3twTFJRe

Request Body

Name
Type
Description

body*

object

wo4gaGQFjC7p

Update rule might be useful when renaming a rule. First GET the rule you wish to rename, change thenameattribute of the returned JSON object and then use PUT Update rule with the changed JSON object.

Note that there are a few attributes of the rule that cannot be updated by the PUT endpoint. Namely, you cannot use PUT to change the rule ID, version and rule alias. Also, you cannot change the date of last update, since it gets updated automatically.

Create rule

POST https://api.decisionrules.io/api/rule

Creates rule based on the body of the request. The body must be formatted according to the example below.

Path Query Parameters

Name
Type
Description

path

string

Unique folder path leading to the rule.

version

integer

Business rule version.

Headers

Name
Type
Description

Authorization*

string

Bearer <MANAGEMENT_API_KEY>

Content-Type*

String

application/json

{
    "error": {
        "message": "Authentication token missing"
    }
}

Request body example

This example serves as a template for request bodies when creating rules with POST Create rule.

When updating rules with PUT Update rule, the body of the request must have the same format as well.

body example
{
    "name": "Test from Tutorial",
    "description": "",
    "inputSchema": {
        "Input attribute": {}
    },
    "outputSchema": {
        "Output Attribute": {}
    },
    "decisionTable": {
        "columns": [
            {
                "condition": {
                    "type": "simple",
                    "inputVariable": "Input attribute",
                    "name": "New Condition"
                },
                "columnId": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                "type": "input"
            },
            {
                "columnOutput": {
                    "type": "simple",
                    "outputVariable": "Output Attribute",
                    "name": "New Result"
                },
                "columnId": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                "type": "output"
            }
        ],
        "rows": [
            {
                "cells": [
                    {
                        "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                        "scalarCondition": {
                            "value": "",
                            "operator": "anything"
                        },
                        "type": "input"
                    },
                    {
                        "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                        "outputScalarValue": {
                            "value": "Hello from Tutorial"
                        },
                        "type": "output"
                    }
                ],
                "active": true
            }
        ]
    },
    "type": "decision-table",
    "status": "published",
    "createdIn": "2021-09-08T11:40:32.542Z",
    "lastUpdate": "2021-09-08T11:40:59.398Z",
    "tags": ["tagName"]
}

Delete rule

DELETE https://api.decisionrules.io/api/rule/:ruleId/:version

Deletes the rule.

Path Parameters

Name
Type
Description

ruleId*

string

Unique rule ID or alias which is common to all rule versions.

version

integer

Version of Rule. If not specified, all versions will be deleted!

Path Query Parameters

Name
Type
Description

path

string

Unique folder path leading to the rule.

version

integer

Business rule version.

Headers

Name
Type
Description

Authorization*

string

Bearer

Content-Type*

String

application/json

Error: This rule belongs to another user OR rule not found
{
    "error": {
        "message": "Authentication token missing"
    }
}

Path Parameters

Name
Type
Description

ruleId*

string

CfMUHelZSIU2

version

integer

zwf3bIA5cDgU

Headers

Name
Type
Description

Authorization*

string

kBQr0rNvibyK

Content-Type*

String

T9sgNzzO4IF2

If you do not specify version of the rule to be deleted, the endpoint will delete all versions of the rule. Please, use it with caution! Once deleted, rules cannot be recovered.

Lock rule

PATCH https://api.decisionrules.io/api/rule/lock/:ruleId/:version

Locks / Unlocks the rule.

Path Parameters

Name
Type
Description

ruleId

string

Unique rule ID or alias which is common to all rule versions.

version

integer

Version of Rule.

Path Query Parameters

Name
Type
Description

path

string

Unique folder path leading to the rule.

version

integer

Business rule version.

Headers

Name
Type
Description

Authorization*

string

Bearer

Content-Type*

String

application/json

Body example
{
    "locked": true | false
}
Error: Version is mandatory
OR
Error: Locked property incorrectly specified
{
    "error": {
        "message": "Authentication token missing"
    }
}

Spaces

Gets all types of rules and ruleflows in space

GET https://api.decisionrules.io/api/space/items

The desired space is determined by Management API Key. This endpoint also gets set of rules used in every ruleflow.

Headers

Name
Type
Description

Authorizaion*

String

Bearer <API_KEY>

Content-Type

String

application/json

[
  {
        "baseId": "009d9438-59fc-1531-50c5-76fb4741aaca",
        "version": 1,
        "name": "Client Profitability (Sample Rule)",
        "status": "published",
        "type": "decision-table",
        "tags": [],
        "description": "Sample client profitability rule",
        "lastUpdate": "2022-02-21T14:10:33.581Z"
    },
    {
        "baseId": "00941c5a-7d21-d332-7cbf-a4f742556a85",
        "version": 1,
        "name": "Decision Tree",
        "status": "published",
        "type": "decision-tree",
        "tags": [],
        "description": "",
        "lastUpdate": "2022-03-24T09:52:43.548Z"
    },
    {
        "baseId": "b7b3f52a-52f1-4b04-59ff-548bf063221b",
        "version": 1,
        "name": "Sample Rule Flow",
        "status": "pending",
        "type": "composition",
        "tags": [],
        "description": "This is sample description",
        "lastUpdate": "2021-11-14T08:43:22.611Z",
        "rules": [
            {
                "id": "e72a23a2-0838-c52b-a284-baac28bc41b8"
            }
        ]
    },
]
{
    // Response
}
{
    "error": {
        "message": "Authentication token missing"
    }
}

Headers

Name
Type
Description

Authorizaion*

String

lf2RvZVYAbHB

Content-Type

String

jRB25nYzcToa

Tags

Get Rules/Rule Flows by tags

GET https://api.decisionrules.io/api/tags/items

This endpoint allows you to get all rules/rule flows with certain tags. Desired space is derived from Management API Key.

Query Parameters

Name
Type
Description

tags*

string

Comma separated list of tags. The query at the end of the url address should look like this: ?tags=tag1,tag2. Such query would select all the rules where tag array contains both tag1 and tag

Headers

Name
Type
Description

Authorization*

String

Bearer <API_KEY>

Content-Type*

String

application/json

[
{
  "name": "Rule Name",
  "description": "",
  "inputSchema": {
    "Input attribute": {}
  },
  "outputSchema": {
    "Output Attribute": {}
  },
  "decisionTable": {
    "columns": [
      {
        "condition": {
          "type": "simple",
          "inputVariable": "Input attribute",
          "name": "New Condition"
        },
        "columnId": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
        "type": "input"
      },
      {
        "columnOutput": {
          "type": "simple",
          "outputVariable": "Output Attribute",
          "name": "New Result"
        },
        "columnId": "2e46eb73-de05-51bc-5913-4b261bbe2069",
        "type": "output"
      }
    ],
    "rows": [
      {
        "cells": [
          {
            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
            "scalarCondition": {
              "value": "",
              "operator": "anything"
            },
            "type": "input"
          },
          {
            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
            "outputScalarValue": {
              "value": "Hello from Solver"
            },
            "type": "output"
          }
        ]
      }
    ]
  },
  "type": "decision-table",
  "status": "published",
  "ruleId": "4ea...",
  "version": 1,
  "createdIn": "2021-09-03T06:35:42.663Z",
  "lastUpdate": "2021-09-03T06:35:42.663Z",
  "tags": ["tag1", "tag2"]
},
{
  "name": "Rule Name",
  "description": "",
  "inputSchema": {
    "Input attribute": {}
  },
  "outputSchema": {
    "Output Attribute": {}
  },
  "decisionTable": {
    "columns": [
      {
        "condition": {
          "type": "simple",
          "inputVariable": "Input attribute",
          "name": "New Condition"
        },
        "columnId": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
        "type": "input"
      },
      {
        "columnOutput": {
          "type": "simple",
          "outputVariable": "Output Attribute",
          "name": "New Result"
        },
        "columnId": "2e46eb73-de05-51bc-5913-4b261bbe2069",
        "type": "output"
      }
    ],
    "rows": [
      {
        "cells": [
          {
            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
            "scalarCondition": {
              "value": "",
              "operator": "anything"
            },
            "type": "input"
          },
          {
            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
            "outputScalarValue": {
              "value": "Hello from Solver"
            },
            "type": "output"
          }
        ]
      }
    ]
  },
  "type": "decision-table",
  "status": "published",
  "ruleId": "4ea...",
  "version": 2,
  "createdIn": "2021-09-03T06:35:42.663Z",
  "lastUpdate": "2021-09-03T06:35:42.663Z",
  "tags": ["tag1", "tag2"]
}
]
{
    "error": {
        "message": "Invalid API key"
    }
}
{
    "error": {
        "message": "Authentication token missing"
    }
}

Add tags to Rule/Rule Flow

PATCH https://api.decisionrules.io/api/tags/:id/:version?

If you specify the version, the tag/tags will be added to the specified version. If the version is not specified, the tag/tags will be added to all the versions with given ID.

Path Parameters

Name
Type
Description

id*

string

Unique rule ID or alias which is common to all rule versions. You can also use rule alias.

version

string

version of Rule/Rule Flow

Headers

Name
Type
Description

Authorization*

string

Bearer <API_KEY>

Content-Type*

String

application/json

Request Body

Name
Type
Description

body*

array

array of tags to add i JSON format

{message: "ok"}
{
    "error": {
        "message": "Invalid API key"
    }
}
{
    "error": {
        "message": "Authentication token missing"
    }
}
Patch request body example
[
        {
                "tagName": "yourTagName",
                "color": "green"
        }
]

// tagName is required
// No special characters other than: "()?!_.: -" are allowed

// color is optional
// you can select one of these colors: gray, violet, yellow, green, red, white
// if you don't input color field, default color will be inserted automatically

Delete tags from Rule/Rule Flow

DELETE https://api.decisionrules.io/api/tags/:id/:version?

If you specify the version, the tag/tags will be deleted from the specified version. If the version is not specified, the tag/tags will be deleted from all the versions with given ID.

Path Parameters

Name
Type
Description

id*

string

Unique rule ID or alias which is common to all rule versions. You can also use rule alias.

version

string

version of Rule/Rule Flow

Query Parameters

Name
Type
Description

tags*

string

Comma separated list of tags. The query at the end of the url address should look like this: ?tags=tag1,tag2

Headers

Name
Type
Description

Authorization*

string

Bearer <API_KEY>

Content-Type*

String

application/json

{message: 'ok'}
{
    "error": {
        "message": "Invalid API key"
    }
}
{
    "error": {
        "message": "Authentication token missing"
    }
}

RuleFlow Export/Import

Following endpoints can be used only to export and import Rule Flows. For managing Workflows, please store your Workflows with dependent rules in folders, then use folder API endpoints.

Export Rule Flow with all rules

GET https://api.decisionrules.io/api/rule-flow/export/:ruleFlowId/:version?

Export Rule Flow with all rules. If the version is not specified, export Rule Flow with the latest version.

Path Parameters

Name
Type
Description

ruleFlowId*

String

Unique rule flow ID or alias which is common to all versions.

version

Number

Headers

Name
Type
Description

Authorization*

String

Bearer

Content-Type*

String

application/json

[
  {
    "_id": "62627b2ac0fc11362331185e",
    "name": "Sample Rule Flow",
    "description": "This is sample description",
    "inputSchema": {
      "period": {},
      "productType": {},
      "promoCode": {}
    },
    "outputSchema": {
      "finalPrice": {},
      "crudePrice": {},
      "message": {}
    },
    "type": "composition",
    "status": "pending",
    "visualEditorData": {
      "drawflow": {
        "Home": {
          "data": {
            "1": {
              "id": 1,
              "data": {
                "type": "start"
              },
              "inputs": {},
              "outputs": {
                "output_1": {
                  "connections": [
                    {
                      "node": "2",
                      "output": "input_1"
                    }
                  ]
                }
              },
              "pos_x": 57,
              "pos_y": 218
            },
            "2": {
              "id": 2,
              "data": {
                "type": "node",
                "baseId": "f36bf7cf-bef4-1f4c-d756-c0b6f2f814ff",
                "globalVariable": "Rule_1"
              },
              "inputs": {
                "input_1": {
                  "connections": [
                    {
                      "node": "1",
                      "input": "output_1"
                    }
                  ]
                }
              },
              "outputs": {
                "output_1": {
                  "connections": [
                    {
                      "node": "3",
                      "output": "input_1"
                    }
                  ]
                }
              },
              "pos_x": 400,
              "pos_y": 150
            },
            "3": {
              "id": 3,
              "data": {
                "type": "end"
              },
              "inputs": {
                "input_1": {
                  "connections": [
                    {
                      "node": "2",
                      "input": "output_1"
                    }
                  ]
                }
              },
              "outputs": {},
              "pos_x": 785,
              "pos_y": 212
            }
          }
        }
      }
    },
    "dataTree": {
      "children": [
        {
          "baseId": "f36bf7cf-bef4-1f4c-d756-c0b6f2f814ff",
          "children": [
            {
              "children": [
                null
              ],
              "globalVariable": "end",
              "mapping": [
                {
                  "key": "finalPrice",
                  "source": "Rule_1",
                  "sourceVariable": "prices.finalPrice"
                },
                {
                  "key": "crudePrice",
                  "source": "Rule_1",
                  "sourceVariable": "prices.crudePrice"
                },
                {
                  "key": "message",
                  "source": "Rule_1",
                  "sourceVariable": "message"
                }
              ]
            }
          ],
          "globalVariable": "Rule_1",
          "mapping": [
            {
              "key": "period",
              "source": "start",
              "sourceVariable": "period"
            },
            {
              "key": "productType",
              "source": "start",
              "sourceVariable": "productType"
            },
            {
              "key": "promoCode",
              "source": "start",
              "sourceVariable": "promoCode"
            }
          ]
        }
      ],
      "globalVariable": "start",
      "mapping": []
    },
    "compositionId": "94c5ef08-d609-ef88-066a-fbeda7d1e537",
    "version": 1,
    "createdIn": "2022-04-22T09:53:46.744Z",
    "lastUpdate": "2022-04-22T09:53:46.744Z"
  },
  {
    "_id": "62627b2ac0fc11362331185d",
    "name": "Sample Rule Flow",
    "description": "This rule is a part of Sample Rule Flow.",
    "inputSchema": {
      "period": {},
      "productType": {},
      "promoCode": {}
    },
    "outputSchema": {
      "prices": {
        "finalPrice": {},
        "crudePrice": {}
      },
      "message": {}
    },
    "decisionTable": {
      "columns": [
        {
          "condition": {
            "type": "simple",
            "inputVariable": "productType",
            "name": "Product type"
          },
          "columnId": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
          "type": "input"
        },
        {
          "condition": {
            "type": "simple",
            "inputVariable": "period",
            "name": "Subscription period"
          },
          "columnId": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
          "type": "input"
        },
        {
          "condition": {
            "type": "simple",
            "inputVariable": "promoCode",
            "name": "New Condition"
          },
          "columnId": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
          "type": "input"
        },
        {
          "columnOutput": {
            "type": "simple",
            "outputVariable": "prices.crudePrice",
            "name": "Price without discounts"
          },
          "columnId": "2e46eb73-de05-51bc-5913-4b261bbe2069",
          "type": "output"
        },
        {
          "columnOutput": {
            "type": "simple",
            "outputVariable": "prices.finalPrice",
            "name": "Final price"
          },
          "columnId": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
          "type": "output"
        },
        {
          "columnOutput": {
            "type": "simple",
            "outputVariable": "message",
            "name": "New Result"
          },
          "columnId": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
          "type": "output"
        }
      ],
      "rows": [
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "basic",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "month",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "=",
                "value": "{PromoCode}",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "type": "common",
                "value": "8"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    "{prices.crudePrice}",
                    {
                      "functionName": "DIVIDED",
                      "parameters": [
                        {
                          "functionName": "MINUS",
                          "parameters": [
                            100,
                            "{PromoDiscount}"
                          ]
                        },
                        100
                      ]
                    }
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": {
                  "functionName": "CONCAT",
                  "parameters": [
                    "\"{PromoDiscount}\"",
                    "\"% discount\""
                  ]
                },
                "type": "function"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "basic",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "month",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "<>",
                "value": "{PromoCode}",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "type": "common",
                "value": "8"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": "{prices.crudePrice}",
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": "\"no matching promo code\"",
                "type": "common"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "basic",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "year",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "=",
                "value": "{PromoCode}",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "type": "function",
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    6,
                    12
                  ]
                }
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    "{prices.crudePrice}",
                    {
                      "functionName": "DIVIDED",
                      "parameters": [
                        {
                          "functionName": "MINUS",
                          "parameters": [
                            100,
                            "{PromoDiscount}"
                          ]
                        },
                        100
                      ]
                    }
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": {
                  "functionName": "CONCAT",
                  "parameters": [
                    "\"{PromoDiscount}\"",
                    "\"% discount\""
                  ]
                },
                "type": "function"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "basic",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "year",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "<>",
                "value": "{PromoCode}",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "type": "function",
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    6,
                    12
                  ]
                }
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": "{prices.crudePrice}",
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": "\"no matching promo code\"",
                "type": "common"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "medium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "month",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "IN",
                "value": [
                  "{PromoCode}",
                  "BUSINESS SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": "15",
                "type": "common"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    "{prices.crudePrice}",
                    {
                      "functionName": "DIVIDED",
                      "parameters": [
                        {
                          "functionName": "MINUS",
                          "parameters": [
                            100,
                            "{PromoDiscount}"
                          ]
                        },
                        100
                      ]
                    }
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": {
                  "functionName": "CONCAT",
                  "parameters": [
                    "\"{PromoDiscount}\"",
                    "\"% discount\""
                  ]
                },
                "type": "function"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "medium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "month",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "NOT IN",
                "value": [
                  "{PromoCode}",
                  "BUSINESS SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": "15",
                "type": "common"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": "{prices.crudePrice}",
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": "\"no matching promo code\"",
                "type": "common"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "medium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "year",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "IN",
                "value": [
                  "{PromoCode}",
                  "BUSINESS SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    12,
                    12
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    "{prices.crudePrice}",
                    {
                      "functionName": "DIVIDED",
                      "parameters": [
                        {
                          "functionName": "MINUS",
                          "parameters": [
                            100,
                            "{PromoDiscount}"
                          ]
                        },
                        100
                      ]
                    }
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": {
                  "functionName": "CONCAT",
                  "parameters": [
                    "\"{PromoDiscount}\"",
                    "\"% discount\""
                  ]
                },
                "type": "function"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "medium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "year",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "NOT IN",
                "value": [
                  "{PromoCode}",
                  "BUSINESS SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    12,
                    12
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": "{prices.crudePrice}",
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": "\"no matching promo code\"",
                "type": "common"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "premium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "month",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "IN",
                "value": [
                  "{PromoCode}",
                  "DIAMOND SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": "25",
                "type": "common"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    "{prices.crudePrice}",
                    {
                      "functionName": "DIVIDED",
                      "parameters": [
                        {
                          "functionName": "MINUS",
                          "parameters": [
                            100,
                            "{PromoDiscount}"
                          ]
                        },
                        100
                      ]
                    }
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": {
                  "functionName": "CONCAT",
                  "parameters": [
                    "\"{PromoDiscount}\"",
                    "\"% discount\""
                  ]
                },
                "type": "function"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "premium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "month",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "NOT IN",
                "value": [
                  "{PromoCode}",
                  "DIAMOND SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": "25",
                "type": "common"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": "{prices.crudePrice}",
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": "\"no matching promo code\"",
                "type": "common"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "premium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "year",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "IN",
                "value": [
                  "{PromoCode}",
                  "DIAMOND SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    21,
                    12
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    "{prices.crudePrice}",
                    {
                      "functionName": "DIVIDED",
                      "parameters": [
                        {
                          "functionName": "MINUS",
                          "parameters": [
                            100,
                            "{PromoDiscount}"
                          ]
                        },
                        100
                      ]
                    }
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": {
                  "functionName": "CONCAT",
                  "parameters": [
                    "\"{PromoDiscount}\"",
                    "\"% discount\""
                  ]
                },
                "type": "function"
              },
              "type": "output"
            }
          ],
          "active": true
        },
        {
          "cells": [
            {
              "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
              "scalarCondition": {
                "operator": "=",
                "value": "premium",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "ac44d6bf-ddd6-3778-7486-483c4bed53fd",
              "scalarCondition": {
                "operator": "=",
                "value": "year",
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "13b20cae-2d6f-0183-e970-b1c0fed5558f",
              "scalarCondition": {
                "operator": "NOT IN",
                "value": [
                  "{PromoCode}",
                  "DIAMOND SALE"
                ],
                "type": "general"
              },
              "type": "input"
            },
            {
              "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
              "outputScalarValue": {
                "value": {
                  "functionName": "TIMES",
                  "parameters": [
                    21,
                    12
                  ]
                },
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "92d6a186-702b-32f3-8d5d-ad1ab6b1c025",
              "outputScalarValue": {
                "value": "{prices.crudePrice}",
                "type": "function"
              },
              "type": "output"
            },
            {
              "column": "9fcb15be-aa42-9380-2145-4d2ff831aa34",
              "outputScalarValue": {
                "value": "\"no matching promo code\"",
                "type": "common"
              },
              "type": "output"
            }
          ],
          "active": true
        }
      ]
    },
    "type": "decision-table",
    "status": "published",
    "tags": [],
    "userVariables": [
      {
        "name": "PromoCode",
        "value": "SUMMER SALE",
        "saved": true,
        "editMode": true
      },
      {
        "name": "PromoDiscount",
        "value": 30,
        "saved": true,
        "editMode": true
      },
      {}
    ],
    "ruleId": "f36bf7cf-bef4-1f4c-d756-c0b6f2f814ff",
    "version": 1,
    "createdIn": "2022-04-22T09:53:46.586Z",
    "lastUpdate": "2022-04-22T09:53:46.586Z"
  }
]
{
  "error": {
    "message": "Invalid API key"
  }
}
{
    // Response
}

Import Rule Flow with all rules

POST https://api.decisionrules.io/api/rule-flow/import

Importing rule flow with rules included can overwrite previously created or imported rules having the same ruleId.

Import Rule Flow with all rules. If no query parameters are set, a new Rule Flow will be created. If the new-version and version query parameter are set, a new version of the targeted Rule Flow will be created. If the overwrite and version query parameters are set, a specific version of the target rule flow will be overwritten.

Query Parameters

Name
Type
Description

new-version

String

ID or alias of the target Rule Flow.

overwrite

String

ID or alias of the target Rule Flow.

version

Number

Version of target Rule Flow

Headers

Name
Type
Description

Authorization*

String

Bearer

Content-Type*

String

application/json

{
  "_id": "62627b2ac0fc11362331185e",
  "name": "Sample Rule Flow",
  "description": "This is sample description",
  "inputSchema": {
    "period": {},
    "productType": {},
    "promoCode": {}
  },
  "outputSchema": {
    "finalPrice": {},
    "crudePrice": {},
    "message": {}
  },
  "type": "composition",
  "status": "pending",
  "visualEditorData": {
    "drawflow": {
      "Home": {
        "data": {
          "1": {
            "id": 1,
            "data": {
              "type": "start"
            },
            "inputs": {},
            "outputs": {
              "output_1": {
                "connections": [
                  {
                    "node": "2",
                    "output": "input_1"
                  }
                ]
              }
            },
            "pos_x": 57,
            "pos_y": 218
          },
          "2": {
            "id": 2,
            "data": {
              "type": "node",
              "baseId": "f36bf7cf-bef4-1f4c-d756-c0b6f2f814ff",
              "globalVariable": "Rule_1"
            },
            "inputs": {
              "input_1": {
                "connections": [
                  {
                    "node": "1",
                    "input": "output_1"
                  }
                ]
              }
            },
            "outputs": {
              "output_1": {
                "connections": [
                  {
                    "node": "3",
                    "output": "input_1"
                  }
                ]
              }
            },
            "pos_x": 400,
            "pos_y": 150
          },
          "3": {
            "id": 3,
            "data": {
              "type": "end"
            },
            "inputs": {
              "input_1": {
                "connections": [
                  {
                    "node": "2",
                    "input": "output_1"
                  }
                ]
              }
            },
            "outputs": {},
            "pos_x": 785,
            "pos_y": 212
          }
        }
      }
    }
  },
  "dataTree": {
    "children": [
      {
        "baseId": "f36bf7cf-bef4-1f4c-d756-c0b6f2f814ff",
        "children": [
          {
            "children": [
              null
            ],
            "globalVariable": "end",
            "mapping": [
              {
                "key": "finalPrice",
                "source": "Rule_1",
                "sourceVariable": "prices.finalPrice"
              },
              {
                "key": "crudePrice",
                "source": "Rule_1",
                "sourceVariable": "prices.crudePrice"
              },
              {
                "key": "message",
                "source": "Rule_1",
                "sourceVariable": "message"
              }
            ]
          }
        ],
        "globalVariable": "Rule_1",
        "mapping": [
          {
            "key": "period",
            "source": "start",
            "sourceVariable": "period"
          },
          {
            "key": "productType",
            "source": "start",
            "sourceVariable": "productType"
          },
          {
            "key": "promoCode",
            "source": "start",
            "sourceVariable": "promoCode"
          }
        ]
      }
    ],
    "globalVariable": "start",
    "mapping": []
  },
  "compositionId": "94c5ef08-d609-ef88-066a-fbeda7d1e537",
  "version": 1,
  "createdIn": "2022-04-22T09:53:46.744Z",
  "lastUpdate": "2022-04-22T09:53:46.744Z"
}
{
  "error": {
    "message": "Invalid API key"
  }
}
{
    Error: Rule Flow is missing the property 'name'!
}
{
    // Response
}

Folders

Export folder with all rules

GET https://api.decisionrules.io/api/folder/export/{nodeId}

Export folder with all rules. If no nodeId is set, then will be exported root directory.

Path Parameters

Name
Type
Description

nodeId

String

If you know your folder id, you can export it. Otherwise you export root directory

Headers

Name
Type
Description

Content-Type*

String

application/json

Authorization*

String

Bearer

Use the endpoints listed below to manage the folder structure of your space.

If the request body contains rules (defined by baseId or ruleAlias), the are moved to fit with the request. In the request example below, if the space contains a rule with id "xxx-yyy-zzz", it will be moved into the newly created "Example Sub-Folder" Folder.

When moving Rules - If a version is not defined all of the rule versions will be moved.

Any existing Folder children of the target node will be deleted. (Rules, which aren't part of the request body will be moved to the root)

If the request body contains rules (defined by baseId or ruleAlias), the are moved to fit with the request. In the request example below, if the space contains a rule with id "xxx-yyy-zzz", it will be moved into the newly created "Example Sub-Folder" Folder.

When moving Rules - If a version is not defined all of the rule versions will be moved.

Data removal is permanent and cannot be undone.

Searchable attribues:

  • name - Name of the Folder or Rule

    • Note: this attribute searches for a RegExp match by default, if you wish to find nodes which match the input exactly prepend the input with "^" and append with "$". For example if you want to find items which are named exactly "ClientA", try searching "^ClientA$"

  • id - ID of the Folder

  • ruleAlias - Rule-Alias

    • Note: this attribute searches for a RegExp match by default, if you wish to find nodes which match the input exactly prepend the input with "^" and append with "$". For example if you want to find rules the exact alias "ClientA", try searching "^ClientA$"

  • baseId - RuleId of the Rule or Rule Flow

  • ruleType - type of rule

    • "decision-table" - Decision Table

    • "decision-tree" - Decision Tree

    • "complex-rule" - Scripting Rule

    • "composition" - Rule Flow

  • tags - Tags on a Rule

  • type - Type of Node in Folder Structure

    • FOLDER

    • RULE

    • ROOT

  • version - Version of the rule

  • ruleStatus

    • published

    • pending

Export folder with all rules

GET https://api.decisionrules.io/api/folder/export/{nodeId}

Path Parameters

Name
Type
Description

nodeId

String

CVAEjOf71DAP

Path Query Parameters

Name
Type
Description

path

string

Unique folder path leading to the rule.

version

integer

Business rule version.

Headers

Name
Type
Description

Content-Type*

String

RGr6dnzLvhJy

Authorization*

String

2DWTCHKmYqZj

Import folder and all rules.

POST https://api.decisionrules.io/api/folder/import/{targetNodeId}

Import folder with all rules into specific folder. If no targetNodeId is set, then will be imported into root directory.

Path Parameters

Name
Type
Description

targetNodeId

String

If you know you targetNodeId, you can import it. Otherwise you import folder into root directory.

Path Query Parameters

Name
Type
Description

path

string

Unique folder path leading to the rule.

version

integer

Business rule version.

Headers

Name
Type
Description

Content-Type*

String

application/json

Authorization*

String

Bearer

Request Body

Name
Type
Description

export

object

exportType

string

version

number

createdAt

Date

data

object

Common Use cases

Create an empty folder in root
async function createEmptyFolder(folderName) {
    // Create URL
    const url = "https://api.decisionrules.io/api/folder"
    
    // Define the new Folder
    const folderToCreate = {
        name: folderName,
        type: "FOLDER",
        children: []
    }

    // POST the folder
    const response = await fetch(url, {
        method: "POST",
        headers: {
            "Authorization": `Bearer ${ManagementApiKey}`,
            "Content-Type": "application/json"
        },
        body: JSON.stringify(folderToCreate)
    })
    
    return;
}
// Set the folder name
createEmptyFolder('New Folder')
Migrate Rules and Folders from one Space to another
async function migrateSpace(oldSpaceManagementKey, targetSpaceManagementKey) {
    // Create URL
    try {
        const url = 'https://api.decisionrules.io/api/folder/';
    
        // Export old Space contents
        const exportResponse = await fetch(url + 'export', {
            method: "GET",
            headers: {
                "Authorization": `Bearer ${oldSpaceManagementKey}`,
                "Content-Type": "application/json"
            }
        })
        
        // Convert response to json
        const exportedFolder = await exportResponse.json()
    
        // Import the Folder into the new Space
        // This creates a folder named "Home (Imported)" in the target Space.
        const importResponse = await fetch(url + 'import', {
            method: "POST",
            headers: {
                "Authorization": `Bearer ${targetSpaceManagementKey}`,
                "Content-Type": "application/json"
            },
            body: JSON.stringify(exportedFolder)
        })
        
        const createdFolderIdObject = await importResponse.json()
        const createdFolderId = createdFolderIdObject.folderNode

        // Get Folder Structure of created Node
        const folderStructureResponse = await fetch(url + createdFolderId, {
            method: "GET",
            headers: {
                "Authorization": `Bearer ${targetSpaceManagementKey}`,
                "Content-Type": "application/json"
            }
        })
        // Convert response to json
        const FolderStructure = await folderStructureResponse.json()
        
        // Move all folders from the "Home (Imported)" folder 
        // out to the root to maintain Folder Structure
        
        // Prepare Move request
        const nodesToMove = FolderStructure.children
        nodesToMove.forEach(child => {
            delete child.name
            delete child.children
            delete child.baseId
        })
        const moveRequest = {
            targetId: 'root',
            nodes: nodesToMove
        }
        // Move the nodes
        await fetch(url + 'move', {
            method: "PUT",
            headers: {
                "Authorization": `Bearer ${targetSpaceManagementKey}`,
                "Content-Type": "application/json"
            },
            body: JSON.stringify(moveRequest)
        })  
    
        // Delete the empty "Home" folder
        await fetch(url + `${createdFolderId}`, {
            method: "DELETE",
            headers: {
                "Authorization": `Bearer ${targetSpaceManagementKey}`,
                "Content-Type": "application/json"
            },
        })  
        console.log('Migration Completed Successfully')
    }
    catch(e) {
        console.log(`Error occured during migration: ${e.message}`)
    }
}

const sourceApiKey = '<SOURCE_SPACE_MANAGEMENT_API_KEY>';
const targetApiKey = '<TARGET_SPACE_MANAGEMENT_API_KEY>';

migrateSpace(sourceApiKey, targetApiKey);

Tools

There are some additional tools for individual rules that can be taken advantage of. Their description can be found below.

Find duplicate conditions in decision table

GET https://api.decisionrules.io/api/tools/duplicates/{ruleId}/{version}

Look for decision table by id and optionally version. If the decision table is found, it is returned together with an array of duplicates.

Path Parameters

Name
Type
Description

ruleId*

String

version

String

rule version

Response Example
{
    "rule": {
        "_id": "6305ec5a42a45d1591c40767",
        "name": "Simple Sample",
        "description": "",
        "inputSchema": {
            "input": {}
        },
        "outputSchema": {
            "output": {}
        },
        "decisionTable": {
            "columns": [
                {
                    "condition": {
                        "type": "simple",
                        "inputVariable": "input",
                        "name": "New Condition"
                    },
                    "columnId": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                    "type": "input"
                },
                {
                    "columnOutput": {
                        "type": "simple",
                        "outputVariable": "output",
                        "name": "New Result"
                    },
                    "columnId": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                    "type": "output"
                }
            ],
            "rows": [
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "0",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "A"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                },
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "1",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "B"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                },
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "1",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "BB"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                },
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "2",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "C"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                },
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "1",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "BBB"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                }
            ]
        },
        "type": "decision-table",
        "status": "published",
        "auditLog": {
            "active": false,
            "debug": {
                "active": false
            },
            "ttl": 14
        },
        "ruleId": "3ea681e8-256a-7ddf-9fd2-e79fac231d60",
        "version": 1,
        "tags": [],
        "baseId": "3ea681e8-256a-7ddf-9fd2-e79fac231d60",
        "createdIn": "2022-08-24T09:16:10.142Z",
        "lastUpdate": "2022-08-24T09:17:56.036Z"
    },
    "duplicates": [
        {
            "indices": [
                1,
                2,
                4
            ],
            "rows": [
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "1",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "B"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                },
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "1",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "BB"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                },
                {
                    "cells": [
                        {
                            "column": "ec57bb7c-8e90-4aee-da49-17b607a6b09a",
                            "scalarCondition": {
                                "operator": "=",
                                "value": "1",
                                "type": "general"
                            },
                            "type": "input"
                        },
                        {
                            "column": "2e46eb73-de05-51bc-5913-4b261bbe2069",
                            "outputScalarValue": {
                                "type": "common",
                                "value": "BBB"
                            },
                            "type": "output"
                        }
                    ],
                    "active": true
                }
            ]
        }
    ]
}

Find all dependencies of a rule

GET https://api.decisionrules.io/api/tools/dependencies/{identifier}/{version}

Look for dependencies by id or alias and optionally version. If the rule is found, it is returned together with an array of dependencies.

Path Parameters

Name
Type
Description

identifier*

String

Id or Alias of the rule, you want to find out dependencies of.

version

String

Response Example

{
    "rule": {
        "baseId": "8803df20-b515-0c2f-d916-c1621456a350",
        "version": 1,
        "ruleAlias": "handsome-rhinoceros",
        "name": "Import Rule",
        "type": "composition",
        "status": "published"
    },
    "dependencies": [
        {
            "baseId": "6c75221b-3d00-6665-a229-852ada5a921c",
            "version": 1,
            "ruleAlias": "blonde-wolf",
            "name": "Import Rule",
            "type": "decision-table",
            "status": "published",
            "parent": {
                "baseId": "8803df20-b515-0c2f-d916-c1621456a350",
                "version": 1,
                "ruleAlias": "handsome-rhinoceros",
                "name": "Import Rule",
                "type": "composition",
                "status": "published"
            }
        }
    ]
}

You can target the rule using instead of the :ruleId and :version parameters.

You can target the rule using instead of the :ruleId and :version parameters.

You can create the rule in a specific folder by utilizing .

You can target the rule using instead of the :ruleId and :version parameters.

You can target the rule using instead of the :ruleId and :version parameters.

All Folder endpoints make use of for convenience.

You can target the rule using instead of the :ruleId and :version parameters.

You can target the rule using instead of the :ruleId and :version parameters.

Folder Path
Folder Path
Folder Path
Folder Path
Folder Path
Folder Paths
Folder Path
Folder Path
https://api.decisionrules.io/api/docs/
https://api.decisionrules.io/api/docs/json
here
Page cover image
4KB
import_folder_example.json

Get folder structure of a node

get

Retrieve folder structure either by node ID or by navigating through path. Returns a JSON with a tree like structure containing the descendant folders and rules of the target node.

Path parameters
targetNodeIdstringOptional

ID of the folder

Query parameters
pathstringOptional

Path of folder names

Responses
200
Successful response
application/json
400
Bad Request
get
GET /api/folder/:targetNodeId HTTP/1.1
Host: api.decisionrules.io
Accept: */*
{
  "type": "FOLDER",
  "name": "Example Folder",
  "children": [
    {
      "type": "FOLDER",
      "name": "Example Sub-Folder",
      "id": "B456",
      "children": [
        {
          "type": "RULE",
          "name": "Sample Table",
          "baseId": "xxx-yyy-zzz",
          "version": 1
        },
        {
          "type": "RULE",
          "name": "Production Table",
          "ruleAlias": "calcuation-rule"
        }
      ]
    }
  ]
}

Delete a folder and all of its descendants (Including it's rules!)

delete

Delete a folder (Including it's rules) either by node ID or by navigating through path. If you want to delete the contents of the entire space target the 'root' by Id and include the optional query parameter ?deleteAll=true

Path parameters
targetNodeIdstringOptional

ID of the folder

Query parameters
pathstringOptional

Path of folder names

deleteAllbooleanOptional

Confirmation to delete everything in Space

Responses
200
Successful response
400
Bad Request
delete
DELETE /api/folder/:targetNodeId HTTP/1.1
Host: api.decisionrules.io
Accept: */*

No content

  • Swagger
  • Folder Paths
  • Rules and Rule Flows
  • Get rule
  • Update rule status
  • Update rule
  • Create rule
  • Delete rule
  • Lock rule
  • Spaces
  • Gets all types of rules and ruleflows in space
  • Tags
  • Get Rules/Rule Flows by tags
  • Add tags to Rule/Rule Flow
  • Delete tags from Rule/Rule Flow
  • RuleFlow Export/Import
  • Export Rule Flow with all rules
  • Import Rule Flow with all rules
  • Folders
  • Export folder with all rules
  • GETGet folder structure of a node
  • POSTCreate folders
  • PUTCreate or overwrite folder structure of a node
  • DELETEDelete a folder and all of its descendants (Including it's rules!)
  • PATCHRename a folder
  • PUTMove Folders from their current position under a new parent
  • POSTFind a folder or rule by attribute
  • Export folder with all rules
  • Import folder and all rules.
  • Common Use cases
  • Tools
  • Find duplicate conditions in decision table
  • Find all dependencies of a rule

Create folders

post

Creates folders under a specified target, moves rules into the new structure by baseId or ruleAlias. Define which folder's structure to update by either inputting it's id as a parameter or by navigating to it using the ?path=/ query parameter. Appends the Folder Structure specified in the request body as a child of the target node.

Path parameters
targetNodeIdstringOptional

ID of the folder

Query parameters
pathstringOptional

Path of folder names

Body
typestring · enumOptionalPossible values:
namestringOptional
idstringOptional
baseIdstringOptional
versionnumberOptional
Responses
200
Successful response
400
Bad Request
post
POST /api/folder/:targetNodeId HTTP/1.1
Host: api.decisionrules.io
Content-Type: application/json
Accept: */*
Content-Length: 270

{
  "type": "FOLDER",
  "name": "Example Folder",
  "children": [
    {
      "type": "FOLDER",
      "name": "Example Sub-Folder",
      "id": "B456",
      "children": [
        {
          "type": "RULE",
          "name": "Sample Table",
          "baseId": "xxx-yyy-zzz",
          "version": 1
        },
        {
          "type": "RULE",
          "name": "Production Table",
          "ruleAlias": "calcuation-rule"
        }
      ]
    }
  ]
}

No content

Create or overwrite folder structure of a node

put

Define which folder's structure to overwrite by either inputting it's id as a parameter or by navigating to it using the ?path=/ query parameter. Moves rules into the new structure by baseId or ruleAlias. Overwrites the Folder Structure specified in the request body as a child of the target node.

Path parameters
targetNodeIdstringOptional

ID of the folder

Query parameters
pathstringOptional

Path of folder names

Body
typestring · enumOptionalPossible values:
namestringOptional
idstringOptional
baseIdstringOptional
versionnumberOptional
Responses
200
Successful response
400
Bad Request
put
PUT /api/folder/:targetNodeId HTTP/1.1
Host: api.decisionrules.io
Content-Type: application/json
Accept: */*
Content-Length: 270

{
  "type": "FOLDER",
  "name": "Example Folder",
  "children": [
    {
      "type": "FOLDER",
      "name": "Example Sub-Folder",
      "id": "B456",
      "children": [
        {
          "type": "RULE",
          "name": "Sample Table",
          "baseId": "xxx-yyy-zzz",
          "version": 1
        },
        {
          "type": "RULE",
          "name": "Production Table",
          "ruleAlias": "calcuation-rule"
        }
      ]
    }
  ]
}

No content

Rename a folder

patch

Define which folder to rename by either inputting it's id as a parameter or by navigating to it using the ?path=/ query parameter. Set a new name for a Folder in the request body with the "name" attribute.

Path parameters
targetNodeIdstringOptional

ID of the folder

Query parameters
pathstringOptional

Path of folder names

Body
namestringOptional
Responses
200
Successful response
400
Bad Request
patch
PATCH /api/folder/rename/:targetNodeId HTTP/1.1
Host: api.decisionrules.io
Content-Type: application/json
Accept: */*
Content-Length: 25

{
  "name": "Renamed Folder"
}

No content

Move Folders from their current position under a new parent

put

Moves folders (including descendants) and/or rules under the parent specified by targetId or targetPath attribute in the request body.

Body
targetId?stringOptional
targetPath?stringOptional
Responses
200
Successful response
400
Bad Request
put
PUT /api/folder/move HTTP/1.1
Host: api.decisionrules.io
Content-Type: application/json
Accept: */*
Content-Length: 170

{
  "targetPath": "/customers/BigSpend",
  "nodes": [
    {
      "type": "FOLDER",
      "id": "folderId123456"
    },
    {
      "type": "RULE",
      "baseId": "xxx-yyy-zzz"
    },
    {
      "type": "RULE",
      "ruleAlias": "important-rule"
    }
  ]
}

No content

Find a folder or rule by attribute

post

Finds Folders and Rules which satisfy all of the criteria from the request body. Use any of the attributes listed below or their combination to find folders and rules.

Body
name?stringOptional
id?stringOptional
baseId?stringOptional
ruleAlias?stringOptional
ruleType?string · enumOptionalPossible values:
tags?string[]Optional
ruleState?string · enumOptionalPossible values:
type?string · enumOptionalPossible values:
version?numberOptional
Responses
200
Successful response
application/json
ResponseanyExample: {"name":"Important table","baseId":"f30df343-e22d-4f39-d40f-ad5c946034f0","version":2,"ruleAlias":"big-production-table","ruleType":"decision-table","ruleStatus":"published","type":"RULE","tags":[],"description":"Sample Pricing Rule","parentId":"61a17c3d-2a32-f03a-1c41-64fd4f540d30","path":"/ClientA/production"}
400
Bad Request
post
POST /api/folder/find HTTP/1.1
Host: api.decisionrules.io
Content-Type: application/json
Accept: */*
Content-Length: 50

{
  "ruleAlias": "production",
  "ruleState": "published"
}
{
  "name": "Important table",
  "baseId": "f30df343-e22d-4f39-d40f-ad5c946034f0",
  "version": 2,
  "ruleAlias": "big-production-table",
  "ruleType": "decision-table",
  "ruleStatus": "published",
  "type": "RULE",
  "tags": [],
  "description": "Sample Pricing Rule",
  "parentId": "61a17c3d-2a32-f03a-1c41-64fd4f540d30",
  "path": "/ClientA/production"
}