Initializing help system before first use

Scenario resources

Operation Description
POST /api/scenarios

Create or clone a scenario

POST /api/scenarios/queries/any-modified-since

Queries whether any scenarios have been modified

DELETE /api/scenarios/{id}

Delete a scenario

GET /api/scenarios/{id}

Get a scenario

PATCH /api/scenarios/{id}

Update a scenario

PATCH /api/scenarios/{id}/data

Modify scenario data

POST /api/scenarios/{id}/data

Get the data from a scenario

GET /api/scenarios/{id}/job-metrics

Get the job metrics

GET /api/scenarios/{id}/run-log

Get the scenario run log

POST /api/scenarios

Create or clone a scenario

The payload specifies the attributes of the new scenario. The name attribute specifies the preferred name for the scenario; a suffix will be applied to ensure its name is unique among its siblings. The scenarioType attribute specifies the type of scenario to create; the app defines the available scenario types. If no scenarioType is supplied it defaults to SCENARIO. The parent attribute specifies the folder or app the scenario will be created within. It must be an app or a folder and must declare its objectType and ID. To clone a scenario specify a sourceScenario. When cloning, the new scenario will have the same scenario type as the source and any supplied scenarioType will be ignored. The scenario will be cloned into the same location as the source scenario if the parent attribute is omitted.

Security: SCENARIO_NEW is required to create a new scenario and the user must have permission to modify the contents of the parent folder or app. When cloning, the user must also have permission to read the source scenario.

Request Body

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Responses

201 Created

The scenario was successfully created

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Location

The URL of the created resource

string
403 Forbidden

The user did not have authorization to create this scenario

422 Unprocessable Entity

The app, parent folder or source scenario were unavailable to the current user

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-422",
"desc": "Unprocessable Entity",
"innerError": {
"code": "FICO-Platform-Validation-InvalidValue",
"desc": "Entity processing failed",
"message": "parent.id is unavailable"
},
"message": "Unprocessable Entity",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

POST /api/scenarios/queries/any-modified-since

Queries whether any scenarios have been modified

Discover whether the scenarios under the given root in the folder structure have been modified since the provided timestamp.

Request Body

The dashboard query

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Responses

200 OK

Whether or not the scenarios have been modified

Content-Type application/vnd.com.fico.xpress.insight.v2+json

422 Unprocessable Entity

The root app or folder or excluded folders did not exist, were unavailable to the current user, or the excluded folders belong to another app

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-422",
"desc": "Unprocessable Entity",
"innerError": {
"code": "FICO-Platform-Validation-InvalidValue",
"desc": "Entity processing failed",
"message": "Entity processing failed"
},
"message": "Unprocessable Entity",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

DELETE /api/scenarios/{id}

Delete a scenario

Delete a scenario including its data, attachments and run log. If a job exists for the scenario it will also be deleted.

Request Parameters

Name Description Type Data Type
id

The scenario ID

path string (uuid) required

Responses

204 No Content

The scenario was successfully deleted

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Empty response body

403 Forbidden

The user did not have authorization to delete this scenario

404 Not Found

The scenario did not exist or was unavailable to the current user

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-404",
"desc": "Not Found",
"innerError": {
"code": "OPTI-Insight-Persistence-DocumentNotFound",
"desc": "Document not found",
"message": "Unable to find document"
},
"message": "Not Found",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

GET /api/scenarios/{id}

Get a scenario

Get a scenario by ID. A user can only see a scenario that they have read-access to.

Request Parameters

Name Description Type Data Type
id

The scenario ID

path string (uuid) required

Responses

200 OK

The requested scenario

Content-Type application/vnd.com.fico.xpress.insight.v2+json

404 Not Found

The scenario did not exist or was unavailable to the current user

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-404",
"desc": "Not Found",
"innerError": {
"code": "OPTI-Insight-Persistence-DocumentNotFound",
"desc": "Document not found",
"message": "Unable to find document"
},
"message": "Not Found",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

PATCH /api/scenarios/{id}

Update a scenario

The payload contains the updates to apply to the scenario. They are all optional. The name attribute specifies the new preferred name for the scenario; a suffix will be applied to ensure its name is unique among its siblings. The share status and owner attributes control visibility of the scenario. When the share status is set to PRIVATE and no owner is supplied then the current user becomes the owner to ensure they do not lose access to the scenario. The scenario ID attribute is optional, but if it is supplied then it must match the ID in the URL. The objectType is optional, but if it is supplied then it must be SCENARIO. All other attributes are ignored.

Security: SCENARIO_EDIT is required to change the folder name, SCENARIO_SHARE is required to change the share status, and SCENARIO_OWNER is required to change the owner, and the user must have write access to the scenario.

Request Body

The updates to apply

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Request Parameters

Name Description Type Data Type
id

The scenario ID

path string (uuid) required

Responses

200 OK

The scenario was successfully updated

Content-Type application/vnd.com.fico.xpress.insight.v2+json

403 Forbidden

The user did not have authorization to update this scenario

404 Not Found

The scenario did not exist or was unavailable to the current user

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-404",
"desc": "Not Found",
"innerError": {
"code": "OPTI-Insight-Persistence-DocumentNotFound",
"desc": "Document not found",
"message": "Unable to find document"
},
"message": "Not Found",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}
422 Unprocessable Entity

Validation of the requested changes failed. e.g. the name was too long.

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-422",
"desc": "Unprocessable Entity",
"details": [
{
"code": "FICO-Platform-Http-422",
"desc": "Unprocessable Entity",
"message": "Must not be empty, and must not start or end with space characters",
"target": "name",
"timestamp": "1970-01-03T02:01:33.219Z"
}
],
"message": "Validation failed",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

PATCH /api/scenarios/{id}/data

Modify scenario data

Modify the scenario data. The data is modified by supplying a list of entity deltas. These entity deltas contain only the elements that are added, removed or changed. The scenario data cannot be modified if the scenario is in the job queue.

Security: SCENARIO_EDIT is required to modify the scenario data and the user must have write access to the scenario.

Request Body

The changes to apply

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Request Parameters

Name Description Type Data Type
id

The scenario ID

path string (uuid) required

Responses

204 No Content

The scenario data was modified

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Empty response body

403 Forbidden

The current user did not have permission to modify the scenario data

404 Not Found

The scenario did not exist or was unavailable to the current user

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-404",
"desc": "Not Found",
"innerError": {
"code": "OPTI-Insight-Persistence-DocumentNotFound",
"desc": "Document not found",
"message": "Unable to find document"
},
"message": "Not Found",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}
422 Unprocessable Entity

The modification contained an invalid change that could not be applied

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-422",
"desc": "Unprocessable Entity",
"innerError": {
"code": "FICO-Platform-Validation-InvalidValue",
"desc": "Entity processing failed",
"message": "Entity processing failed"
},
"message": "Unprocessable Entity",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}
423 Locked

The scenario is already in the job queue

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-423",
"desc": "Locked",
"innerError": {
"code": "OPTI-Insight-Locks-JobExists",
"desc": "Job already exists for scenario",
"message": "Scenario is already in the job queue"
},
"message": "Locked",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

POST /api/scenarios/{id}/data

Get the data from a scenario

Get the entity data from this scenario as described by the supplied query object.

Request Body

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Request Parameters

Name Description Type Data Type
id

The scenario ID

path string (uuid) required

Responses

200 OK

The scenario data

Content-Type application/vnd.com.fico.xpress.insight.v2+json

404 Not Found

The scenario did not exist or was unavailable to the current user

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-404",
"desc": "Not Found",
"innerError": {
"code": "OPTI-Insight-Persistence-DocumentNotFound",
"desc": "Document not found",
"message": "Unable to find document"
},
"message": "Not Found",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

GET /api/scenarios/{id}/job-metrics

Get the job metrics

Get the job metrics generated for the last execution of this scenario.

Request Parameters

Name Description Type Data Type
id

The scenario ID

path string (uuid) required

Responses

200 OK

The requested job metrics

Content-Type application/vnd.com.fico.xpress.insight.v2+json

404 Not Found

The scenario did not exist or was unavailable to the current user

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-404",
"desc": "Not Found",
"innerError": {
"code": "OPTI-Insight-Persistence-DocumentNotFound",
"desc": "Document not found",
"message": "Unable to find document"
},
"message": "Not Found",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}

GET /api/scenarios/{id}/run-log

Get the scenario run log

The run log is generated by the job during execution and captured against the scenario when execution completes.

Request Parameters

Name Description Type Data Type
id

The scenario ID

path string (uuid) required

Responses

200 OK

The requested run log

Content-Type text/vnd.com.fico.xpress.insight.v2+plain

string (binary)

404 Not Found

The scenario did not exist or was unavailable to the current user or there was no completed run log

Content-Type application/vnd.com.fico.xpress.insight.v2+json

Example:
{
"error": {
"code": "FICO-Platform-Http-404",
"desc": "Not Found",
"innerError": {
"code": "OPTI-Insight-Persistence-DocumentNotFound",
"desc": "Document not found",
"message": "Unable to find document"
},
"message": "Not Found",
"parentId": "0000000000000def",
"spanId": "0000000000000123",
"timestamp": "1970-01-03T02:01:33.219Z",
"traceId": "0000000000000abc"
}
}
Content-Type text/vnd.com.fico.xpress.insight.v2+plain

Empty response body

ArrayDelta: object

Details changes to a scenario array entity.

Properties

add: object[]

Array elements to add to the array entity.

Array of ArrayElement
remove: object[][]

The keys of elements to remove from the array entity.

Accepts Strings, Numbers and Booleans.

Example:
[
[
"1",
"2"
],
[
"3",
"4"
]
]
Array of object[]
Array of object

ArrayElement: object

An element in an array entity.

Properties

key: object[]

The key of the element.

Accepts strings, numbers and booleans.

Example:
[
"1"
]
Array of object
value: object

The value of the element.

Accepts strings, numbers and booleans.

Example:
false

ArrayFilter: object

A filter that can be applied to an array, matching a subset of keys and values. This filter can specify for each index set the set elements that match the filter. When an array is filtered by the filter, the result is an array with only the values whose keys match the set elements of the filter for each index set. If an index set is not included in the filter then it is equivalent to including all set elements of that index set.

Properties

entityName: string

The name of the entity this filter applies to

Example:
"entity_704"
filterId: string

The id of this filter

Example:
"filter_17"
indexFilters: object

A map of index set name to the array of set elements to use when filtering the array. The index set name may be substituted with the ordinal of the index set within the array. (The first index set of the array has ordinal 0.)

Example:
{
"setA": [
"red",
"green",
"blue"
],
"setB": [
true
],
"setC": [
1,
2,
3,
4,
5
]
}
object[]
Array of object

DashboardQuery: object

Properties

excludedFolderIds: string[]

Folders to exclude from the query

Array of string (uuid)
root:

The starting point of the query

timestamp: string (date-time)

Scenarios in the defined folder hierarchy will be checked to see whether they have been modified since this time

DashboardResponse: object

Properties

modified: boolean

Whether any of the scenarios have been modified

EntityDelta: object

Details changes to a scenario entity.

Properties

arrayDelta:

The changes to apply to an array entity.

entityName: string

The name of the scenario entity being changed.

Example:
"MDEVCOST"
setDelta:

The changes to apply to a set entity.

value: object

The new value for the entity.

Accepts strings, numbers and booleans.

Example:
-12345.456

ErrorDetail: object

An error detail

Properties

code: string

The unique code for this error

Example:
"FICO_PLATFORM_VALIDATION_INVALID_VALUE"
desc: string

A description of this error for client information, not intended for display to the end user

Example:
"Conflict"
message: string

A message providing further information which may be displayed to the end user

Example:
"Conflict"
target: string

An identifier to help the client locate the error. Typically a JSON property name.

timestamp: string (date-time)

When the error was first detected

ErrorResponse: object

An error response containing fault or error information

Properties

error:

The top level error

InnerError: object

More specific error information

Properties

code: string

The unique code for this error

Example:
"FICO-Platform-Validation-FileTooLarge"
desc: string

A description of this error for client information, not intended for display to the end user

Example:
"Attachment upload too large"
innerError:

More specific error information

message: string

A message providing further information which may be displayed to the end user

Example:
"Files larger than 300 MB cannot be uploaded as attachments."

JobMetrics: object

Metrics for a job that is either executing or has completed execution. Job metrics consist of 3 distinct stages that a job progresses through in order to complete execution.

Properties

duration: integer (int64)

The current duration of this job

execution:

The execution stage

queued:

The queued stage

started: string (date-time)

When this job started

worker:

The worker stage

JobPhase: object

A phase of a job stage. Each phase may have one or more phase metrics.

Properties

duration: integer (int64)

The current duration of this job phase

metrics: object

This phase's metrics, keyed by name

name: string

The name of this phase

started: string (date-time)

When this phase started

JobPhaseMetric: object

A metric of a job phase

Properties

count: integer (int32)

The count of this phase metric

dataSize: integer (int64)

The size of this phase metric

duration: integer (int64)

The current duration of this job phase metric

name: string

The name of this phase metric

started: string (date-time)

When this phase metric started

JobStage: object

A stage of a job metric. A stage is sub-divided into phases.

Properties

duration: integer (int64)

The current duration of this job stage

name: string

The name of this job stage

phases: object[]

This stage's phases

Array of JobPhase
started: string (date-time)

When this stage started

OuterError: object

The top level error

Properties

code: string , one of { FICO-Platform-Http-400 , FICO-Platform-Http-404 , FICO-Platform-Http-406 , FICO-Platform-Http-409 , FICO-Platform-Http-413 , FICO-Platform-Http-422 , FICO-Platform-Http-423 , FICO-Platform-Http-429 , FICO-Platform-Http-500 , FICO-Platform-Http-502 , FICO-Platform-Http-503 }

The unique code for this error

Example:
"FICO-Platform-Http-409"
desc: string

A description of this error for client information, not intended for display to the end user

Example:
"Conflict"
details: object[]

Details about specific errors that led to this reported error

Array of ErrorDetail
innerError:

More specific error information

message: string

A message providing further information which may be displayed to the end user

Example:
"Conflict"
parentId: string

An OpenTracing parent-span ID

Example:
"0020000000000001"
spanId: string

An OpenTracing span ID

Example:
"b2fb4a1d1a96d312"
timestamp: string (date-time)

When the error was first detected

traceId: string

An OpenTracing trace ID

Example:
"463ac35c9f6413ad48485a3953bb6125"

ReferenceApp: object

The basic details of an app

Properties

id: string (uuid)

The ID of this app

Example:
"00007eff-83f9-05fe-ffff-81007c05fc01"
name: string (1 to 255 chars) , must match ^[^\p{Cntrl}]*$ & ^\S(?:[\s\S]*\S)?$

The name of this app

Example:
"My app"
objectType: string , one of { APP }
url: string (uri)

The URL of this app

Example:
"/api/apps/00007eff-83f9-05fe-ffff-81007c05fc01"

ReferenceScenario: object

The basic details of a scenario

Properties

id: string (uuid)

The ID of this scenario

Example:
"003584bb-9e7b-eb70-ffca-7b446118b100"
name: string (1 to 255 chars) , must match ^[^\p{Cntrl}]*$ & ^\S(?:[\s\S]*\S)?$

The name of this scenario

Example:
"My scenario"
objectType: string , one of { SCENARIO }
url: string (uri)

The URL of this scenario

Example:
"/api/scenarios/003584bb-9e7b-eb70-ffca-7b446118b100"

ReferenceUser: object

The basic details of a user

Properties

id: string (uuid)

The ID of this user

Example:
"0013ebae-4d4c-793c-ffec-1451b28ba2f9"
name: string (1 to 255 chars) , must match ^[^\p{Cntrl}]*$ & ^\S(?:[\s\S]*\S)?$

The name of this user

Example:
"My user"
objectType: string , one of { USER }
url: string (uri)

The URL of this user

Example:
"/api/admin/users/0013ebae-4d4c-793c-ffec-1451b28ba2f9"

Scenario: object

This object represents one scenario in the system. See the wider product documentation for an explanation of what a scenario is used for.

Properties

app:

The app that owns this scenario

created: string (date-time)

The datetime this scenario was created

id: string (uuid)

The ID of this scenario

Example:
"003584bb-9e7b-eb70-ffca-7b446118b100"
name: string (1 to 255 chars) , must match ^[^\p{Cntrl}]*$ & ^\S(?:[\s\S]*\S)?$

The name of this scenario

Example:
"My scenario"
objectType: string , one of { SCENARIO }
owner:

The user that owns this scenario

parent:

The parent of this scenario

path: string

The path within the repository

Example:
"/app-name/folder-a/folder-b/scenario-a"
scenarioType: string

The scenario's custom type if it has one, otherwise SCENARIO.

Example:
"SCENARIO"
shareStatus: string , one of { PRIVATE , READONLY , FULLACCESS }

The share status of this scenario

summary:

The summary of this scenario's data

url: string (uri)

The URL of this scenario

Example:
"/api/scenarios/003584bb-9e7b-eb70-ffca-7b446118b100"

ScenarioCreationRequest: object

Properties

name: string (1 to 255 chars) , must match ^[^\p{Cntrl}]*$ & ^\S(?:[\s\S]*\S)?$

The name for the scenario; a suffix will be applied to ensure its name is unique among its siblings

Example:
"Scenario Five"
parent:

The parent of the new scenario, an app or folder

scenarioType: string

The type for the new scenario; the app defines the available scenario types. If no scenarioType is supplied it defaults to SCENARIO.

Example:
"SCENARIO"
sourceScenario:

The scenario to clone if this is a clone operation. When cloning, the new scenario will have the same scenario type as the source and any supplied scenarioType will be ignored. The scenario will be cloned into the same location as the source scenario if the parent attribute is omitted.

ScenarioData: object

Contains summary information and entity data for a scenario

Properties

entities: object

Array, set and scalar entities, mapped by name

summary:

The data summary for this scenario

ScenarioDataModification: object

A list of changes to apply to the scenario data.

Properties

deltas: object[]

A list of deltas to apply to the scenario data.

Array of EntityDelta
forceLoad: boolean

Specifies that the scenario should be loaded.

ScenarioDataQuery: object

The entities to retrieve from the scenario data, optionally filtering the arrays

Properties

entityNames: string[]

The names of the entities to retrieve

Example:
[
"entity_700",
"entity_701",
"entity_702",
"entity_703",
"entity_704",
"entity_705"
]
Array of string
filters: object[]

The array filters to apply

Array of ArrayFilter

ScenarioSummary: object

This object is a container for a number of properties describing the state of a scenario, its data and the most recent job that executed it.

Properties

executionDuration: integer (int64)

The duration of the last execution of this scenario in milliseconds

Example:
500
executionFinished: string (date-time)

When this scenario last finished loading or executing

executionMode: string

The execution mode for the last execution

executionStarted: string (date-time)

When this scenario last started loading or executing

executionUser:

The user that last executed this scenario

modelDataVersion: integer (int32)

The version number of the model data

Example:
2
modelStatus: string , one of { NA , OK , INSTR , MATHERR , UNKN_PF , UNKN_SYS , PROB , ERROR , EXIT , IOERR , BREAK , NIFCT , NULL , LICERR , STOP , UNKNOWN }

The model status for this scenario

Example:
"OK"
objective: number (double)

The objective result for this scenario

problemStatus: string , one of { NA , UNKNOWN , SOLUTION , OPTIMAL , UNFINISHED , INFEASIBLE , UNBOUNDED , OTHER }

The problem status for this scenario

Example:
"SOLUTION"
reservedForJob: boolean

Whether the scenario is reserved for a job

state: string , one of { UNLOADED , LOADED , RESULTS , RESULTS_DIRTY }

The states that scenario data can be in. UNLOADED - the scenario input data has not been loaded. LOADED - the scenario input data has been loaded but no results have been generated. RESULTS - the scenario has input data has been loaded and the results have been generated. RESULTS_DIRTY - the scenario input data has been changed since the results have been generated.

Example:
"LOADED"

SetDelta: object

Details changes to a scenario set entity.

Properties

add: object[]

The values to add to the set.

Accepts Strings, Numbers and Booleans.

Example:
[
"One",
"Two",
"Three",
""
]
Array of object
remove: object[]

The values to remove from the set.

Accepts Strings, Numbers and Booleans.

Example:
[
"alpha",
"charlie",
""
]
Array of object

© 2001-2025 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.