Forecasts

Generating a Forecast

Arguments

Argument

Required

Description

Type

viewId

Yes

The id of the view you are generating the forecast for. viewId=0 will apply forecast to all cost data.

string

basis

Yes

The cost basis for the estimate. Must be one of [cash, amortized, adjusted, adjustedAmortized, list]

string

monthsBack

Yes

How many months of history to use when predicting future costs. Must be between 3 and 24

int

monthsForward

Yes

How many months of spending to forecast. Must be between 1 and 24

int

useCurrentEstimate

No

Whether to include the current month estimate in spending model. Defaults to false.

bool

removeCredits

No

Whether to remove credits from the spending model. Defaults to false.

bool

removeOneTimeCharges

No

Whether to remove one time charges from the spending model. Defaults to false.

bool

The Forecast Object

currentMonth (string) - the current month, format YYYY-MM
currentEstimate (number) - estimated spending for the current month
forecastTotal (number) - Total spending over the duration of your forecast
actualTotal (number) - Total spending over the comparison historical period
parameters (object) - The list of parameters used for your forecast
      viewId (string)
      monthsForward (integer)
      monthsBack (integer)
      basis (string)
      useCurrentEstimate (boolean)
      removeOneTimeCharges (boolean)
      removeCredits (boolean)
actual - A list of month-spend objects for comparative historical cloud costs
      month (string) - the month YYYY-MM
      spend (number) - the recorded spend
actualDetail - A list of detailed month-spend objects for comparative historical cloud costs
     month (string) - the month YYYY-MM
     spend (number) - the recorded spend
     serviceName (string) - The normalised service name. Example 'AWS EC2'
     usageFamily (string) - The usage family. Example 'Instance Usage'
forecast - A list of month-spend objects for projected spend
     month (string) - the month YYYY-MM
     spend (number) - the projected spend
     lowerBound (number) - projected lower bound of spend
     upperBound (number) - projected upper bound of spend
forecastDetail - A list of detailed month-spend objects for projected spend
     month (string) - the month YYYY-MM
     spend (number) - the projected spend
     serviceName (string) - The normalised service name. Example 'AWS EC2'
     usageFamily (string) - The usage family. Example 'Instance Usage'

Example Forecast Object

In this sample response, we're only showing the first three entries of "actual," "actualDetail," "forecast" and "forecastDetail" for readability purposes.

{
  "result": {
    "parameters": {
      "viewId": "0",
      "monthsForward": 8,
      "monthsBack": 6,
      "basis": "cash",
      "useCurrentEstimate": false,
      "removeOneTimeCharges": false,
      "removeCredits": false
    },
    "currentMonth": "2018-09",
    "currentEstimate": 169444.38000000006,
    "forecastTotal": 1972164.1539731494,
    "actualTotal": 1518.7159940000001,
    "actual": [
      {
        "month": "2017-09",
        "spend": 187078.84031799991
      },
      {
        "month": "2017-10",
        "spend": 192950.680001
      },
      {
        "month": "2017-11",
        "spend": 170649.45000099996
      }
    ],
    "actualDetail": [
      {
        "month": "2017-09",
        "spend": 0.012558,
        "serviceName": "AWS API Gateway",
        "usageFamily": "API Request"
      },
      {
        "month": "2017-09",
        "spend": 2.6000000000000002e-05,
        "serviceName": "AWS API Gateway",
        "usageFamily": "Data Transfer"
      },
      {
        "month": "2017-09",
        "spend": 0.014471999999999999,
        "serviceName": "AWS Administrative",
        "usageFamily": "Other"
      }
    ],
    "forecast": [
      {
        "month": "2018-10",
        "lowerBound": 152748.68445406112,
        "spend": 204665.66745104585,
        "upperBound": 256582.65044803056
      },
      {
        "month": "2018-11",
        "lowerBound": 164779.69238992754,
        "spend": 217735.0150468521,
        "upperBound": 270690.3377037764
      },
      {
        "month": "2018-12",
        "lowerBound": 176197.59003756387,
        "spend": 230212.01914762674,
        "upperBound": 284226.4482576897
      }
    ],
    "forecastDetail": [
      {
        "month": "2018-10",
        "spend": 1.244314631343604,
        "serviceName": "AWS API Gateway",
        "usageFamily": "API Request"
      },
      {
        "month": "2018-11",
        "spend": 1.3898872510930294,
        "serviceName": "AWS API Gateway",
        "usageFamily": "API Request"
      },
      {
        "month": "2018-12",
        "spend": 1.528232288256353,
        "serviceName": "AWS API Gateway",
        "usageFamily": "API Request"
      }
    ]
  }
}

Example Forecast Request

Retrieve Current Forecast

Quite simply perform a GET request at the /forecast end point, specifying all required parameters.

curl "https://api.cloudability.com/v3/forecast?basis=cash&monthsForward=12&monthsBack=6&viewId=11235"\ 
     -u '[auth_token]:'