Calculate savings for the meters that match the filter conditions, using the provided settings
Request Headers
| Header | Value | Required | Description |
|---|---|---|---|
| ECI-ApiKey | string | Yes | Your API key. See Authentication. |
| Content-Type | application/json | Yes | All requests must specify JSON content type, including the request body. |
Request Body
CalculateSavingsRequest
| Property | Description | Type | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| billSelectionOption | Determines which option will be used to select the bills for this instance of the cost avoidance processor to process
|
string | ||||||||||||
| billingPeriod | When BillSelectionOption is ‘BillingPeriod’, this defines the billing period to be used to target bills for processing Valid billing period between 190001 and 300001 NULL Valid Required when BillSelectionOption is set to BillingPeriod, case sensitive. | integer (int32) | ||||||||||||
| filters | Filter criteria which determine the meters whose savings will be reprocessed | FilterEdit[] | ||||||||||||
|
FilterEdit properties
|
||||||||||||||
| skipSpecialAdjustmentOption | Allow the user to optionally exclude one or all special adjustments One of ‘SkipAll’, ‘SkipOne’, ‘SkipNone’ | string | ||||||||||||
| specialAdjustmentTypeIdToIgnore | During cost avoidance processing, the special adjustment having the provided special adjustment type ID will not be applied (only if SkipSpecialAdjustmentOption = “SkipOne”) Required when SkipSpecialAdjustmentOption is set to SkipOne, case sensitive. | integer (int32) | ||||||||||||
Example Request Body
{ "billSelectionOption": "string", "billingPeriod": 1, "filters": [
{ "fieldId": 1, "operator": "string", "value": "string"
}
], "skipSpecialAdjustmentOption": "string", "specialAdjustmentTypeIdToIgnore": 1
}
Responses
200
OK
The request succeeded and the response body contains the requested data.
Response Body Parameters
CostAvoidanceTask
| Property | Description | Type | |||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| baselineLog | BaselineLog | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
BaselineLog properties
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| beginDate | The date and time the task began | string (date-time) | |||||||||||||||||||||||||||||||||||||||||||||||||||
| costAvoidanceTaskId | The task ID | integer (int32) | |||||||||||||||||||||||||||||||||||||||||||||||||||
| endDate | The date and time the task finished. If the task is not finished, endDate will have no value | string (date-time) | |||||||||||||||||||||||||||||||||||||||||||||||||||
| filters | The task’s filters | FilterResponse[] | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
FilterResponse properties
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| hasAttachments | Indicates whether or not the task has an output log available for download | boolean | |||||||||||||||||||||||||||||||||||||||||||||||||||
| message | If there was a catastrophic error during task processing, it will go here | string | |||||||||||||||||||||||||||||||||||||||||||||||||||
| reason | The reason for the cost avoidance task. Will be one of the following:
|
string | |||||||||||||||||||||||||||||||||||||||||||||||||||
| savingsLog | SavingsLog | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
SavingsLog properties
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| settings | CostAvoidanceSettings | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CostAvoidanceSettings properties
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| status | The status of the cost avoidance task. Will be one of the following:
|
string | |||||||||||||||||||||||||||||||||||||||||||||||||||
| taskGUId | The task GUID | string (uuid) | |||||||||||||||||||||||||||||||||||||||||||||||||||
| taskNote | Notes added to the cost avoidance task by the user | string | |||||||||||||||||||||||||||||||||||||||||||||||||||
| taskType | TaskType | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
TaskType properties
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| user | UserChild | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UserChild properties
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Example Response
{ "baselineLog": { "errorCount": 1, "numberOfMeters": 1, "status": "string", "successCount": 1, "warningCount": 1
}, "beginDate": "2026-03-30", "costAvoidanceTaskId": 1, "endDate": "2026-03-30", "filters": [
{ "availableOperator": [
"string"
], "caption": "string", "dataFieldId": 1, "dataType": { "dataTypeCode": "string", "dataTypeId": 1, "dataTypeInfo": "string"
}, "fieldId": 1, "hidden": false, "operator": "string", "queryParameterName": "string", "recommended": false, "required": false, "value": "string"
}
], "hasAttachments": false, "message": "string", "reason": "string", "savingsLog": { "errorCount": 1, "numberOfMeters": 1, "status": "string", "successCount": 1, "warningCount": 1
}, "settings": { "billSelectionOption": "string", "ignoredSpecialAdjustmentType": "string", "ignoredWeatherAdjustments": false, "minimumBillingPeriod": 1, "skippedMultiAccountIfBillsMissing": false
}, "status": "string", "taskGUId": "string", "taskNote": "string", "taskType": { "taskTypeCode": "string", "taskTypeId": 1, "taskTypeInfo": "string"
}, "user": { "fullName": "string", "userCode": "string", "userId": 1
}
}