PowerDecisionDocs
Back to Wizard

PowerDecision Quick Reference

API Endpoints

MethodEndpointDescription
POST/api/powerdecision/v1/decisionsSubmit a decision job
GET/api/powerdecision/v1/decisions/{jobId}Get decision job status & result
POST/api/powerdecision/v1/models/uploadUpload a model from wizard JSON
GET/api/powerdecision/v1/modelsList all decision models
GET/q/healthQuarkus health check (liveness + readiness)
GET/health/livenessCustom liveness probe
GET/health/readinessCustom readiness probe
GET/openapiOpenAPI spec (JSON)
GET/swagger-ui.htmlSwagger UI

Job Statuses

StatusTerminal?Description
ACCEPTEDNoJob submitted, queued for processing
PENDINGNoJob stored, waiting to start
PROCESSINGNoDMN model being evaluated
SUCCESSYesDecision evaluated successfully
ERRORYesDecision evaluation failed

Hit Policies

PolicyBehavior
FIRSTFirst matching rule wins (default; recommended when default rule exists)
UNIQUEExactly one rule must match; fails if zero or multiple match
PRIORITYAll matching rules evaluated; highest-priority result returned
ANYMultiple rules may match; all must produce same output
COLLECTAll matching rules collected; returns list of results

Data Types

Wizard TypeDMN FEEL TypeExample
stringstring"EMPLOYED"
integernumber42
numbernumber3.14
booleanbooleantrue
datedate2026-01-15
enumstring"HIGH" (from allowed values)

Condition Operators

OperatorFEEL OutputExample
eq"value"{"eq": "EMPLOYED"}
neqnot("value"){"neq": "UNEMPLOYED"}
gt> value{"gt": 700}
gte>= value{"gte": 750}
lt< value{"lt": 600}
lte<= value{"lte": 100}
between[a..b]{"between": [600, 750]}
inin (a, b){"in": ["A", "B"]}
isNullnull{"isNull": true}
andexpr and exprCompound: array of conditions
orexpr or exprCompound: array of conditions
default- (match-all){"default": true}

Decision Templates

TemplateSectorUse Case
loan_approvalBankingAutomated loan approval based on credit, income, debt
credit_limit_determinationFinanceCredit limit calculation from risk factors
customer_risk_classificationInsuranceRisk tier classification for customers
fraud_detectionSecurityTransaction fraud scoring and flagging
insurance_premium_calculationInsurancePremium calculation based on risk profile
product_recommendationRetailProduct recommendation from customer attributes
support_ticket_routingIT/SupportTicket priority and department routing

Environment Variables

VariableDefaultDescription
QUARKUS_HTTP_PORT8031API server port
quarkus.http.corstrueEnable CORS
quarkus.http.cors.origins*Allowed CORS origins
quarkus.redis.hostsredis://localhost:6379Redis connection URL (model registry persistence)
powerdecision.models.pathmodelsDirectory for uploaded DMN model files
JAVA_OPTS-Xmx1024m -Xms512mJVM memory settings

Decision Spec (Execution Request)

POST /api/powerdecision/v1/decisions
Content-Type: application/json

{
    "model_id": "loan_approval",
    "version": "1.0.0",
    "context": {},
    "inputs": {
        "applicant_age": 35,
        "credit_score": 780,
        "annual_income": 85000,
        "loan_amount": 250000,
        "employment_status": "EMPLOYED",
        "existing_debt": 0
    }
}

Wizard JSON Template (Model Upload)

POST /api/powerdecision/v1/models/upload
Content-Type: application/json

{
    "model_id": "my_decision",
    "version": "1.0.0",
    "inputs_schema": {
        "field_name": { "type": "string|integer|number|boolean|enum", "required": true }
    },
    "outputs_schema": {
        "result_field": { "type": "boolean", "required": true }
    },
    "policy": { "hit_policy": "FIRST" },
    "rules": [
        { "id": "rule_1", "when": { "field_name": { "eq": "value" } }, "then": { "result_field": true } },
        { "id": "rule_default", "when": { "default": true }, "then": { "result_field": false } }
    ]
}

Decision Result Response

{
    "model_id": "loan_approval",
    "version": "1.0.0",
    "status": "SUCCESS",
    "decision": {
        "result": { "approved": true, "reasonCode": "APPROVED_EXCELLENT", "interest_rate": 3.5 },
        "decision_name": "loan_approval"
    },
    "explanation": { "matched_rules": [...], "confidence": 0.95 },
    "metadata": { "executed_at": "2026-03-02T10:00:00Z", "execution_time_ms": 45 }
}

Docker Commands

ActionCommand
Build & startdocker compose up -d --build
Startdocker start powerdecision-api
Stopdocker stop powerdecision-api
View logsdocker logs -f powerdecision-api
Health checkcurl http://localhost:8031/q/health
Swagger UIhttp://localhost:8031/swagger-ui.html

File Locations

ComponentPath
Decision APIdecision-api/
Decision Wizarddecision-wizard/
Decision Templatesdecision-templates/
Uploaded Models (Docker)/app/models/
DocumentationDocumentation/

Environment URLs

EnvironmentAPIHealthSwagger
Localhttp://localhost:8031http://localhost:8031/q/healthhttp://localhost:8031/swagger-ui.html
Productionhttps://decision-api.planningpowertools.comhttps://decision-api.planningpowertools.com/q/healthN/A

Support