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]:’