Scenario Combos
In ComboCurve you can run combos in a scenario but if you do not explicitly save the combos you run they will not be stored anywhere after the scenario is run. This endpoint deals with the groups of combos you save (Saved Combos) in order to use later.
Example GET Response
[
{
"savedName": "Test Saved Combos",
"combos": [
{
"id": "6543e7d341c1410012cb20af",
"comboName": "Default",
"qualifiers": [
{
"assumption": "capex",
"qualifierName": "Default"
},
{
"assumption": "dates",
"qualifierName": "Default"
},
{
"assumption": "depreciation",
"qualifierName": "Default"
},
{
"assumption": "differentials",
"qualifierName": "Default"
},
{
"assumption": "emission",
"qualifierName": "Default"
},
{
"assumption": "escalation",
"qualifierName": "Default"
},
{
"assumption": "expenses",
"qualifierName": "Default"
},
{
"assumption": "fluidModel",
"qualifierName": "Default"
},
{
"assumption": "pSeries",
"qualifierName": "Default"
},
{
"assumption": "forecast",
"qualifierName": "Default"
},
{
"assumption": "generalOptions",
"qualifierName": "Default"
},
{
"assumption": "network",
"qualifierName": "Default"
},
{
"assumption": "ownershipReversion",
"qualifierName": "Default"
},
{
"assumption": "pricing",
"qualifierName": "Default"
},
{
"assumption": "productionTaxes",
"qualifierName": "Default"
},
{
"assumption": "actualOrForecast",
"qualifierName": "Default"
},
{
"assumption": "reservesCategory",
"qualifierName": "Default"
},
{
"assumption": "risking",
"qualifierName": "Default"
},
{
"assumption": "schedule",
"qualifierName": "Default"
},
{
"assumption": "streamProperties",
"qualifierName": "Default"
}
],
"selected": true
},
{
"id": "6543e7d341c1410012cb20b0",
"comboName": "Custom",
"qualifiers": [
{
"assumption": "capex",
"qualifierName": "Default"
},
{
"assumption": "dates",
"qualifierName": "Default"
},
{
"assumption": "depreciation",
"qualifierName": "Default"
},
{
"assumption": "differentials",
"qualifierName": "Default"
},
{
"assumption": "emission",
"qualifierName": "Default"
},
{
"assumption": "escalation",
"qualifierName": "Default"
},
{
"assumption": "expenses",
"qualifierName": "Default"
},
{
"assumption": "fluidModel",
"qualifierName": "Default"
},
{
"assumption": "pSeries",
"qualifierName": "Default"
},
{
"assumption": "forecast",
"qualifierName": "FORE_API_TEST"
},
{
"assumption": "generalOptions",
"qualifierName": "Default"
},
{
"assumption": "network",
"qualifierName": "Default"
},
{
"assumption": "ownershipReversion",
"qualifierName": "Default"
},
{
"assumption": "pricing",
"qualifierName": "Default"
},
{
"assumption": "productionTaxes",
"qualifierName": "Default"
},
{
"assumption": "actualOrForecast",
"qualifierName": "Default"
},
{
"assumption": "reservesCategory",
"qualifierName": "Default"
},
{
"assumption": "risking",
"qualifierName": "Default"
},
{
"assumption": "schedule",
"qualifierName": "Default"
},
{
"assumption": "streamProperties",
"qualifierName": "Default"
}
],
"selected": true
},
{
"id": "6543e7d341c1410012cb20b1",
"comboName": "Custom 2",
"qualifiers": [
{
"assumption": "capex",
"qualifierName": "CAPE_API_TEST"
},
{
"assumption": "dates",
"qualifierName": "Default"
},
{
"assumption": "depreciation",
"qualifierName": "Default"
},
{
"assumption": "differentials",
"qualifierName": "Default"
},
{
"assumption": "emission",
"qualifierName": "Default"
},
{
"assumption": "escalation",
"qualifierName": "Default"
},
{
"assumption": "expenses",
"qualifierName": "Default"
},
{
"assumption": "fluidModel",
"qualifierName": "Default"
},
{
"assumption": "pSeries",
"qualifierName": "Default"
},
{
"assumption": "forecast",
"qualifierName": "Default"
},
{
"assumption": "generalOptions",
"qualifierName": "Default"
},
{
"assumption": "network",
"qualifierName": "Default"
},
{
"assumption": "ownershipReversion",
"qualifierName": "Default"
},
{
"assumption": "pricing",
"qualifierName": "Default"
},
{
"assumption": "productionTaxes",
"qualifierName": "Default"
},
{
"assumption": "actualOrForecast",
"qualifierName": "Default"
},
{
"assumption": "reservesCategory",
"qualifierName": "Default"
},
{
"assumption": "risking",
"qualifierName": "Default"
},
{
"assumption": "schedule",
"qualifierName": "Default"
},
{
"assumption": "streamProperties",
"qualifierName": "Default"
}
],
"selected": true
}
]
}
]
SavedCombos
savedName
: (required) This is the name of the group of combos. This name is unique to the scenario.combos
: (required) This array of objects contains the combos themselves.
Combos
id
(read-only) This is the individual combo identifier ascomboName
is not unique to the scenario.comboName
: (required) This is the name of the individual combo.qualifiers
: (required) This array of objects contains all the qualifiers used in the combo.selected
: (required) This boolean value determines if the combo should be selected (i.e. used) when running the scenario. At least one combo must be selected.
Qualifiers
assumption
: (one required) This is the name of the assumption (ex: "capex" or "expenses").qualifierName
: (one required) This is the name of the qualifier used in the assumption.
Example Payload
[
{
"savedName": "My combo group 1",
"combos": [
{
"comboName": "My combo 1",
"qualifiers": [
{
"assumption": "ownershipReversion",
"qualifierName": "Q4-Qualifier"
}
],
"selected": true
},
{
"comboName": "My combo 2",
"qualifiers": [
{
"assumption": "reservesCategory",
"qualifierName": "Great-Reserves"
}
],
"selected": false
}
]
},
{
"savedName": "Combo Group 2",
"combos": [
{
"comboName": "TestCombo1",
"qualifiers": [
{
"assumption": "capex",
"qualifierName": "cc-api-is-great"
},
{
"assumption": "PSeries",
"qualifierName": "test-qualifier"
}
],
"selected": true
},
{
"comboName": "TestCombo2",
"qualifiers": [
{
"assumption": "risking",
"qualifierName": "risky-qualifier"
}
],
"selected": true
}
]
}
]
Important Notes for POST and PUT Request
- When setting
selected
within a combo you must have at least one combo set to true. This is because Saved Combos (combo groups) must have at least one selected (active) combo. - If your payload doesn't include an object with both
qualifierName
andassumption
, the system will default to using"Default"
for any assumptions that are unspecified. For example, in the payload provided above, only a few assumptions are paired with qualifiers; the system will automatically assign"Default"
to the rest. - There is a rule that you can not have duplicate combos. What we mean is that if you have a payload like the one below:
{
"savedName": "Bad Combo Group",
"combos": [
{
"comboName": "This Combo",
"qualifiers": [
{
"assumption": "PSeries",
"qualifierName": "Default"
}
],
"selected": true
},
{
"comboName": "Is the same as this combo",
"qualifiers": [
{
"assumption": "reservesCategory",
"qualifierName": "Default"
}
],
"selected": false
}
]
}
Even though qualifiers are explicitly defined for only two assumptions, all assumptions ultimately receive the same qualifiers. This uniformity results from the system assigning the "Default" qualifier to any assumption that is not explicitly specified.
Important Notes for DELETE Request
When using the delete endpoint you have two options:
- If you include only the
savedName
parameter, it will result in the deletion of the entire saved combo. You can confirm this action by examining theX-Delete-Count
header, which should have a value of"1"
, indicating that a single Save Combo has been deleted. - To delete specific combos within a group, include the savedName parameter and one or more comboName parameters in your request. This approach enables you to remove multiple combos from a Saved Combo group. The success of this operation can be verified by checking the X-Delete-Count header, which will display a value corresponding to the number of comboName parameters included in the request.
- You cannot delete all combos from a Saved Combo using individual deletions. If you wish to remove all combos, you should either PUT to replace the combos with new ones or DELETE the entire Saved Combo.