Anomaly Detection End Point

Summary

The Anomaly Detection API end point can be used to retrieve spending anomalies and create anomaly subscriptions as outlined in Anomaly Detection.

  • This endpoint does not support filtering and/or sorting.

Endpoint Particulars

endpoint: /anomalies for listing your organization's spending anomalies.
endpoint: /anomalies/subscriptions for all RESTful CRUD interactions related to anomaly subscriptions (receive anomaly alerts via email). See below.

The Anomalies Object

date (string) - Date of the anomaly, e.g., "2018-02-14"
type (string) - One-day or seven-day trend.
enhancedServiceName (string) - e.g., AWS EC2
usageFamily (string) - e.g., Data Transfer
unblendedCost (number) - Total cost for the day
unusualSpend (number) - The unusual portion of the spend for the day.
vendorAccountName (string) - Name associated with the account where the anomaly occurred
tags (array) - list of tag objects associated with the anomaly. Each object contains tag, tagName and vendorTagValue

Example Request - Retrieve List Of Anomalies

Quite simply perform a GET request at the /anomalies end point, specifying a startDate and endDate. You may also optionally supply a viewId to restrict the returned anomalies to a particular view.

curl "https://api.cloudability.com/v3/anomalies?endDate=2018-02-22&startDate=2018-02-15"\ 
     -u '[auth_token]:'
{
  "result": [
    {
      "date": "2018-02-17",
      "type": "1-day",
      "enhancedServiceName": "AWS EBS",
      "usageFamily": "Storage",
      "unblendedCost": "114.27826999999999",
      "unusualSpend": "47.78951077214518",
      "vendorAccountName": "AWS Production",
      "tags": [
        {
          "tag": "tag5",
          "tagName": "team",
          "vendorTagValue": "PartyPeanut"
        },
        {
          "tag": "tag7",
          "tagName": "environment",
          "vendorTagValue": "Production"
        },
        {
          "tag": "tag9",
          "tagName": "application",
          "vendorTagValue": "TerreBelle"
        }
      ]
    }
  ]
}

Subscriptions Object

SubscriptionId (string) - UUID for the subscription
viewId (string) - Optional
unusualSpendThreshold (int) - How much unusual spending is required to trigger an alert

Example Subscriptions Object

{
    "result": {
        "subscriptionId": "42ba1b73-72db-64bf-7ca6-709c760c09cb",
        "viewId": "0",
        "unusualSpendThreshold": 100
  }
}

Example Requests

Create a subscription

curl -X POST https://api.cloudability.com/v3/anomalies/subscriptions \
     -H 'Content-Type: application/json' \
     -u '[auth_token]:' \
     -d @- << EOF
{ 
  "unusualSpendThreshold": 100,
  "viewId": "11235"
}
EOF

A successful operation will result in the object being created and returned to the client

Retrieve a Subscription

curl https://api.cloudability.com/v3/anomalies/subscriptions/42ba1b73-72db-64bf-7ca6-709c760c09cb \
     -u '[auth_token]:'

Update a subscription

curl -X PUT https://api.cloudability.com/v3/anomalies/subscriptions/bc8cf34d-fa58-4bab-6800-3cf067edba8d \
     -H 'Content-Type: application/json' \
     -u '[auth_token]:' \
     -d @- << EOF
{ 
  "unusualSpendThreshold": 25
}
EOF

will return a modified Subscription Object

Delete a Subscription

curl -X DELETE https://api.cloudability.com/v3/anomalies/subscriptions/bc8cf34d-fa58-4bab-6800-3cf067edba8d \
     -u '[auth_token]:'

and if all goes well, you'll receive an ever so helpful confirmation

{
    "result": {
        "message": "Successfully deleted",
        "subscriptionID": "bc8cf34d-fa58-4bab-6800-3cf067edba8d"
    }
}

List all Subscriptions

curl https://api.cloudability.com/v3/anomalies/subscriptions \
     -u '[auth_token]:'

will return any existing SubscriptionObjects. Note that subscriptions without a defined View will return a viewId of "0":

{
  "result": [
    {
      "subscriptionId": "42ba1b73-72db-64bf-7ca6-709c760c09cb",
      "viewId": "0",
      "unusualSpendThreshold": 10
    },
    {
      "subscriptionId": "78af1c06-f804-3258-722d-35a864df1f34",
      "viewId": "8675",
      "unusualSpendThreshold": 5
    },
    {
      "subscriptionId": "7de42e2a-144d-n65d-55c2-cd048f7b43cb",
      "viewId": "309",
      "unusualSpendThreshold": 5
    }
  ]
}