Skip to main content

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 as comboName 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 and assumption, 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 the X-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.