Chilkat Online Tools

VB.NET / Datadog API Collection / Get an SLO's history

Back to Collection Items

' This example assumes the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.

Dim http As New Chilkat.Http
Dim success As Boolean

Dim queryParams As New Chilkat.JsonObject
queryParams.UpdateInt("from_ts",-62147425)
queryParams.UpdateInt("to_ts",-62147425)
queryParams.UpdateString("target","49.34019051965387")
queryParams.UpdateString("apply_correction","true")

http.SetRequestHeader("Accept","application/json")


Dim resp As Chilkat.HttpResponse = http.QuickRequestParams("GET","https://api.app.ddog-gov.com/api/v1/slo/:slo_id/history",queryParams)
If (http.LastMethodSuccess = False) Then
    Debug.WriteLine(http.LastErrorText)
    Exit Sub
End If


Dim sbResponseBody As New Chilkat.StringBuilder
resp.GetBodySb(sbResponseBody)

Dim jResp As New Chilkat.JsonObject
jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = False

Debug.WriteLine("Response Body:")
Debug.WriteLine(jResp.Emit())

Dim respStatusCode As Integer = resp.StatusCode
Debug.WriteLine("Response Status Code = " & respStatusCode)
If (respStatusCode >= 400) Then
    Debug.WriteLine("Response Header:")
    Debug.WriteLine(resp.Header)
    Debug.WriteLine("Failed.")

    Exit Sub
End If



' Sample JSON response:
' (Sample code for parsing the JSON response is shown below)

' {
'   "data": {
'     "from_ts": 1615323990,
'     "group_by": [
'       "aliqua pariatur",
'       "labor"
'     ],
'     "groups": [
'       {
'         "error_budget_remaining": {
'           "7d": 100
'         },
'         "errors": [
'           {
'             "error_type": "",
'             "error_message": ""
'           },
'           {
'             "error_type": "",
'             "error_message": ""
'           }
'         ],
'         "group": "name",
'         "history": [
'           [
'             1579212382,
'             0
'           ]
'         ],
'         "monitor_modified": 1615867200,
'         "monitor_type": "string",
'         "name": "string",
'         "precision": 2,
'         "preview": true,
'         "sli_value": 99.99,
'         "span_precision": 2,
'         "uptime": 99.99
'       },
'       {
'         "error_budget_remaining": {
'           "7d": 100
'         },
'         "errors": [
'           {
'             "error_type": "",
'             "error_message": ""
'           },
'           {
'             "error_type": "",
'             "error_message": ""
'           }
'         ],
'         "group": "name",
'         "history": [
'           [
'             1579212382,
'             0
'           ]
'         ],
'         "monitor_modified": 1615867200,
'         "monitor_type": "string",
'         "name": "string",
'         "precision": 2,
'         "preview": true,
'         "sli_value": 99.99,
'         "span_precision": 2,
'         "uptime": 99.99
'       }
'     ],
'     "monitors": [
'       {
'         "error_budget_remaining": {
'           "7d": 100
'         },
'         "errors": [
'           {
'             "error_type": "",
'             "error_message": ""
'           },
'           {
'             "error_type": "",
'             "error_message": ""
'           }
'         ],
'         "group": "name",
'         "history": [
'           [
'             1579212382,
'             0
'           ]
'         ],
'         "monitor_modified": 1615867200,
'         "monitor_type": "string",
'         "name": "string",
'         "precision": 2,
'         "preview": true,
'         "sli_value": 99.99,
'         "span_precision": 2,
'         "uptime": 99.99
'       },
'       {
'         "error_budget_remaining": {
'           "7d": 100
'         },
'         "errors": [
'           {
'             "error_type": "",
'             "error_message": ""
'           },
'           {
'             "error_type": "",
'             "error_message": ""
'           }
'         ],
'         "group": "name",
'         "history": [
'           [
'             1579212382,
'             0
'           ]
'         ],
'         "monitor_modified": 1615867200,
'         "monitor_type": "string",
'         "name": "string",
'         "precision": 2,
'         "preview": true,
'         "sli_value": 99.99,
'         "span_precision": 2,
'         "uptime": 99.99
'       }
'     ],
'     "overall": {
'       "error_budget_remaining": {
'         "7d": 100
'       },
'       "errors": [
'         {
'           "error_type": "",
'           "error_message": ""
'         },
'         {
'           "error_type": "",
'           "error_message": ""
'         }
'       ],
'       "group": "name",
'       "history": [
'         [
'           1579212382,
'           0
'         ]
'       ],
'       "monitor_modified": 1615867200,
'       "monitor_type": "string",
'       "name": "string",
'       "precision": {
'         "30d": 1,
'         "7d": 2
'       },
'       "preview": true,
'       "sli_value": 99.99,
'       "span_precision": 2,
'       "uptime": 99.99
'     },
'     "series": {
'       "res_type": "",
'       "interval": 0,
'       "resp_version": 0,
'       "query": "",
'       "times": [
'       ],
'       "numerator": {
'         "count": 0,
'         "sum": 0,
'         "metadata": {}
'       },
'       "denominator": {
'         "count": 0,
'         "sum": 0,
'         "metadata": {}
'       },
'       "message": ""
'     },
'     "thresholds": {
'       "my_service": {
'         "target": 95,
'         "timeframe": "7d"
'       }
'     },
'     "to_ts": 1615928790,
'     "type": "metric",
'     "type_id": 0
'   },
'   "errors": [
'     {
'       "error": "ullamco pariatur"
'     },
'     {
'       "error": "aliquip anim do laborum commodo"
'     }
'   ]
' }

' Sample code for parsing the JSON response...
' Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code



Dim strVal As String
Dim error_budget_remaining7d As Integer
Dim group As String
Dim monitor_modified As Integer
Dim monitor_type As String
Dim name As String
Dim precision As Integer
Dim preview As Boolean
Dim sli_value As String
Dim span_precision As Integer
Dim uptime As String
Dim j As Integer
Dim count_j As Integer
Dim error_type As String
Dim error_message As String
Dim k As Integer
Dim count_k As Integer
Dim intVal As Integer
Dim error As String

Dim From_ts As Integer = jResp.IntOf("data.from_ts")
Dim v_7d As Integer = jResp.IntOf("data.overall.error_budget_remaining.7d")
Dim Group As String = jResp.StringOf("data.overall.group")
Dim Monitor_modified As Integer = jResp.IntOf("data.overall.monitor_modified")
Dim Monitor_type As String = jResp.StringOf("data.overall.monitor_type")
Dim Name As String = jResp.StringOf("data.overall.name")
Dim v_30d As Integer = jResp.IntOf("data.overall.precision.30d")
Dim Precision7d As Integer = jResp.IntOf("data.overall.precision.7d")
Dim Preview As Boolean = jResp.BoolOf("data.overall.preview")
Dim Sli_value As String = jResp.StringOf("data.overall.sli_value")
Dim Span_precision As Integer = jResp.IntOf("data.overall.span_precision")
Dim Uptime As String = jResp.StringOf("data.overall.uptime")
Dim Res_type As String = jResp.StringOf("data.series.res_type")
Dim Interval As Integer = jResp.IntOf("data.series.interval")
Dim Resp_version As Integer = jResp.IntOf("data.series.resp_version")
Dim Query As String = jResp.StringOf("data.series.query")
Dim Count As Integer = jResp.IntOf("data.series.numerator.count")
Dim Sum As Integer = jResp.IntOf("data.series.numerator.sum")
Dim DenominatorCount As Integer = jResp.IntOf("data.series.denominator.count")
Dim DenominatorSum As Integer = jResp.IntOf("data.series.denominator.sum")
Dim Message As String = jResp.StringOf("data.series.message")
Dim Target As Integer = jResp.IntOf("data.thresholds.my_service.target")
Dim Timeframe As String = jResp.StringOf("data.thresholds.my_service.timeframe")
Dim To_ts As Integer = jResp.IntOf("data.to_ts")
Dim v_Type As String = jResp.StringOf("data.type")
Dim Type_id As Integer = jResp.IntOf("data.type_id")
Dim i As Integer = 0
Dim count_i As Integer = jResp.SizeOfArray("data.group_by")
While i < count_i
    jResp.I = i
    strVal = jResp.StringOf("data.group_by[i]")
    i = i + 1
End While
i = 0
count_i = jResp.SizeOfArray("data.groups")
While i < count_i
    jResp.I = i
    error_budget_remaining7d = jResp.IntOf("data.groups[i].error_budget_remaining.7d")
    group = jResp.StringOf("data.groups[i].group")
    monitor_modified = jResp.IntOf("data.groups[i].monitor_modified")
    monitor_type = jResp.StringOf("data.groups[i].monitor_type")
    name = jResp.StringOf("data.groups[i].name")
    precision = jResp.IntOf("data.groups[i].precision")
    preview = jResp.BoolOf("data.groups[i].preview")
    sli_value = jResp.StringOf("data.groups[i].sli_value")
    span_precision = jResp.IntOf("data.groups[i].span_precision")
    uptime = jResp.StringOf("data.groups[i].uptime")
    j = 0
    count_j = jResp.SizeOfArray("data.groups[i].errors")
    While j < count_j
        jResp.J = j
        error_type = jResp.StringOf("data.groups[i].errors[j].error_type")
        error_message = jResp.StringOf("data.groups[i].errors[j].error_message")
        j = j + 1
    End While
    j = 0
    count_j = jResp.SizeOfArray("data.groups[i].history")
    While j < count_j
        jResp.J = j
        k = 0
        count_k = jResp.SizeOfArray("data.groups[i].history[j]")
        While k < count_k
            jResp.K = k
            intVal = jResp.IntOf("data.groups[i].history[j][k]")
            k = k + 1
        End While
        j = j + 1
    End While
    i = i + 1
End While
i = 0
count_i = jResp.SizeOfArray("data.monitors")
While i < count_i
    jResp.I = i
    error_budget_remaining7d = jResp.IntOf("data.monitors[i].error_budget_remaining.7d")
    group = jResp.StringOf("data.monitors[i].group")
    monitor_modified = jResp.IntOf("data.monitors[i].monitor_modified")
    monitor_type = jResp.StringOf("data.monitors[i].monitor_type")
    name = jResp.StringOf("data.monitors[i].name")
    precision = jResp.IntOf("data.monitors[i].precision")
    preview = jResp.BoolOf("data.monitors[i].preview")
    sli_value = jResp.StringOf("data.monitors[i].sli_value")
    span_precision = jResp.IntOf("data.monitors[i].span_precision")
    uptime = jResp.StringOf("data.monitors[i].uptime")
    j = 0
    count_j = jResp.SizeOfArray("data.monitors[i].errors")
    While j < count_j
        jResp.J = j
        error_type = jResp.StringOf("data.monitors[i].errors[j].error_type")
        error_message = jResp.StringOf("data.monitors[i].errors[j].error_message")
        j = j + 1
    End While
    j = 0
    count_j = jResp.SizeOfArray("data.monitors[i].history")
    While j < count_j
        jResp.J = j
        k = 0
        count_k = jResp.SizeOfArray("data.monitors[i].history[j]")
        While k < count_k
            jResp.K = k
            intVal = jResp.IntOf("data.monitors[i].history[j][k]")
            k = k + 1
        End While
        j = j + 1
    End While
    i = i + 1
End While
i = 0
count_i = jResp.SizeOfArray("data.overall.errors")
While i < count_i
    jResp.I = i
    error_type = jResp.StringOf("data.overall.errors[i].error_type")
    error_message = jResp.StringOf("data.overall.errors[i].error_message")
    i = i + 1
End While
i = 0
count_i = jResp.SizeOfArray("data.overall.history")
While i < count_i
    jResp.I = i
    j = 0
    count_j = jResp.SizeOfArray("data.overall.history[i]")
    While j < count_j
        jResp.J = j
        intVal = jResp.IntOf("data.overall.history[i][j]")
        j = j + 1
    End While
    i = i + 1
End While
i = 0
count_i = jResp.SizeOfArray("data.series.times")
While i < count_i
    jResp.I = i
    i = i + 1
End While
i = 0
count_i = jResp.SizeOfArray("errors")
While i < count_i
    jResp.I = i
    error = jResp.StringOf("errors[i].error")
    i = i + 1
End While

Curl Command

curl -G -d "from_ts=-62147425"
	-d "to_ts=-62147425"
	-d "target=49.34019051965387"
	-d "apply_correction=true"
	-H "Accept: application/json"
https://api.app.ddog-gov.com/api/v1/slo/:slo_id/history

Postman Collection Item JSON

{
  "name": "Get an SLO's history",
  "request": {
    "method": "GET",
    "header": [
      {
        "key": "Accept",
        "value": "application/json"
      }
    ],
    "url": {
      "raw": "{{baseUrl}}/api/v1/slo/:slo_id/history?from_ts=-62147425&to_ts=-62147425&target=49.34019051965387&apply_correction=true",
      "host": [
        "{{baseUrl}}"
      ],
      "path": [
        "api",
        "v1",
        "slo",
        ":slo_id",
        "history"
      ],
      "query": [
        {
          "key": "from_ts",
          "value": "-62147425",
          "description": "(Required) The `from` timestamp for the query window in epoch seconds."
        },
        {
          "key": "to_ts",
          "value": "-62147425",
          "description": "(Required) The `to` timestamp for the query window in epoch seconds."
        },
        {
          "key": "target",
          "value": "49.34019051965387",
          "description": "The SLO target. If `target` is passed in, the response will include the remaining error budget and a timeframe value of `custom`."
        },
        {
          "key": "apply_correction",
          "value": "true",
          "description": "Defaults to `true`. If any SLO corrections are applied and this parameter is set to `false`,\nthen the corrections will not be applied and the SLI values will not be affected."
        }
      ],
      "variable": [
        {
          "key": "slo_id",
          "value": "tempor Ut sed velit"
        }
      ]
    },
    "description": "Get a specific SLO’s history, regardless of its SLO type.\n\nThe detailed history data is structured according to the source data type.\nFor example, metric data is included for event SLOs that use\nthe metric source, and monitor SLO types include the monitor transition history.\n\n**Note:** There are different response formats for event based and time based SLOs.\nExamples of both are shown."
  },
  "response": [
    {
      "name": "OK",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "description": "Added as a part of security scheme: apikey",
            "key": "DD-API-KEY",
            "value": "<API Key>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/slo/:slo_id/history?from_ts=-62147425&to_ts=-62147425&target=49.34019051965387&apply_correction=true",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "slo",
            ":slo_id",
            "history"
          ],
          "query": [
            {
              "key": "from_ts",
              "value": "-62147425",
              "description": "(Required) The `from` timestamp for the query window in epoch seconds."
            },
            {
              "key": "to_ts",
              "value": "-62147425",
              "description": "(Required) The `to` timestamp for the query window in epoch seconds."
            },
            {
              "key": "target",
              "value": "49.34019051965387",
              "description": "The SLO target. If `target` is passed in, the response will include the remaining error budget and a timeframe value of `custom`."
            },
            {
              "key": "apply_correction",
              "value": "true",
              "description": "Defaults to `true`. If any SLO corrections are applied and this parameter is set to `false`,\nthen the corrections will not be applied and the SLI values will not be affected."
            }
          ],
          "variable": [
            {
              "key": "slo_id"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n  \"data\": {\n    \"from_ts\": 1615323990,\n    \"group_by\": [\n      \"aliqua pariatur\",\n      \"labor\"\n    ],\n    \"groups\": [\n      {\n        \"error_budget_remaining\": {\n          \"7d\": 100\n        },\n        \"errors\": [\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          },\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          }\n        ],\n        \"group\": \"name\",\n        \"history\": [\n          [\n            1579212382,\n            0\n          ]\n        ],\n        \"monitor_modified\": 1615867200,\n        \"monitor_type\": \"string\",\n        \"name\": \"string\",\n        \"precision\": 2,\n        \"preview\": true,\n        \"sli_value\": 99.99,\n        \"span_precision\": 2,\n        \"uptime\": 99.99\n      },\n      {\n        \"error_budget_remaining\": {\n          \"7d\": 100\n        },\n        \"errors\": [\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          },\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          }\n        ],\n        \"group\": \"name\",\n        \"history\": [\n          [\n            1579212382,\n            0\n          ]\n        ],\n        \"monitor_modified\": 1615867200,\n        \"monitor_type\": \"string\",\n        \"name\": \"string\",\n        \"precision\": 2,\n        \"preview\": true,\n        \"sli_value\": 99.99,\n        \"span_precision\": 2,\n        \"uptime\": 99.99\n      }\n    ],\n    \"monitors\": [\n      {\n        \"error_budget_remaining\": {\n          \"7d\": 100\n        },\n        \"errors\": [\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          },\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          }\n        ],\n        \"group\": \"name\",\n        \"history\": [\n          [\n            1579212382,\n            0\n          ]\n        ],\n        \"monitor_modified\": 1615867200,\n        \"monitor_type\": \"string\",\n        \"name\": \"string\",\n        \"precision\": 2,\n        \"preview\": true,\n        \"sli_value\": 99.99,\n        \"span_precision\": 2,\n        \"uptime\": 99.99\n      },\n      {\n        \"error_budget_remaining\": {\n          \"7d\": 100\n        },\n        \"errors\": [\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          },\n          {\n            \"error_type\": \"\",\n            \"error_message\": \"\"\n          }\n        ],\n        \"group\": \"name\",\n        \"history\": [\n          [\n            1579212382,\n            0\n          ]\n        ],\n        \"monitor_modified\": 1615867200,\n        \"monitor_type\": \"string\",\n        \"name\": \"string\",\n        \"precision\": 2,\n        \"preview\": true,\n        \"sli_value\": 99.99,\n        \"span_precision\": 2,\n        \"uptime\": 99.99\n      }\n    ],\n    \"overall\": {\n      \"error_budget_remaining\": {\n        \"7d\": 100\n      },\n      \"errors\": [\n        {\n          \"error_type\": \"\",\n          \"error_message\": \"\"\n        },\n        {\n          \"error_type\": \"\",\n          \"error_message\": \"\"\n        }\n      ],\n      \"group\": \"name\",\n      \"history\": [\n        [\n          1579212382,\n          0\n        ]\n      ],\n      \"monitor_modified\": 1615867200,\n      \"monitor_type\": \"string\",\n      \"name\": \"string\",\n      \"precision\": {\n        \"30d\": 1,\n        \"7d\": 2\n      },\n      \"preview\": true,\n      \"sli_value\": 99.99,\n      \"span_precision\": 2,\n      \"uptime\": 99.99\n    },\n    \"series\": {\n      \"res_type\": \"\",\n      \"interval\": 0,\n      \"resp_version\": 0,\n      \"query\": \"\",\n      \"times\": [],\n      \"numerator\": {\n        \"count\": 0,\n        \"sum\": 0,\n        \"metadata\": {}\n      },\n      \"denominator\": {\n        \"count\": 0,\n        \"sum\": 0,\n        \"metadata\": {}\n      },\n      \"message\": \"\"\n    },\n    \"thresholds\": {\n      \"my_service\": {\n        \"target\": 95,\n        \"timeframe\": \"7d\"\n      }\n    },\n    \"to_ts\": 1615928790,\n    \"type\": \"metric\",\n    \"type_id\": 0\n  },\n  \"errors\": [\n    {\n      \"error\": \"ullamco pariatur\"\n    },\n    {\n      \"error\": \"aliquip anim do laborum commodo\"\n    }\n  ]\n}"
    },
    {
      "name": "Bad Request",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "description": "Added as a part of security scheme: apikey",
            "key": "DD-API-KEY",
            "value": "<API Key>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/slo/:slo_id/history?from_ts=-62147425&to_ts=-62147425&target=49.34019051965387&apply_correction=true",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "slo",
            ":slo_id",
            "history"
          ],
          "query": [
            {
              "key": "from_ts",
              "value": "-62147425",
              "description": "(Required) The `from` timestamp for the query window in epoch seconds."
            },
            {
              "key": "to_ts",
              "value": "-62147425",
              "description": "(Required) The `to` timestamp for the query window in epoch seconds."
            },
            {
              "key": "target",
              "value": "49.34019051965387",
              "description": "The SLO target. If `target` is passed in, the response will include the remaining error budget and a timeframe value of `custom`."
            },
            {
              "key": "apply_correction",
              "value": "true",
              "description": "Defaults to `true`. If any SLO corrections are applied and this parameter is set to `false`,\nthen the corrections will not be applied and the SLI values will not be affected."
            }
          ],
          "variable": [
            {
              "key": "slo_id"
            }
          ]
        }
      },
      "status": "Bad Request",
      "code": 400,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n  \"errors\": [\n    \"Bad Request\",\n    \"Bad Request\"\n  ]\n}"
    },
    {
      "name": "Forbidden",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "description": "Added as a part of security scheme: apikey",
            "key": "DD-API-KEY",
            "value": "<API Key>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/slo/:slo_id/history?from_ts=-62147425&to_ts=-62147425&target=49.34019051965387&apply_correction=true",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "slo",
            ":slo_id",
            "history"
          ],
          "query": [
            {
              "key": "from_ts",
              "value": "-62147425",
              "description": "(Required) The `from` timestamp for the query window in epoch seconds."
            },
            {
              "key": "to_ts",
              "value": "-62147425",
              "description": "(Required) The `to` timestamp for the query window in epoch seconds."
            },
            {
              "key": "target",
              "value": "49.34019051965387",
              "description": "The SLO target. If `target` is passed in, the response will include the remaining error budget and a timeframe value of `custom`."
            },
            {
              "key": "apply_correction",
              "value": "true",
              "description": "Defaults to `true`. If any SLO corrections are applied and this parameter is set to `false`,\nthen the corrections will not be applied and the SLI values will not be affected."
            }
          ],
          "variable": [
            {
              "key": "slo_id"
            }
          ]
        }
      },
      "status": "Forbidden",
      "code": 403,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n  \"errors\": [\n    \"Bad Request\",\n    \"Bad Request\"\n  ]\n}"
    },
    {
      "name": "Not Found",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "description": "Added as a part of security scheme: apikey",
            "key": "DD-API-KEY",
            "value": "<API Key>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/slo/:slo_id/history?from_ts=-62147425&to_ts=-62147425&target=49.34019051965387&apply_correction=true",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "slo",
            ":slo_id",
            "history"
          ],
          "query": [
            {
              "key": "from_ts",
              "value": "-62147425",
              "description": "(Required) The `from` timestamp for the query window in epoch seconds."
            },
            {
              "key": "to_ts",
              "value": "-62147425",
              "description": "(Required) The `to` timestamp for the query window in epoch seconds."
            },
            {
              "key": "target",
              "value": "49.34019051965387",
              "description": "The SLO target. If `target` is passed in, the response will include the remaining error budget and a timeframe value of `custom`."
            },
            {
              "key": "apply_correction",
              "value": "true",
              "description": "Defaults to `true`. If any SLO corrections are applied and this parameter is set to `false`,\nthen the corrections will not be applied and the SLI values will not be affected."
            }
          ],
          "variable": [
            {
              "key": "slo_id"
            }
          ]
        }
      },
      "status": "Not Found",
      "code": 404,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n  \"errors\": [\n    \"Bad Request\",\n    \"Bad Request\"\n  ]\n}"
    },
    {
      "name": "Too many requests",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "description": "Added as a part of security scheme: apikey",
            "key": "DD-API-KEY",
            "value": "<API Key>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/slo/:slo_id/history?from_ts=-62147425&to_ts=-62147425&target=49.34019051965387&apply_correction=true",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "slo",
            ":slo_id",
            "history"
          ],
          "query": [
            {
              "key": "from_ts",
              "value": "-62147425",
              "description": "(Required) The `from` timestamp for the query window in epoch seconds."
            },
            {
              "key": "to_ts",
              "value": "-62147425",
              "description": "(Required) The `to` timestamp for the query window in epoch seconds."
            },
            {
              "key": "target",
              "value": "49.34019051965387",
              "description": "The SLO target. If `target` is passed in, the response will include the remaining error budget and a timeframe value of `custom`."
            },
            {
              "key": "apply_correction",
              "value": "true",
              "description": "Defaults to `true`. If any SLO corrections are applied and this parameter is set to `false`,\nthen the corrections will not be applied and the SLI values will not be affected."
            }
          ],
          "variable": [
            {
              "key": "slo_id"
            }
          ]
        }
      },
      "status": "Too Many Requests",
      "code": 429,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n  \"errors\": [\n    \"Bad Request\",\n    \"Bad Request\"\n  ]\n}"
    }
  ]
}