Chilkat Online Tools

VB6 / Squadcast API V3 / Get Incident by ID

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 ChilkatHttp
Dim success As Long

' Adds the "Authorization: Bearer <access_token>" header.
http.AuthToken = "<access_token>"

Dim sbResponseBody As New ChilkatStringBuilder
success = http.QuickGetSb("https://api.squadcast.com/v3/incidents/:incidentID",sbResponseBody)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

Dim jResp As New ChilkatJsonObject
success = jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = 0

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

Dim respStatusCode As Long
respStatusCode = http.LastStatus
Debug.Print "Response Status Code = " & respStatusCode
If (respStatusCode >= 400) Then
    Debug.Print "Response Header:"
    Debug.Print http.LastHeader
    Debug.Print "Failed."
    Exit Sub
End If

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

' {
'   "data": {
'     "id": "5d81d9bc60e42f6b99ca4307",
'     "service_id": "5d81d9687000fb6b9def7e35",
'     "alert_source_id": "5a9002f082bb573a2bc779eb",
'     "organization_id": "5d81d9187000fb6b9def7e32",
'     "incidentNumber": 3,
'     "message": "[warning] CPUThrottlingHigh",
'     "assignedTo": [
'       {
'         "id": "5d81d9407000fb6b9def7e33",
'         "type": "escalationpolicy",
'         "timeOfAssignment": "2019-09-18T07:16:12.218Z"
'       },
'       {
'         "id": "5d81d9187000fb6b9def7e31",
'         "type": "user",
'         "timeOfAssignment": "2019-09-20T11:06:37.838Z"
'       }
'     ],
'     "description": "Message: 64% throttling of CPU in namespace kube-system for container autoscaler in pod calico-typha-horizontal-autoscaler-5ff7f558cc-qlm2t.\nRunbook url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-cputhrottlinghigh\nLabels\n  Alertname: CPUThrottlingHigh\n  Container name: autoscaler\n  Namespace: kube-system\n  Pod name: calico-typha-horizontal-autoscaler-5ff7f558cc-qlm2t\n  Prometheus: monitoring/monitoring-prometheus-oper-prometheus\n  Severity: warning\n  Generator URL: http://monitoring-prometheus-oper-prometheus.monitoring:9090/graph?g0.expr=100+%2A+sum+by%28container_name%2C+pod_name%2C+namespace%29+%28increase%28container_cpu_cfs_throttled_periods_total%7Bcontainer_name%21%3D%22%22%7D%5B5m%5D%29%29+%2F+sum+by%28container_name%2C+pod_name%2C+namespace%29+%28increase%28container_cpu_cfs_periods_total%5B5m%5D%29%29+%3E+25&g0.tab=1",
'     "status": "resolved",
'     "timeOfCreation": "2019-09-18T07:16:12.218Z",
'     "tags": null,
'     "logs": [
'       {
'         "action": "triggered",
'         "assignedTo": "escalationpolicy",
'         "id": "5d81d9407000fb6b9def7e33",
'         "time": "2019-09-18T07:16:12.215Z",
'         "reason": "",
'         "additionalInfo": null
'       },
'       {
'         "action": "acknowledged",
'         "assignedTo": "user",
'         "id": "5d81d9187000fb6b9def7e31",
'         "time": "2019-09-20T11:06:37.838Z",
'         "reason": "",
'         "additionalInfo": null
'       },
'       {
'         "action": "resolved",
'         "assignedTo": "user",
'         "id": "5d81d9187000fb6b9def7e31",
'         "time": "2019-09-20T11:06:40.724Z",
'         "reason": "",
'         "additionalInfo": null
'       }
'     ],
'     "analytics": {
'       "tta": {
'         "time": 186625623,
'         "userId": "5d81d9187000fb6b9def7e31",
'         "escalationPolicyId": "5d81d9407000fb6b9def7e33",
'         "squadId": "000000000000000000000000"
'       },
'       "ttr": {
'         "time": 186628509,
'         "userId": "5d81d9187000fb6b9def7e31",
'         "escalationPolicyId": "5d81d9407000fb6b9def7e33",
'         "squadId": "000000000000000000000000"
'       }
'     },
'     "pinned_messages": null,
'     "deleted": false,
'     "relevantUsers": [
'     ],
'     "relevantEscalationPolicies": [
'     ],
'     "relevantSquads": [
'     ],
'     "relevantSchedules": [
'     ],
'     "relevantPeopleLogs": [
'     ],
'     "responseNotes": [
'     ]
'   }
' }

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

Dim id As String
Dim v_type As String
Dim timeOfAssignment As String
Dim action As String
Dim assignedTo As String
Dim time As String
Dim reason As String
Dim additionalInfo As String

Dim Id As String
Id = jResp.StringOf("data.id")
Dim Service_id As String
Service_id = jResp.StringOf("data.service_id")
Dim Alert_source_id As String
Alert_source_id = jResp.StringOf("data.alert_source_id")
Dim Organization_id As String
Organization_id = jResp.StringOf("data.organization_id")
Dim IncidentNumber As Long
IncidentNumber = jResp.IntOf("data.incidentNumber")
Dim Message As String
Message = jResp.StringOf("data.message")
Dim Description As String
Description = jResp.StringOf("data.description")
Dim Status As String
Status = jResp.StringOf("data.status")
Dim TimeOfCreation As String
TimeOfCreation = jResp.StringOf("data.timeOfCreation")
Dim Tags As String
Tags = jResp.StringOf("data.tags")
Dim Time As Long
Time = jResp.IntOf("data.analytics.tta.time")
Dim UserId As String
UserId = jResp.StringOf("data.analytics.tta.userId")
Dim EscalationPolicyId As String
EscalationPolicyId = jResp.StringOf("data.analytics.tta.escalationPolicyId")
Dim SquadId As String
SquadId = jResp.StringOf("data.analytics.tta.squadId")
Dim TtrTime As Long
TtrTime = jResp.IntOf("data.analytics.ttr.time")
Dim TtrUserId As String
TtrUserId = jResp.StringOf("data.analytics.ttr.userId")
Dim TtrEscalationPolicyId As String
TtrEscalationPolicyId = jResp.StringOf("data.analytics.ttr.escalationPolicyId")
Dim TtrSquadId As String
TtrSquadId = jResp.StringOf("data.analytics.ttr.squadId")
Dim Pinned_messages As String
Pinned_messages = jResp.StringOf("data.pinned_messages")
Dim Deleted As Long
Deleted = jResp.BoolOf("data.deleted")
Dim i As Long
i = 0
Dim count_i As Long
count_i = jResp.SizeOfArray("data.assignedTo")
Do While i < count_i
    jResp.I = i
    id = jResp.StringOf("data.assignedTo[i].id")
    v_type = jResp.StringOf("data.assignedTo[i].type")
    timeOfAssignment = jResp.StringOf("data.assignedTo[i].timeOfAssignment")
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("data.logs")
Do While i < count_i
    jResp.I = i
    action = jResp.StringOf("data.logs[i].action")
    assignedTo = jResp.StringOf("data.logs[i].assignedTo")
    id = jResp.StringOf("data.logs[i].id")
    time = jResp.StringOf("data.logs[i].time")
    reason = jResp.StringOf("data.logs[i].reason")
    additionalInfo = jResp.StringOf("data.logs[i].additionalInfo")
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("data.relevantUsers")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("data.relevantEscalationPolicies")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("data.relevantSquads")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("data.relevantSchedules")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("data.relevantPeopleLogs")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("data.responseNotes")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop

Curl Command

curl -X GET
	-H "Authorization: Bearer <access_token>"
https://api.squadcast.com/v3/incidents/:incidentID

Postman Collection Item JSON

{
  "name": "Get Incident by ID",
  "request": {
    "auth": {
      "type": "bearer",
      "bearer": [
        {
          "key": "token",
          "value": "{{sq_pb_auth_header}}",
          "type": "string"
        }
      ]
    },
    "method": "GET",
    "header": [
    ],
    "url": {
      "raw": "{{baseUrl}}/incidents/:incidentID",
      "host": [
        "{{baseUrl}}"
      ],
      "path": [
        "incidents",
        ":incidentID"
      ],
      "variable": [
        {
          "key": "incidentID",
          "value": "5d81d9bc60e42f6b99ca4307"
        }
      ]
    },
    "description": "- This endpoint is used to get the incident details by ID.\n- Requires `access_token` as a `Bearer {{token}}` in the `Authorization` header."
  },
  "response": [
    {
      "name": "400 Bad Request",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "{{baseUrl}}/incidents/:incidentID",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "incidents",
            ":incidentID"
          ],
          "variable": [
            {
              "key": "incidentID",
              "value": "5d81d9bc60e42f6b99ca4307"
            }
          ]
        }
      },
      "status": "Bad Request",
      "code": 400,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx/1.17.7"
        },
        {
          "key": "Date",
          "value": "Tue, 07 Jul 2020 21:06:25 GMT"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        },
        {
          "key": "Connection",
          "value": "keep-alive"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "Vary",
          "value": "Origin"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=15724800; includeSubDomains"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"meta\": {\n        \"status\": 400,\n        \"error_message\": \"invalid incident id\"\n    }\n}"
    },
    {
      "name": "404 Not Found",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "{{baseUrl}}/incidents/:incidentID",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "incidents",
            ":incidentID"
          ],
          "variable": [
            {
              "key": "incidentID",
              "value": "5d81d9bc60e42f6b99ca4307"
            }
          ]
        }
      },
      "status": "Not Found",
      "code": 404,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx/1.17.7"
        },
        {
          "key": "Date",
          "value": "Tue, 07 Jul 2020 21:06:25 GMT"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        },
        {
          "key": "Connection",
          "value": "keep-alive"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "Vary",
          "value": "Origin"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=15724800; includeSubDomains"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"meta\": {\n        \"status\": 404,\n        \"error_message\": \"incident not found\"\n    }\n}"
    },
    {
      "name": "401 Unauthorized",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "{{baseUrl}}/incidents/:incidentID",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "incidents",
            ":incidentID"
          ],
          "variable": [
            {
              "key": "incidentID",
              "value": "5d81d9bc60e42f6b99ca4307"
            }
          ]
        }
      },
      "status": "Unauthorized",
      "code": 401,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx/1.17.7"
        },
        {
          "key": "Date",
          "value": "Tue, 07 Jul 2020 21:06:25 GMT"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        },
        {
          "key": "Connection",
          "value": "keep-alive"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "Vary",
          "value": "Origin"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=15724800; includeSubDomains"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"meta\": {\n        \"status\": 401,\n        \"error_message\": \"<string>\"\n    }\n}"
    },
    {
      "name": "403 - Forbidden",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "{{baseUrl}}/incidents/:incidentID",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "incidents",
            ":incidentID"
          ],
          "variable": [
            {
              "key": "incidentID",
              "value": "5d81d9bc60e42f6b99ca4307"
            }
          ]
        }
      },
      "status": "Forbidden",
      "code": 403,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx/1.17.7"
        },
        {
          "key": "Date",
          "value": "Tue, 07 Jul 2020 21:06:25 GMT"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        },
        {
          "key": "Connection",
          "value": "keep-alive"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "Vary",
          "value": "Origin"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=15724800; includeSubDomains"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"meta\": {\n        \"status\": 403,\n        \"error_message\": \"<string>\"\n    }\n}"
    },
    {
      "name": "200 OK",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "{{baseUrl}}/incidents/:incidentID",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "incidents",
            ":incidentID"
          ],
          "variable": [
            {
              "key": "incidentID",
              "value": "5d81d9bc60e42f6b99ca4307"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx/1.17.7"
        },
        {
          "key": "Date",
          "value": "Tue, 07 Jul 2020 21:06:25 GMT"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        },
        {
          "key": "Connection",
          "value": "keep-alive"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "Vary",
          "value": "Origin"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=15724800; includeSubDomains"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"data\": {\n        \"id\": \"5d81d9bc60e42f6b99ca4307\",\n        \"service_id\": \"5d81d9687000fb6b9def7e35\",\n        \"alert_source_id\": \"5a9002f082bb573a2bc779eb\",\n        \"organization_id\": \"5d81d9187000fb6b9def7e32\",\n        \"incidentNumber\": 3,\n        \"message\": \"[warning] CPUThrottlingHigh\",\n        \"assignedTo\": [\n            {\n                \"id\": \"5d81d9407000fb6b9def7e33\",\n                \"type\": \"escalationpolicy\",\n                \"timeOfAssignment\": \"2019-09-18T07:16:12.218Z\"\n            },\n            {\n                \"id\": \"5d81d9187000fb6b9def7e31\",\n                \"type\": \"user\",\n                \"timeOfAssignment\": \"2019-09-20T11:06:37.838Z\"\n            }\n        ],\n        \"description\": \"Message: 64% throttling of CPU in namespace kube-system for container autoscaler in pod calico-typha-horizontal-autoscaler-5ff7f558cc-qlm2t.\\nRunbook url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-cputhrottlinghigh\\nLabels\\n  Alertname: CPUThrottlingHigh\\n  Container name: autoscaler\\n  Namespace: kube-system\\n  Pod name: calico-typha-horizontal-autoscaler-5ff7f558cc-qlm2t\\n  Prometheus: monitoring/monitoring-prometheus-oper-prometheus\\n  Severity: warning\\n  Generator URL: http://monitoring-prometheus-oper-prometheus.monitoring:9090/graph?g0.expr=100+%2A+sum+by%28container_name%2C+pod_name%2C+namespace%29+%28increase%28container_cpu_cfs_throttled_periods_total%7Bcontainer_name%21%3D%22%22%7D%5B5m%5D%29%29+%2F+sum+by%28container_name%2C+pod_name%2C+namespace%29+%28increase%28container_cpu_cfs_periods_total%5B5m%5D%29%29+%3E+25&g0.tab=1\",\n        \"status\": \"resolved\",\n        \"timeOfCreation\": \"2019-09-18T07:16:12.218Z\",\n        \"tags\": null,\n        \"logs\": [\n            {\n                \"action\": \"triggered\",\n                \"assignedTo\": \"escalationpolicy\",\n                \"id\": \"5d81d9407000fb6b9def7e33\",\n                \"time\": \"2019-09-18T07:16:12.215Z\",\n                \"reason\": \"\",\n                \"additionalInfo\": null\n            },\n            {\n                \"action\": \"acknowledged\",\n                \"assignedTo\": \"user\",\n                \"id\": \"5d81d9187000fb6b9def7e31\",\n                \"time\": \"2019-09-20T11:06:37.838Z\",\n                \"reason\": \"\",\n                \"additionalInfo\": null\n            },\n            {\n                \"action\": \"resolved\",\n                \"assignedTo\": \"user\",\n                \"id\": \"5d81d9187000fb6b9def7e31\",\n                \"time\": \"2019-09-20T11:06:40.724Z\",\n                \"reason\": \"\",\n                \"additionalInfo\": null\n            }\n        ],\n        \"analytics\": {\n            \"tta\": {\n                \"time\": 186625623,\n                \"userId\": \"5d81d9187000fb6b9def7e31\",\n                \"escalationPolicyId\": \"5d81d9407000fb6b9def7e33\",\n                \"squadId\": \"000000000000000000000000\"\n            },\n            \"ttr\": {\n                \"time\": 186628509,\n                \"userId\": \"5d81d9187000fb6b9def7e31\",\n                \"escalationPolicyId\": \"5d81d9407000fb6b9def7e33\",\n                \"squadId\": \"000000000000000000000000\"\n            }\n        },\n        \"pinned_messages\": null,\n        \"deleted\": false,\n        \"relevantUsers\": [],\n        \"relevantEscalationPolicies\": [],\n        \"relevantSquads\": [],\n        \"relevantSchedules\": [],\n        \"relevantPeopleLogs\": [],\n        \"responseNotes\": []\n    }\n}"
    }
  ]
}