Skip to content

Evaluate an immutable decision revision

POST
/api/v1/fire-decision/scenarios/{scenarioId}/revisions/{revisionId}/evaluate
curl --request POST \
--url https://indepai.app/api/v1/fire-decision/scenarios/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/revisions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/evaluate \
--header 'Authorization: Bearer <token>' \
--header 'Idempotency-Key: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0'

Evaluates each requested claim against its frozen financial, budget, evidence, tax, and visa dependencies. Unsupported or incomplete claims return a successful fail-closed receipt with Limited or Blocked readiness; they never inherit a favorable fallback.

scenarioId
required

Owner-scoped decision scenario UUID

string format: uuid
revisionId
required

Immutable scenario revision UUID

string format: uuid
Idempotency-Key
required

Client-generated replay key

string format: uuid

Immutable decision receipt, including explicit Limited or Blocked claim states

Media typeapplication/json
object
success
required
boolean
data
required
object
receiptId
required

Unique identifier (UUID v4)

string format: uuid
scenarioRevisionId
required

Unique identifier (UUID v4)

string format: uuid
computedAt
required

Timestamp in ISO 8601 format

string format: date-time
readiness
required
string
Allowed values: ready limited blocked
claimResults
required
Array<object>
>= 1 items <= 7 items
object
claim
required
string
Allowed values: pre_tax_city_budget deterministic_fi_date after_tax_fi_date named_visa_eligibility personalized_destination_rank simulation_success_rate withdrawal_policy_comparison
state
required
string
Allowed values: ready limited blocked
value
reasonCodes
required
Array<string>
<= 32 items
evidenceFactIds
required
Array<string>
<= 128 items
included
required
Array<string>
<= 64 items
excluded
required
Array<string>
<= 64 items
versions
required
object
contract
required
string
Allowed values: decision-contract/1
orchestrator
required
string
>= 1 characters <= 80 characters
fiKernel
required
string
>= 1 characters <= 80 characters
taxRuleSetIds
required
Array<string>
<= 32 items
visaRuleSetIds
required
Array<string>
<= 32 items
evidenceSnapshotId
required

Unique identifier (UUID v4)

string format: uuid
simulation
object
model
required
string
>= 1 characters <= 80 characters
parameterSet
required
string
>= 1 characters <= 120 characters
prng
required
string
>= 1 characters <= 80 characters
seed
required
string
>= 1 characters <= 128 characters
inputHash
required
string
/^[a-f0-9]{64}$/
warnings
required
Array<object>
<= 64 items
object
code
required
string
>= 3 characters <= 96 characters /^(?:INPUT|BUDGET|FX|TAX|TREATY|VISA|SOURCE|MODEL|BASIS|ENGINE)_[A-Z0-9_]+$/
messageKey
required
string
>= 1 characters <= 160 characters /^[a-zA-Z0-9_.-]+$/
evidenceFactIds
Array<string>
default: <= 64 items
disclaimer
required
object
kind
required
string
Allowed values: educational_estimate
messageKey
required
string
>= 1 characters <= 160 characters /^[a-zA-Z0-9_.-]+$/
verifyBeforeActing
required
boolean
meta
required
object
requestId
required

Unique identifier (UUID v4)

string format: uuid
contractVersion
required
string
Allowed values: decision-contract/1
Example
{
"success": true,
"data": {
"receiptId": "550e8400-e29b-41d4-a716-446655440000",
"scenarioRevisionId": "550e8400-e29b-41d4-a716-446655440000",
"computedAt": "2024-01-15T10:30:00Z",
"readiness": "ready",
"claimResults": [
{
"claim": "pre_tax_city_budget",
"state": "ready",
"evidenceFactIds": [
"550e8400-e29b-41d4-a716-446655440000"
]
}
],
"versions": {
"contract": "decision-contract/1",
"taxRuleSetIds": [
"550e8400-e29b-41d4-a716-446655440000"
],
"visaRuleSetIds": [
"550e8400-e29b-41d4-a716-446655440000"
],
"evidenceSnapshotId": "550e8400-e29b-41d4-a716-446655440000"
},
"warnings": [
{
"evidenceFactIds": []
}
],
"disclaimer": {
"kind": "educational_estimate",
"verifyBeforeActing": true
}
},
"meta": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"contractVersion": "decision-contract/1"
}
}

Invalid identifiers or idempotency key

Media typeapplication/json
object
success
required

Always false for error responses

boolean
error
required

Error type

string
code

Machine-readable error code

string
details

Detailed validation errors

Array<object>
object
path
required

Path to the invalid field

string
message
required

Error message

string
Example
{
"success": false,
"error": "Validation error",
"code": "VALIDATION_ERROR",
"details": [
{
"path": "currentAge",
"message": "Must be between 18 and 100"
}
]
}

Authentication required

Media typeapplication/json
object
success
required

Always false for error responses

boolean
error
required

Error type

string
code

Machine-readable error code

string
details

Detailed validation errors

Array<object>
object
path
required

Path to the invalid field

string
message
required

Error message

string
Example
{
"success": false,
"error": "Validation error",
"code": "VALIDATION_ERROR",
"details": [
{
"path": "currentAge",
"message": "Must be between 18 and 100"
}
]
}

Owned scenario revision not found

Media typeapplication/json
object
success
required

Always false for error responses

boolean
error
required

Error type

string
code

Machine-readable error code

string
details

Detailed validation errors

Array<object>
object
path
required

Path to the invalid field

string
message
required

Error message

string
Example
{
"success": false,
"error": "Validation error",
"code": "VALIDATION_ERROR",
"details": [
{
"path": "currentAge",
"message": "Must be between 18 and 100"
}
]
}

Rate limit exceeded

Media typeapplication/json
object
success
required

Always false for error responses

boolean
error
required

Error type

string
code

Machine-readable error code

string
details

Detailed validation errors

Array<object>
object
path
required

Path to the invalid field

string
message
required

Error message

string
Example
{
"success": false,
"error": "Validation error",
"code": "VALIDATION_ERROR",
"details": [
{
"path": "currentAge",
"message": "Must be between 18 and 100"
}
]
}