NAV navbar
shell javascript python go csharp java

CyberProof Platform API v2.21.3

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

The CyberProof Platform public API, enabling integration with customer systems.

Base URLs:

Email: CyberProof API Support

Authentication

alerts

Alerts APIs

External documentation

createAlert

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/alerts \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"name":"Email messages containing malware removed after delivery","sourceId":"345ffe9a","severity":"High","description":"message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.","sourceUrl":"http://10.0.0.90/MySIEM/api/alerts/345ffe9a","raw":{"attributeInitializationInProgress":false,"createdTime":{"day":{"numberInt":"18"},"hour":{"numberInt":"16"},"milliSecond":{"numberInt":"711"},"minute":{"numberInt":"10"},"month":{"numberInt":"6"},"second":{"numberInt":"47"},"timezoneID":"Israel","year":{"numberInt":"2017"}},"createdTimestamp":{"numberDouble":"1500383447711"},"deprecated":false,"description":"ACME","disabled":false,"inCache":true,"inactive":false,"initialized":true,"isAdditionalLoaded":false,"localID":{"numberDouble":"30064798760"},"modificationCount":{"numberInt":"1"}},"classification":"Authentication","observables":[{"type":"IPv4 Address","value":"192.168.40.45","tags":["Cloud-Computing","Virus","Phishing"],"extraProperties":{"property1":{"value":"aaa-bbcc","type":"WeakIdentifier"},"property2":{"value":"aaa-bbcc","type":"WeakIdentifier"}},"relatedExtraProperties":{"property1":{"sha":256,"type":"WeakIdentifier"},"property2":{"sha":256,"type":"WeakIdentifier"}}}],"useCase":"UC216 - EPP - Persistent Malware","company":"ACME","tags":["Cloud-Computing","Virus","Phishing"],"categories":["Ransomware","Phishing"],"detectionRule":"WRONG_PASSWORD_3_ATTEMPTS","alertType":"CTI-Landscape","threatType":"Phishing","threatActors":["Cyber Criminals","Anonymous"],"malwareTools":["TrickBot","IcedID","Cobalt Strike"],"ctiSourceUrls":["https://blog.malwarebytes.com/someTopic"],"recommendations":"Implement the attached IOCs in your security systems.","killChain":["Reconnaissance","Weaponization","Delivery"],"mitreAttacks":["T1003","T1001","T1595.001"]}'
fetch("https://test-api.cyberproof.io/api/v1/alerts", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"name\":\"Email messages containing malware removed after delivery\",\"sourceId\":\"345ffe9a\",\"severity\":\"High\",\"description\":\"message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.\",\"sourceUrl\":\"http://10.0.0.90/MySIEM/api/alerts/345ffe9a\",\"raw\":{\"attributeInitializationInProgress\":false,\"createdTime\":{\"day\":{\"numberInt\":\"18\"},\"hour\":{\"numberInt\":\"16\"},\"milliSecond\":{\"numberInt\":\"711\"},\"minute\":{\"numberInt\":\"10\"},\"month\":{\"numberInt\":\"6\"},\"second\":{\"numberInt\":\"47\"},\"timezoneID\":\"Israel\",\"year\":{\"numberInt\":\"2017\"}},\"createdTimestamp\":{\"numberDouble\":\"1500383447711\"},\"deprecated\":false,\"description\":\"ACME\",\"disabled\":false,\"inCache\":true,\"inactive\":false,\"initialized\":true,\"isAdditionalLoaded\":false,\"localID\":{\"numberDouble\":\"30064798760\"},\"modificationCount\":{\"numberInt\":\"1\"}},\"classification\":\"Authentication\",\"observables\":[{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"extraProperties\":{\"property1\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"},\"property2\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"}},\"relatedExtraProperties\":{\"property1\":{\"sha\":256,\"type\":\"WeakIdentifier\"},\"property2\":{\"sha\":256,\"type\":\"WeakIdentifier\"}}}],\"useCase\":\"UC216 - EPP - Persistent Malware\",\"company\":\"ACME\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"categories\":[\"Ransomware\",\"Phishing\"],\"detectionRule\":\"WRONG_PASSWORD_3_ATTEMPTS\",\"alertType\":\"CTI-Landscape\",\"threatType\":\"Phishing\",\"threatActors\":[\"Cyber Criminals\",\"Anonymous\"],\"malwareTools\":[\"TrickBot\",\"IcedID\",\"Cobalt Strike\"],\"ctiSourceUrls\":[\"https://blog.malwarebytes.com/someTopic\"],\"recommendations\":\"Implement the attached IOCs in your security systems.\",\"killChain\":[\"Reconnaissance\",\"Weaponization\",\"Delivery\"],\"mitreAttacks\":[\"T1003\",\"T1001\",\"T1595.001\"]}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"name\":\"Email messages containing malware removed after delivery\",\"sourceId\":\"345ffe9a\",\"severity\":\"High\",\"description\":\"message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.\",\"sourceUrl\":\"http://10.0.0.90/MySIEM/api/alerts/345ffe9a\",\"raw\":{\"attributeInitializationInProgress\":false,\"createdTime\":{\"day\":{\"numberInt\":\"18\"},\"hour\":{\"numberInt\":\"16\"},\"milliSecond\":{\"numberInt\":\"711\"},\"minute\":{\"numberInt\":\"10\"},\"month\":{\"numberInt\":\"6\"},\"second\":{\"numberInt\":\"47\"},\"timezoneID\":\"Israel\",\"year\":{\"numberInt\":\"2017\"}},\"createdTimestamp\":{\"numberDouble\":\"1500383447711\"},\"deprecated\":false,\"description\":\"ACME\",\"disabled\":false,\"inCache\":true,\"inactive\":false,\"initialized\":true,\"isAdditionalLoaded\":false,\"localID\":{\"numberDouble\":\"30064798760\"},\"modificationCount\":{\"numberInt\":\"1\"}},\"classification\":\"Authentication\",\"observables\":[{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"extraProperties\":{\"property1\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"},\"property2\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"}},\"relatedExtraProperties\":{\"property1\":{\"sha\":256,\"type\":\"WeakIdentifier\"},\"property2\":{\"sha\":256,\"type\":\"WeakIdentifier\"}}}],\"useCase\":\"UC216 - EPP - Persistent Malware\",\"company\":\"ACME\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"categories\":[\"Ransomware\",\"Phishing\"],\"detectionRule\":\"WRONG_PASSWORD_3_ATTEMPTS\",\"alertType\":\"CTI-Landscape\",\"threatType\":\"Phishing\",\"threatActors\":[\"Cyber Criminals\",\"Anonymous\"],\"malwareTools\":[\"TrickBot\",\"IcedID\",\"Cobalt Strike\"],\"ctiSourceUrls\":[\"https://blog.malwarebytes.com/someTopic\"],\"recommendations\":\"Implement the attached IOCs in your security systems.\",\"killChain\":[\"Reconnaissance\",\"Weaponization\",\"Delivery\"],\"mitreAttacks\":[\"T1003\",\"T1001\",\"T1595.001\"]}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/alerts", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/alerts"

    payload := strings.NewReader("{\"name\":\"Email messages containing malware removed after delivery\",\"sourceId\":\"345ffe9a\",\"severity\":\"High\",\"description\":\"message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.\",\"sourceUrl\":\"http://10.0.0.90/MySIEM/api/alerts/345ffe9a\",\"raw\":{\"attributeInitializationInProgress\":false,\"createdTime\":{\"day\":{\"numberInt\":\"18\"},\"hour\":{\"numberInt\":\"16\"},\"milliSecond\":{\"numberInt\":\"711\"},\"minute\":{\"numberInt\":\"10\"},\"month\":{\"numberInt\":\"6\"},\"second\":{\"numberInt\":\"47\"},\"timezoneID\":\"Israel\",\"year\":{\"numberInt\":\"2017\"}},\"createdTimestamp\":{\"numberDouble\":\"1500383447711\"},\"deprecated\":false,\"description\":\"ACME\",\"disabled\":false,\"inCache\":true,\"inactive\":false,\"initialized\":true,\"isAdditionalLoaded\":false,\"localID\":{\"numberDouble\":\"30064798760\"},\"modificationCount\":{\"numberInt\":\"1\"}},\"classification\":\"Authentication\",\"observables\":[{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"extraProperties\":{\"property1\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"},\"property2\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"}},\"relatedExtraProperties\":{\"property1\":{\"sha\":256,\"type\":\"WeakIdentifier\"},\"property2\":{\"sha\":256,\"type\":\"WeakIdentifier\"}}}],\"useCase\":\"UC216 - EPP - Persistent Malware\",\"company\":\"ACME\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"categories\":[\"Ransomware\",\"Phishing\"],\"detectionRule\":\"WRONG_PASSWORD_3_ATTEMPTS\",\"alertType\":\"CTI-Landscape\",\"threatType\":\"Phishing\",\"threatActors\":[\"Cyber Criminals\",\"Anonymous\"],\"malwareTools\":[\"TrickBot\",\"IcedID\",\"Cobalt Strike\"],\"ctiSourceUrls\":[\"https://blog.malwarebytes.com/someTopic\"],\"recommendations\":\"Implement the attached IOCs in your security systems.\",\"killChain\":[\"Reconnaissance\",\"Weaponization\",\"Delivery\"],\"mitreAttacks\":[\"T1003\",\"T1001\",\"T1595.001\"]}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/alerts"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"name\":\"Email messages containing malware removed after delivery\",\"sourceId\":\"345ffe9a\",\"severity\":\"High\",\"description\":\"message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.\",\"sourceUrl\":\"http://10.0.0.90/MySIEM/api/alerts/345ffe9a\",\"raw\":{\"attributeInitializationInProgress\":false,\"createdTime\":{\"day\":{\"numberInt\":\"18\"},\"hour\":{\"numberInt\":\"16\"},\"milliSecond\":{\"numberInt\":\"711\"},\"minute\":{\"numberInt\":\"10\"},\"month\":{\"numberInt\":\"6\"},\"second\":{\"numberInt\":\"47\"},\"timezoneID\":\"Israel\",\"year\":{\"numberInt\":\"2017\"}},\"createdTimestamp\":{\"numberDouble\":\"1500383447711\"},\"deprecated\":false,\"description\":\"ACME\",\"disabled\":false,\"inCache\":true,\"inactive\":false,\"initialized\":true,\"isAdditionalLoaded\":false,\"localID\":{\"numberDouble\":\"30064798760\"},\"modificationCount\":{\"numberInt\":\"1\"}},\"classification\":\"Authentication\",\"observables\":[{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"extraProperties\":{\"property1\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"},\"property2\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"}},\"relatedExtraProperties\":{\"property1\":{\"sha\":256,\"type\":\"WeakIdentifier\"},\"property2\":{\"sha\":256,\"type\":\"WeakIdentifier\"}}}],\"useCase\":\"UC216 - EPP - Persistent Malware\",\"company\":\"ACME\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"categories\":[\"Ransomware\",\"Phishing\"],\"detectionRule\":\"WRONG_PASSWORD_3_ATTEMPTS\",\"alertType\":\"CTI-Landscape\",\"threatType\":\"Phishing\",\"threatActors\":[\"Cyber Criminals\",\"Anonymous\"],\"malwareTools\":[\"TrickBot\",\"IcedID\",\"Cobalt Strike\"],\"ctiSourceUrls\":[\"https://blog.malwarebytes.com/someTopic\"],\"recommendations\":\"Implement the attached IOCs in your security systems.\",\"killChain\":[\"Reconnaissance\",\"Weaponization\",\"Delivery\"],\"mitreAttacks\":[\"T1003\",\"T1001\",\"T1595.001\"]}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/alerts")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"name\":\"Email messages containing malware removed after delivery\",\"sourceId\":\"345ffe9a\",\"severity\":\"High\",\"description\":\"message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.\",\"sourceUrl\":\"http://10.0.0.90/MySIEM/api/alerts/345ffe9a\",\"raw\":{\"attributeInitializationInProgress\":false,\"createdTime\":{\"day\":{\"numberInt\":\"18\"},\"hour\":{\"numberInt\":\"16\"},\"milliSecond\":{\"numberInt\":\"711\"},\"minute\":{\"numberInt\":\"10\"},\"month\":{\"numberInt\":\"6\"},\"second\":{\"numberInt\":\"47\"},\"timezoneID\":\"Israel\",\"year\":{\"numberInt\":\"2017\"}},\"createdTimestamp\":{\"numberDouble\":\"1500383447711\"},\"deprecated\":false,\"description\":\"ACME\",\"disabled\":false,\"inCache\":true,\"inactive\":false,\"initialized\":true,\"isAdditionalLoaded\":false,\"localID\":{\"numberDouble\":\"30064798760\"},\"modificationCount\":{\"numberInt\":\"1\"}},\"classification\":\"Authentication\",\"observables\":[{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"extraProperties\":{\"property1\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"},\"property2\":{\"value\":\"aaa-bbcc\",\"type\":\"WeakIdentifier\"}},\"relatedExtraProperties\":{\"property1\":{\"sha\":256,\"type\":\"WeakIdentifier\"},\"property2\":{\"sha\":256,\"type\":\"WeakIdentifier\"}}}],\"useCase\":\"UC216 - EPP - Persistent Malware\",\"company\":\"ACME\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"categories\":[\"Ransomware\",\"Phishing\"],\"detectionRule\":\"WRONG_PASSWORD_3_ATTEMPTS\",\"alertType\":\"CTI-Landscape\",\"threatType\":\"Phishing\",\"threatActors\":[\"Cyber Criminals\",\"Anonymous\"],\"malwareTools\":[\"TrickBot\",\"IcedID\",\"Cobalt Strike\"],\"ctiSourceUrls\":[\"https://blog.malwarebytes.com/someTopic\"],\"recommendations\":\"Implement the attached IOCs in your security systems.\",\"killChain\":[\"Reconnaissance\",\"Weaponization\",\"Delivery\"],\"mitreAttacks\":[\"T1003\",\"T1001\",\"T1595.001\"]}")
  .asString();

POST /alerts

Creates a new alert

Creates a new alert in CDC.
This operation is idempotent: if the client provides a sourceId which already exists in CDC, then the operation should succeed with UPSERT semantics.br/> NOTE: The maximum request size is 2 MB.

Body parameter

{
  "name": "Email messages containing malware removed after delivery",
  "sourceId": "345ffe9a",
  "severity": "High",
  "description": "message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.",
  "sourceUrl": "http://10.0.0.90/MySIEM/api/alerts/345ffe9a",
  "raw": {
    "attributeInitializationInProgress": false,
    "createdTime": {
      "day": {
        "numberInt": "18"
      },
      "hour": {
        "numberInt": "16"
      },
      "milliSecond": {
        "numberInt": "711"
      },
      "minute": {
        "numberInt": "10"
      },
      "month": {
        "numberInt": "6"
      },
      "second": {
        "numberInt": "47"
      },
      "timezoneID": "Israel",
      "year": {
        "numberInt": "2017"
      }
    },
    "createdTimestamp": {
      "numberDouble": "1500383447711"
    },
    "deprecated": false,
    "description": "ACME",
    "disabled": false,
    "inCache": true,
    "inactive": false,
    "initialized": true,
    "isAdditionalLoaded": false,
    "localID": {
      "numberDouble": "30064798760"
    },
    "modificationCount": {
      "numberInt": "1"
    }
  },
  "classification": "Authentication",
  "observables": [
    {
      "type": "IPv4 Address",
      "value": "192.168.40.45",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "extraProperties": {
        "property1": {
          "value": "aaa-bbcc",
          "type": "WeakIdentifier"
        },
        "property2": {
          "value": "aaa-bbcc",
          "type": "WeakIdentifier"
        }
      },
      "relatedExtraProperties": {
        "property1": {
          "sha": 256,
          "type": "WeakIdentifier"
        },
        "property2": {
          "sha": 256,
          "type": "WeakIdentifier"
        }
      }
    }
  ],
  "useCase": "UC216 - EPP - Persistent Malware",
  "company": "ACME",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "alertType": "CTI-Landscape",
  "threatType": "Phishing",
  "threatActors": [
    "Cyber Criminals",
    "Anonymous"
  ],
  "malwareTools": [
    "TrickBot",
    "IcedID",
    "Cobalt Strike"
  ],
  "ctiSourceUrls": [
    "https://blog.malwarebytes.com/someTopic"
  ],
  "recommendations": "Implement the attached IOCs in your security systems.",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ]
}

Parameters

Name In Type Required Description
body body CreateAlertRequest true none

Example responses

201 Response

{
  "id": "5e7c6cf54b832e0018f191ad",
  "source": "QRadar",
  "sourceId": 296,
  "score": 33.2,
  "name": "Windows - Multiple failed logins same user same host",
  "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
  "severity": "Medium",
  "created": "2019-08-24T14:15:22Z",
  "modified": "2019-08-24T14:15:22Z",
  "detected": "2019-08-24T14:15:22Z",
  "status": "In Incident",
  "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
  "company": "ACME Europe",
  "useCase": "UC216 - EPP - Persistent Malware",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "classification": "Authentication",
  "observableTags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ],
  "alertType": "CTI-Landscape",
  "threatType": "Phishing"
}

Responses

Status Meaning Description Schema
201 Created The alert has been created AlertSummary
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryAlerts

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/alerts \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/alerts", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/alerts", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/alerts"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/alerts"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/alerts")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /alerts

*Queries alerts based on filters provided by the client. For synchronization purposes, the updatedAfter filter option should be used. *

Parameters

Name In Type Required Description
marker query string(byte) false A continuation token, used to retrieve the next results page.
updatedBefore query string(date-time) false Include only those which were updated before the specified timestamp (exclusive)
updatedAfter query string(date-time) false Include only those which were updated after or at the specified timestamp (inclusive)
detectedBefore query string(date-time) false Include only those which were detected before the specified timestamp (exclusive)
detectedAfter query string(date-time) false Include only those which were detected after the specified timestamp (inclusive)
status query array[string] false Filter alerts by status
severity query array[string] false Filter alerts by severity
company query string false Filter alerts by company
source query string false Filters alerts by their source system.
sourceId query string false When combined with the source parameter - finds an alert by its source ID (the ID as defined by the SIEM).
useCase query string false Filters alerts by their use case.
observableType query string false Filters alerts by observable: only alerts linked to the specified observable will be returned.
observableValue query string false Filters alerts by observable: only alerts linked to the specified observable will be returned.
alertType query array[string] false Filter alerts by their type
threatType query array[string] false Filter alerts by threat types
tags query array[string] false Filters alerts by tags.
tagsCondition query string false If tags contains multiple items, determines the query predicate:
observableTags query array[string] false Filters alerts by observable tags.
observableTagsCondition query string false If observableTags contains multiple items, determines the query predicate:
threatActors query array[string] false Filters alerts by threat actors.
threatActorsCondition query string false If threatActors contains multiple items, determines the query predicate:
malwareTools query array[string] false Filters alerts by maleware and tools.
malwareToolsCondition query string false If malwareTools contains multiple items, determines the query predicate:

Detailed descriptions

source: Filters alerts by their source system. Often combined with the sourceId parameter, in order to find an alert by its external ID.`

sourceId: When combined with the source parameter - finds an alert by its source ID (the ID as defined by the SIEM). If sourceId is specified but source is not specified, the query will fail and return 400 (Bad Request).

observableType: Filters alerts by observable: only alerts linked to the specified observable will be returned.

This parameter specifies the observable's type, and it must be combined with the observableValue parameter.

observableValue: Filters alerts by observable: only alerts linked to the specified observable will be returned.

This parameter specifies the observable's value, and it must be combined with the observableType parameter.

tags: Filters alerts by tags.

Note: if more than one tag is specified, the client must specify the tagsCondition (otherwise: the server will return 400 Bad Request)

tagsCondition: If tags contains multiple items, determines the query predicate:

observableTags: Filters alerts by observable tags.

Note: if more than one tag is specified, the client must specify the observableTagsCondition (otherwise: the server will return 400 Bad Request)

observableTagsCondition: If observableTags contains multiple items, determines the query predicate:

threatActors: Filters alerts by threat actors. Note: if more than one value is specified, the client must specify the threatActorsCondition (otherwise: the server will return 400 Bad Request)

threatActorsCondition: If threatActors contains multiple items, determines the query predicate:

malwareTools: Filters alerts by maleware and tools. Note: if more than one value is specified, the client must specify the malwareToolsCondition (otherwise: the server will return 400 Bad Request)

malwareToolsCondition: If malwareTools contains multiple items, determines the query predicate:

Enumerated Values

Parameter Value
alertType General
alertType CTI-Assetbased
alertType CTI-Landscape
tagsCondition any
tagsCondition all
observableTagsCondition any
observableTagsCondition all
threatActorsCondition any
threatActorsCondition all
malwareToolsCondition any
malwareToolsCondition all

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5e7c6cf54b832e0018f191ad",
      "source": "QRadar",
      "sourceId": 296,
      "score": 33.2,
      "name": "Windows - Multiple failed logins same user same host",
      "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
      "severity": "Medium",
      "created": "2019-08-24T14:15:22Z",
      "modified": "2019-08-24T14:15:22Z",
      "detected": "2019-08-24T14:15:22Z",
      "status": "In Incident",
      "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
      "company": "ACME Europe",
      "useCase": "UC216 - EPP - Persistent Malware",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "classification": "Authentication",
      "observableTags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "categories": [
        "Ransomware",
        "Phishing"
      ],
      "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
      "killChain": [
        "Reconnaissance",
        "Weaponization",
        "Delivery"
      ],
      "mitreAttacks": [
        "T1003",
        "T1001",
        "T1595.001"
      ],
      "alertType": "CTI-Landscape",
      "threatType": "Phishing"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the results and additional information AlertsQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

getAlert

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060 \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/alerts/5a9e19eebdee5a000a8fe060", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /alerts/{alertId}

Returns a single alert

Parameters

Name In Type Required Description
alertId path string true The unique ID of the alert, as defined by CDC

Example responses

200 Response

{
  "id": "5e7c6cf54b832e0018f191ad",
  "source": "QRadar",
  "sourceId": 296,
  "score": 33.2,
  "name": "Windows - Multiple failed logins same user same host",
  "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
  "severity": "Medium",
  "created": "2019-08-24T14:15:22Z",
  "modified": "2019-08-24T14:15:22Z",
  "detected": "2019-08-24T14:15:22Z",
  "status": "In Incident",
  "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
  "company": "ACME Europe",
  "useCase": "UC216 - EPP - Persistent Malware",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "classification": "Authentication",
  "observableTags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ],
  "alertType": "CTI-Landscape",
  "threatType": "Phishing",
  "raw": {
    "attributeInitializationInProgress": false,
    "createdTime": {
      "day": {
        "numberInt": "18"
      },
      "hour": {
        "numberInt": "16"
      },
      "milliSecond": {
        "numberInt": "711"
      },
      "minute": {
        "numberInt": "10"
      },
      "month": {
        "numberInt": "6"
      },
      "second": {
        "numberInt": "47"
      },
      "timezoneID": "Israel",
      "year": {
        "numberInt": "2017"
      }
    },
    "createdTimestamp": {
      "numberDouble": "1500383447711"
    },
    "deprecated": false,
    "description": "ACME",
    "disabled": false,
    "inCache": true,
    "inactive": false,
    "initialized": true,
    "isAdditionalLoaded": false,
    "localID": {
      "numberDouble": "30064798760"
    },
    "modificationCount": {
      "numberInt": "1"
    }
  },
  "appendedRaw": [
    {}
  ],
  "cdcUrl": "https://acme.cyberproof.io/home/alerts/alert/5e7c6cf54b832e0018f191ad",
  "threatActors": [
    "Cyber Criminals",
    "Anonymous"
  ],
  "malwareTools": [
    "TrickBot",
    "IcedID",
    "Cobalt Strike"
  ],
  "ctiSourceUrls": [
    "https://blog.malwarebytes.com/someTopic"
  ],
  "recommendations": "Implement the attached IOCs in your security systems."
}

Responses

Status Meaning Description Schema
200 OK success Alert
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Headers

Status Header Type Format Description
200 ETag string Includes an identifier for a specific version of a resource. Commonly used as the basis for conditional gets and conditional updates.

queryAlertEvidence

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /alerts/{alertId}/evidence

Returns information about the evidence associated with this alert.

Parameters

Name In Type Required Description
alertId path string true The unique ID of the alert, as defined by CDC
marker query string(byte) false A continuation token, used to retrieve the next results page.
include query array[string] false Specifies which additional fields to include in the query results:

Detailed descriptions

include: Specifies which additional fields to include in the query results:

Enumerated Values

Parameter Value
include data

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5aa4d8fcbdee5a000a911882",
      "type": "MITRE_ATTACK_ADDED",
      "reported": "2019-08-24T14:15:22Z",
      "created": "2019-08-24T14:15:22Z",
      "caption": "Severity changed",
      "description": "System Admin has changed severity from Low to Medium",
      "messageId": "string",
      "messageCdcUrl": "https://acme.cyberproof.io/home/incidents/5ea71bb363f6c6001707663b/evidence/5ea71bb363f6c6001707254a",
      "externalId": "345ffe9a",
      "data": {}
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK success EvidenceQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

createAlertEvidence

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"reported":"2019-08-24T14:15:22Z","caption":"Severity changed","messageId":"string","description":"System Admin has changed severity from Low to Medium","externalId":"345ffe9a"}'
fetch("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence"

    payload := strings.NewReader("{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/alerts/5a9e19eebdee5a000a8fe060/evidence")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}")
  .asString();

POST /alerts/{alertId}/evidence

Creates a new alert evidence

Body parameter

{
  "reported": "2019-08-24T14:15:22Z",
  "caption": "Severity changed",
  "messageId": "string",
  "description": "System Admin has changed severity from Low to Medium",
  "externalId": "345ffe9a"
}

Parameters

Name In Type Required Description
alertId path string true The unique ID of the alert, as defined by CDC
body body CreateEvidenceRequest true none

Example responses

201 Response

{
  "id": "5aa4d8fcbdee5a000a911882",
  "type": "MITRE_ATTACK_ADDED",
  "reported": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "caption": "Severity changed",
  "description": "System Admin has changed severity from Low to Medium",
  "messageId": "string",
  "messageCdcUrl": "https://acme.cyberproof.io/home/incidents/5ea71bb363f6c6001707663b/evidence/5ea71bb363f6c6001707254a",
  "externalId": "345ffe9a",
  "data": {}
}

Responses

Status Meaning Description Schema
201 Created The evidence has been created Evidence
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
409 Conflict The request conflicts with the current state of the resource. None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

incidents

Incidents APIs

External documentation

queryIncidents

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/incidents \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/incidents", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/incidents")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /incidents

*Queries incidents based on filters provided by the client. For synchronization purposes, the updatedAfter filter option should be used. *

Parameters

Name In Type Required Description
marker query string(byte) false A continuation token, used to retrieve the next results page.
externalId query string false Filters according to the specified external ID. Used in conjuction with the externalSystem parameter.
externalSystem query string false Identifies the external system to which the filter refers.
include query array[string] false Specifies which additional fields to include in the query results:
status query array[string] false Filter incidents by status
pendingForGroup query string false Return only incidents that are pending redirection to the specified group.
group query string false filter incidents by the group (tier) which currently owns them (L1, L2, Customer)
updatedBefore query string(date-time) false Include only those which were updated before the specified timestamp (exclusive)
updatedAfter query string(date-time) false Include only those which were updated after or at the specified timestamp (inclusive)
observableType query string false Filters incidents by observable: only incidents linked to the specified observable will be returned.
observableValue query string false Filters incidents by observable: only incidents linked to the specified observable will be returned.
tags query array[string] false Filters incidents by tags.
tagsCondition query string false If tags contains multiple items, determines the query predicate:

Detailed descriptions

externalId: Filters according to the specified external ID. Used in conjuction with the externalSystem parameter. If specified, then externalSystem MUST be specified as well.

externalSystem: Identifies the external system to which the filter refers. Used in conjuction with the externalId parameter:

include: Specifies which additional fields to include in the query results:

observableType: Filters incidents by observable: only incidents linked to the specified observable will be returned. This parameter specifies the observable's type, and it must be combined with the observableValue parameter.

observableValue: Filters incidents by observable: only incidents linked to the specified observable will be returned. This parameter specifies the observable's value, and it must be combined with the observableType parameter.

tags: Filters incidents by tags.

Note: if more than one tag is specified, the client must specify the tagsCondition (otherwise: the server will return 400 Bad Request)

tagsCondition: If tags contains multiple items, determines the query predicate:

Enumerated Values

Parameter Value
include name
include description
include tags
include externalIds
include company
include redirectionReason
tagsCondition any
tagsCondition all

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "id": "string",
      "key": "CDC-20191208-00046",
      "name": "Web Proxy - Execution file download",
      "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "type": "DDOS",
      "status": "Closed",
      "priority": "Low",
      "group": "L1",
      "externalIds": [
        {
          "system": "ServiceNow",
          "id": "40385fee"
        }
      ],
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "company": "ACME Europe",
      "pendingForGroup": "string",
      "redirectionReason": "string",
      "endSlaDate": "2019-08-23T14:15:22Z"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the results and additional information IncidentsQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

getIncident

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060 \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/incidents/5a9e19eebdee5a000a8fe060", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /incidents/{incidentId}

Returns a single incident

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident

Example responses

200 Response

{
  "id": "string",
  "key": "CDC-20191208-00046",
  "name": "Web Proxy - Execution file download",
  "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "type": "DDOS",
  "status": "Closed",
  "priority": "Low",
  "group": "L1",
  "externalIds": [
    {
      "system": "ServiceNow",
      "id": "40385fee"
    }
  ],
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "ACME Europe",
  "pendingForGroup": "string",
  "redirectionReason": "string",
  "endSlaDate": "2019-08-23T14:15:22Z",
  "closingComment": "string",
  "closingReason": "True Positive",
  "closed": "2019-08-24T14:15:22Z",
  "cdcUrl": "https://acme.cyberproof.io/home/incidents/incident/5ea71bb363f6c6001707663b"
}

Responses

Status Meaning Description Schema
200 OK success Incident
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Headers

Status Header Type Format Description
200 ETag string Includes an identifier for a specific version of a resource. Commonly used as the basis for conditional gets and conditional updates.

updateIncident

Code samples

curl --request PATCH \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060 \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'If-Match: string' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"priority":"Low","tags":["Cloud-Computing","Virus","Phishing"],"company":"string"}'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060", {
  "method": "PATCH",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "If-Match": "string",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"priority\":\"Low\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"company\":\"string\"}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"priority\":\"Low\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"company\":\"string\"}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'If-Match': "string",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("PATCH", "/api/v1/incidents/5a9e19eebdee5a000a8fe060", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060"

    payload := strings.NewReader("{\"priority\":\"Low\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"company\":\"string\"}")

    req, _ := http.NewRequest("PATCH", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("If-Match", "string")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Patch,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060"),
    Headers =
    {
        { "Accept", "application/json" },
        { "If-Match", "string" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"priority\":\"Low\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"company\":\"string\"}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.patch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("If-Match", "string")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"priority\":\"Low\",\"tags\":[\"Cloud-Computing\",\"Virus\",\"Phishing\"],\"company\":\"string\"}")
  .asString();

PATCH /incidents/{incidentId}

Updates an incident

A JSON object with details of the incident.
NOTE: The maximum request size is 100 KB.
NOTE: If tags is included, existing incident's tags are replaced with the specified ones.

Body parameter

{
  "priority": "Low",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "string"
}

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
If-Match header string false Enables conditional modification - the resource will be modified only if its current etag matches the value specified in this header, otherwise - 412 "Precondition Failed" will be returned to the client
body body UpdateIncidentRequest true none

Example responses

200 Response

{
  "id": "string",
  "key": "CDC-20191208-00046",
  "name": "Web Proxy - Execution file download",
  "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "type": "DDOS",
  "status": "Closed",
  "priority": "Low",
  "group": "L1",
  "externalIds": [
    {
      "system": "ServiceNow",
      "id": "40385fee"
    }
  ],
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "ACME Europe",
  "pendingForGroup": "string",
  "redirectionReason": "string",
  "endSlaDate": "2019-08-23T14:15:22Z",
  "closingComment": "string",
  "closingReason": "True Positive",
  "closed": "2019-08-24T14:15:22Z",
  "cdcUrl": "https://acme.cyberproof.io/home/incidents/incident/5ea71bb363f6c6001707663b"
}

Responses

Status Meaning Description Schema
200 OK The incident was updated Incident
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
409 Conflict The attempted operation conflicts with the current state of the incident None
412 Precondition Failed A precondition specified by the client was not met. This occurs if an etag was specified in an If-Match header, which doesn't match the etag found in the underlying data store None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Headers

Status Header Type Format Description
200 ETag string Includes an identifier for a specific version of a resource. Commonly used as the basis for conditional gets and conditional updates.

createIncidentMessage

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/messages \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"externalId":"345ffe9a","contentType":"text","content":"Requires further investigation","evidence":{"caption":"Severity changed","reported":"2019-08-24T14:15:22Z","description":"System Admin has changed severity from Low to Medium"}}'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/messages", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"externalId\":\"345ffe9a\",\"contentType\":\"text\",\"content\":\"Requires further investigation\",\"evidence\":{\"caption\":\"Severity changed\",\"reported\":\"2019-08-24T14:15:22Z\",\"description\":\"System Admin has changed severity from Low to Medium\"}}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"externalId\":\"345ffe9a\",\"contentType\":\"text\",\"content\":\"Requires further investigation\",\"evidence\":{\"caption\":\"Severity changed\",\"reported\":\"2019-08-24T14:15:22Z\",\"description\":\"System Admin has changed severity from Low to Medium\"}}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/messages", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/messages"

    payload := strings.NewReader("{\"externalId\":\"345ffe9a\",\"contentType\":\"text\",\"content\":\"Requires further investigation\",\"evidence\":{\"caption\":\"Severity changed\",\"reported\":\"2019-08-24T14:15:22Z\",\"description\":\"System Admin has changed severity from Low to Medium\"}}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/messages"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"externalId\":\"345ffe9a\",\"contentType\":\"text\",\"content\":\"Requires further investigation\",\"evidence\":{\"caption\":\"Severity changed\",\"reported\":\"2019-08-24T14:15:22Z\",\"description\":\"System Admin has changed severity from Low to Medium\"}}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/messages")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"externalId\":\"345ffe9a\",\"contentType\":\"text\",\"content\":\"Requires further investigation\",\"evidence\":{\"caption\":\"Severity changed\",\"reported\":\"2019-08-24T14:15:22Z\",\"description\":\"System Admin has changed severity from Low to Medium\"}}")
  .asString();

POST /incidents/{incidentId}/messages

Creates a new incident message

Creates a new incident message in CDC.
This operation is idempotent: if the client provides an external id which already exists in CDC, then the operation should succeed with UPSERT semantics.
NOTE: The maximum request size is 512 KB.

Body parameter

{
  "externalId": "345ffe9a",
  "contentType": "text",
  "content": "Requires further investigation",
  "evidence": {
    "caption": "Severity changed",
    "reported": "2019-08-24T14:15:22Z",
    "description": "System Admin has changed severity from Low to Medium"
  }
}

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
body body CreateIncidentMessageRequest true none

Example responses

201 Response

{
  "id": "5e7c6cf54b832e0018f191ad",
  "text": "Requires further investigation",
  "processedText": "Requires further investigation"
}

Responses

Status Meaning Description Schema
201 Created The message has been created IncidentMessageSummary
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

closeIncident

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/close \
  --header 'Content-Type: application/json' \
  --header 'If-Match: string' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"closingComment":"Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached","closingReason":"True Positive","shouldTerminatePlaybooks":true}'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/close", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "If-Match": "string",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"closingComment\":\"Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached\",\"closingReason\":\"True Positive\",\"shouldTerminatePlaybooks\":true}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"closingComment\":\"Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached\",\"closingReason\":\"True Positive\",\"shouldTerminatePlaybooks\":true}"

headers = {
    'Content-Type': "application/json",
    'If-Match': "string",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/close", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/close"

    payload := strings.NewReader("{\"closingComment\":\"Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached\",\"closingReason\":\"True Positive\",\"shouldTerminatePlaybooks\":true}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("If-Match", "string")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/close"),
    Headers =
    {
        { "If-Match", "string" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"closingComment\":\"Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached\",\"closingReason\":\"True Positive\",\"shouldTerminatePlaybooks\":true}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/close")
  .header("Content-Type", "application/json")
  .header("If-Match", "string")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"closingComment\":\"Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached\",\"closingReason\":\"True Positive\",\"shouldTerminatePlaybooks\":true}")
  .asString();

POST /incidents/{incidentId}/close

Closes an incident

A JSON object with details of the incident

Body parameter

{
  "closingComment": "Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached",
  "closingReason": "True Positive",
  "shouldTerminatePlaybooks": true
}

Parameters

Name In Type Required Description
If-Match header string false Enables conditional modification - the resource will be modified only if its current etag matches the value specified in this header, otherwise - 412 "Precondition Failed" will be returned to the client
incidentId path string true The unique ID of the incident
body body CloseIncidentRequest true none

Responses

Status Meaning Description Schema
204 No Content The incident was closed successfully None
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
409 Conflict The attempted operation conflicts with the current state of the incident None
412 Precondition Failed A precondition specified by the client was not met. This occurs if an etag was specified in an If-Match header, which doesn't match the etag found in the underlying data store None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Headers

Status Header Type Format Description
204 ETag string Includes an identifier for a specific version of a resource. Commonly used as the basis for conditional gets and conditional updates.

redirectIncident

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/redirect \
  --header 'Content-Type: application/json' \
  --header 'If-Match: string' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"targetGroup":"string","reason":"string"}'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/redirect", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "If-Match": "string",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"targetGroup\":\"string\",\"reason\":\"string\"}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"targetGroup\":\"string\",\"reason\":\"string\"}"

headers = {
    'Content-Type': "application/json",
    'If-Match': "string",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/redirect", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/redirect"

    payload := strings.NewReader("{\"targetGroup\":\"string\",\"reason\":\"string\"}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("If-Match", "string")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/redirect"),
    Headers =
    {
        { "If-Match", "string" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"targetGroup\":\"string\",\"reason\":\"string\"}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/redirect")
  .header("Content-Type", "application/json")
  .header("If-Match", "string")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"targetGroup\":\"string\",\"reason\":\"string\"}")
  .asString();

POST /incidents/{incidentId}/redirect

initiate a redirection

Body parameter

{
  "targetGroup": "string",
  "reason": "string"
}

Parameters

Name In Type Required Description
If-Match header string false Enables conditional modification - the resource will be modified only if its current etag matches the value specified in this header, otherwise - 412 "Precondition Failed" will be returned to the client
incidentId path string true The unique ID of the incident
body body RedirectIncidentRequest true none

Responses

Status Meaning Description Schema
204 No Content The redirection has been issued None
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The specified incident was not found None
409 Conflict The attempted operation conflicts with the current state of the incident None
412 Precondition Failed A precondition specified by the client was not met. This occurs if an etag was specified in an If-Match header, which doesn't match the etag found in the underlying data store None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Headers

Status Header Type Format Description
204 ETag string Includes an identifier for a specific version of a resource. Commonly used as the basis for conditional gets and conditional updates.

acceptIncidentRedirection

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/accept \
  --header 'If-Match: string' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/accept", {
  "method": "POST",
  "headers": {
    "If-Match": "string",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'If-Match': "string",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/accept", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/accept"

    req, _ := http.NewRequest("POST", url, nil)

    req.Header.Add("If-Match", "string")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/accept"),
    Headers =
    {
        { "If-Match", "string" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/accept")
  .header("If-Match", "string")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

POST /incidents/{incidentId}/accept

accepts a redirection request

Parameters

Name In Type Required Description
If-Match header string false Enables conditional modification - the resource will be modified only if its current etag matches the value specified in this header, otherwise - 412 "Precondition Failed" will be returned to the client
incidentId path string true The unique ID of the incident

Responses

Status Meaning Description Schema
204 No Content The redirection has been successfully accepted None
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The specified incident was not found None
409 Conflict There currently isn't any pending redirection for this incident None
412 Precondition Failed A precondition specified by the client was not met. This occurs if an etag was specified in an If-Match header, which doesn't match the etag found in the underlying data store None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Headers

Status Header Type Format Description
204 ETag string Includes an identifier for a specific version of a resource. Commonly used as the basis for conditional gets and conditional updates.

queryIncidentAlerts

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alerts \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alerts", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/alerts", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alerts"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alerts"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alerts")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /incidents/{incidentId}/alerts

Returns information about the alerts associated with this incident.

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
marker query string(byte) false A continuation token, used to retrieve the next results page.
include query array[string] false Specifies which additional fields to include in the query results:

Detailed descriptions

include: Specifies which additional fields to include in the query results:

Enumerated Values

Parameter Value
include raw
include company

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5e7c6cf54b832e0018f191ad",
      "source": "QRadar",
      "sourceId": 296,
      "score": 33.2,
      "name": "Windows - Multiple failed logins same user same host",
      "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
      "severity": "Medium",
      "created": "2019-08-24T14:15:22Z",
      "modified": "2019-08-24T14:15:22Z",
      "detected": "2019-08-24T14:15:22Z",
      "status": "In Incident",
      "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
      "company": "ACME Europe",
      "useCase": "UC216 - EPP - Persistent Malware",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "classification": "Authentication",
      "observableTags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "categories": [
        "Ransomware",
        "Phishing"
      ],
      "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
      "killChain": [
        "Reconnaissance",
        "Weaponization",
        "Delivery"
      ],
      "mitreAttacks": [
        "T1003",
        "T1001",
        "T1595.001"
      ],
      "alertType": "CTI-Landscape",
      "threatType": "Phishing",
      "raw": {
        "attributeInitializationInProgress": false,
        "createdTime": {
          "day": {
            "numberInt": "18"
          },
          "hour": {
            "numberInt": "16"
          },
          "milliSecond": {
            "numberInt": "711"
          },
          "minute": {
            "numberInt": "10"
          },
          "month": {
            "numberInt": "6"
          },
          "second": {
            "numberInt": "47"
          },
          "timezoneID": "Israel",
          "year": {
            "numberInt": "2017"
          }
        },
        "createdTimestamp": {
          "numberDouble": "1500383447711"
        },
        "deprecated": false,
        "description": "ACME",
        "disabled": false,
        "inCache": true,
        "inactive": false,
        "initialized": true,
        "isAdditionalLoaded": false,
        "localID": {
          "numberDouble": "30064798760"
        },
        "modificationCount": {
          "numberInt": "1"
        }
      },
      "appendedRaw": [
        {}
      ],
      "cdcUrl": "https://acme.cyberproof.io/home/alerts/alert/5e7c6cf54b832e0018f191ad",
      "threatActors": [
        "Cyber Criminals",
        "Anonymous"
      ],
      "malwareTools": [
        "TrickBot",
        "IcedID",
        "Cobalt Strike"
      ],
      "ctiSourceUrls": [
        "https://blog.malwarebytes.com/someTopic"
      ],
      "recommendations": "Implement the attached IOCs in your security systems."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK success IncidentAlertsQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryIncidentAlertIds

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alert-ids \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alert-ids", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/alert-ids", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alert-ids"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alert-ids"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/alert-ids")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /incidents/{incidentId}/alert-ids

Returns the IDs of the alerts associated with this incident.

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
marker query string(byte) false A continuation token, used to retrieve the next results page.

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK success IncidentAlertIdsQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryIncidentObservables

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /incidents/{incidentId}/observables

Returns information about the observables associated with this incident.

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
marker query string(byte) false A continuation token, used to retrieve the next results page.

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5e13b88122c957000787db06",
      "type": "IPv4 Address",
      "isIoc": false,
      "value": "192.168.40.45",
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2,
      "tags": [
        "Critical-Infrastructure"
      ],
      "enrichments": [
        {
          "id": "5e13b88122c957000787db06",
          "name": "VirusTotal",
          "reported": "2019-08-24T14:15:22Z",
          "suspiciousRate": 3.2
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK success IncidentObservablesQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

createIncidentObservable

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"type":"IPv4 Address","value":"192.168.40.45","tags":["Critical-Infrastructure"]}'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Critical-Infrastructure\"]}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Critical-Infrastructure\"]}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables"

    payload := strings.NewReader("{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Critical-Infrastructure\"]}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Critical-Infrastructure\"]}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/observables")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"type\":\"IPv4 Address\",\"value\":\"192.168.40.45\",\"tags\":[\"Critical-Infrastructure\"]}")
  .asString();

POST /incidents/{incidentId}/observables

Creates a new incident observable

Creates a new incident observable in CDC
This operation is idempotent: if the client provides a type and value which already exist in CDC, then the operation should succeed with UPSERT semantics.
NOTE: The maximum request size is 100 KB.

Body parameter

{
  "type": "IPv4 Address",
  "value": "192.168.40.45",
  "tags": [
    "Critical-Infrastructure"
  ]
}

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
body body CreateIncidentObservableRequest true none

Example responses

201 Response

{
  "id": "5e13b88122c957000787db06",
  "type": "IPv4 Address",
  "isIoc": false,
  "value": "192.168.40.45",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "suspiciousRate": 3.2,
  "tags": [
    "Critical-Infrastructure"
  ],
  "enrichments": [
    {
      "id": "5e13b88122c957000787db06",
      "name": "VirusTotal",
      "reported": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created The observable has been created ObservableSummary
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryIncidentEvidence

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /incidents/{incidentId}/evidence

Returns information about the evidence associated with this incident.

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
marker query string(byte) false A continuation token, used to retrieve the next results page.
include query array[string] false Specifies which additional fields to include in the query results:

Detailed descriptions

include: Specifies which additional fields to include in the query results:

Enumerated Values

Parameter Value
include data

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5aa4d8fcbdee5a000a911882",
      "type": "MITRE_ATTACK_ADDED",
      "reported": "2019-08-24T14:15:22Z",
      "created": "2019-08-24T14:15:22Z",
      "caption": "Severity changed",
      "description": "System Admin has changed severity from Low to Medium",
      "messageId": "string",
      "messageCdcUrl": "https://acme.cyberproof.io/home/incidents/5ea71bb363f6c6001707663b/evidence/5ea71bb363f6c6001707254a",
      "externalId": "345ffe9a",
      "data": {}
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK success EvidenceQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

createIncidentEvidence

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"reported":"2019-08-24T14:15:22Z","caption":"Severity changed","messageId":"string","description":"System Admin has changed severity from Low to Medium","externalId":"345ffe9a"}'
fetch("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence"

    payload := strings.NewReader("{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/incidents/5a9e19eebdee5a000a8fe060/evidence")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"reported\":\"2019-08-24T14:15:22Z\",\"caption\":\"Severity changed\",\"messageId\":\"string\",\"description\":\"System Admin has changed severity from Low to Medium\",\"externalId\":\"345ffe9a\"}")
  .asString();

POST /incidents/{incidentId}/evidence

Creates a new incident evidence

Body parameter

{
  "reported": "2019-08-24T14:15:22Z",
  "caption": "Severity changed",
  "messageId": "string",
  "description": "System Admin has changed severity from Low to Medium",
  "externalId": "345ffe9a"
}

Parameters

Name In Type Required Description
incidentId path string true The unique ID of the incident
body body CreateEvidenceRequest true none

Example responses

201 Response

{
  "id": "5aa4d8fcbdee5a000a911882",
  "type": "MITRE_ATTACK_ADDED",
  "reported": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "caption": "Severity changed",
  "description": "System Admin has changed severity from Low to Medium",
  "messageId": "string",
  "messageCdcUrl": "https://acme.cyberproof.io/home/incidents/5ea71bb363f6c6001707663b/evidence/5ea71bb363f6c6001707254a",
  "externalId": "345ffe9a",
  "data": {}
}

Responses

Status Meaning Description Schema
201 Created The evidence has been created Evidence
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
409 Conflict The request conflicts with the current state of the resource. None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

observables

Observables APIs

getObservable

Code samples

curl --request GET \
  --url 'https://test-api.cyberproof.io/api/v1/observables?observableType=IPv4%20Address&observableValue=192.168.40.45' \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/observables?observableType=IPv4%20Address&observableValue=192.168.40.45", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/observables?observableType=IPv4%20Address&observableValue=192.168.40.45", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/observables?observableType=IPv4%20Address&observableValue=192.168.40.45"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/observables?observableType=IPv4%20Address&observableValue=192.168.40.45"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/observables?observableType=IPv4%20Address&observableValue=192.168.40.45")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /observables

*Gets the specified observable based on its type and value. *

Parameters

Name In Type Required Description
observableType query string true The type of the observable
observable_type query string false The type of the observable.
observableValue query string true The value of the observable
observable_value query string false The value of the observable.

Detailed descriptions

observable_type: The type of the observable. Deprecated: please use observableType instead of observable_type

observable_value: The value of the observable. Deprecated: please use observableValue instead of observable_value

Example responses

200 Response

{
  "id": "5e13b88122c957000787db06",
  "type": "IPv4 Address",
  "isIoc": false,
  "value": "192.168.40.45",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "suspiciousRate": 3.2,
  "tags": [
    "Critical-Infrastructure"
  ],
  "enrichments": [
    {
      "id": "5e13b88122c957000787db06",
      "name": "VirusTotal",
      "reported": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the observable ObservableSummary
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryObservableAlertIds

Code samples

curl --request GET \
  --url 'https://test-api.cyberproof.io/api/v1/observables/alert-ids?observableType=IPv4%20Address&observableValue=192.168.40.45' \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/observables/alert-ids?observableType=IPv4%20Address&observableValue=192.168.40.45", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/observables/alert-ids?observableType=IPv4%20Address&observableValue=192.168.40.45", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/observables/alert-ids?observableType=IPv4%20Address&observableValue=192.168.40.45"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/observables/alert-ids?observableType=IPv4%20Address&observableValue=192.168.40.45"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/observables/alert-ids?observableType=IPv4%20Address&observableValue=192.168.40.45")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /observables/alert-ids

*Queries alert IDs associated with the observable. *

Parameters

Name In Type Required Description
observableType query string true The type of the observable
observable_type query string false The type of the observable.
observableValue query string true The value of the observable
observable_value query string false The value of the observable.
marker query string(byte) false A continuation token, used to retrieve the next results page.

Detailed descriptions

observable_type: The type of the observable. Deprecated: please use observableType instead of observable_type

observable_value: The value of the observable. Deprecated: please use observableValue instead of observable_value

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the results and additional information ObservableAlertIdsQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryObservableIncidentIds

Code samples

curl --request GET \
  --url 'https://test-api.cyberproof.io/api/v1/observables/incident-ids?observableType=IPv4%20Address&observableValue=192.168.40.45' \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/observables/incident-ids?observableType=IPv4%20Address&observableValue=192.168.40.45", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/observables/incident-ids?observableType=IPv4%20Address&observableValue=192.168.40.45", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/observables/incident-ids?observableType=IPv4%20Address&observableValue=192.168.40.45"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/observables/incident-ids?observableType=IPv4%20Address&observableValue=192.168.40.45"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/observables/incident-ids?observableType=IPv4%20Address&observableValue=192.168.40.45")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /observables/incident-ids

*Queries incident IDs associated with the observable. *

Parameters

Name In Type Required Description
observableType query string true The type of the observable
observable_type query string false The type of the observable.
observableValue query string true The value of the observable
observable_value query string false The value of the observable.
marker query string(byte) false A continuation token, used to retrieve the next results page.

Detailed descriptions

observable_type: The type of the observable. Deprecated: please use observableType instead of observable_type

observable_value: The value of the observable. Deprecated: please use observableValue instead of observable_value

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the results and additional information ObservableIncidentIdsQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

files

Files APIs

uploadFile

Code samples

curl --request POST \
  --url 'https://test-api.cyberproof.io/api/v1/files/upload?scopeId=5e7c6cf54b832e0018f191ad&scopeType=alert' \
  --header 'Accept: application/json' \
  --header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --form 'relations=[{"type": "vega", "id": "5e7c6cf54b832e0018f191ad"}]' \
  --form password=test123 \
  --form file=string
const form = new FormData();
form.append("relations", "[{\"type\": \"vega\", \"id\": \"5e7c6cf54b832e0018f191ad\"}]");
form.append("password", "test123");
form.append("file", "string");

fetch("https://test-api.cyberproof.io/api/v1/files/upload?scopeId=5e7c6cf54b832e0018f191ad&scopeType=alert", {
  "method": "POST",
  "headers": {
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relations\"\r\n\r\n[{\"type\": \"vega\", \"id\": \"5e7c6cf54b832e0018f191ad\"}]\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\ntest123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n"

headers = {
    'Content-Type': "multipart/form-data; boundary=---011000010111000001101001",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/files/upload?scopeId=5e7c6cf54b832e0018f191ad&scopeType=alert", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/files/upload?scopeId=5e7c6cf54b832e0018f191ad&scopeType=alert"

    payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relations\"\r\n\r\n[{\"type\": \"vega\", \"id\": \"5e7c6cf54b832e0018f191ad\"}]\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\ntest123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/files/upload?scopeId=5e7c6cf54b832e0018f191ad&scopeType=alert"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new MultipartFormDataContent
    {
        new StringContent("[{\"type\": \"vega\", \"id\": \"5e7c6cf54b832e0018f191ad\"}]")
        {
            Headers =
            {
                ContentDisposition = new ContentDispositionHeaderValue("form-data")
                {
                    Name = "relations",
                }
            }
        },
        new StringContent("test123")
        {
            Headers =
            {
                ContentDisposition = new ContentDispositionHeaderValue("form-data")
                {
                    Name = "password",
                }
            }
        },
        new StringContent("string")
        {
            Headers =
            {
                ContentDisposition = new ContentDispositionHeaderValue("form-data")
                {
                    Name = "file",
                }
            }
        },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/files/upload?scopeId=5e7c6cf54b832e0018f191ad&scopeType=alert")
  .header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relations\"\r\n\r\n[{\"type\": \"vega\", \"id\": \"5e7c6cf54b832e0018f191ad\"}]\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\ntest123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n")
  .asString();

POST /files/upload

Upload a new file

Securely upload a new file to CDC.

Maximum file size = 12 Mb (12,582,912 bytes)

Body parameter

relations: '[{"type": "vega", "id": "5e7c6cf54b832e0018f191ad"}]'
password: test123
file: string

Parameters

Name In Type Required Description
scopeId query string true A unique, machine-oriented ID identifying this scope. must be provided together with scopeType. e.g. if scopeType = alert, then scopeId = [the alert ID]
scopeType query string true The type of the entity ( alert / incident / channel / visualization...)
body body UploadFileRequest true none

Detailed descriptions

scopeId: A unique, machine-oriented ID identifying this scope. must be provided together with scopeType. e.g. if scopeType = alert, then scopeId = [the alert ID]

Enumerated Values

Parameter Value
scopeType alert
scopeType incident
scopeType channel
scopeType visualization

Example responses

201 Response

{
  "status": "uploaded",
  "id": "5e7c6cf54b832e0018f191ad",
  "name": "attachment.txt",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "url": "https://someDomain/somePath/attachment.txt",
  "size": 2680000,
  "mimeType": "text/plain",
  "extension": "txt",
  "createdAt": "2019-08-24T14:15:22Z",
  "createdBy": "8e2c4cf54b832e0018f191ad",
  "relations": [
    {
      "type": "vega",
      "id": "8e2c4cf54b832e0018f191ad"
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created Listing information for the uploaded file FileInfo
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

downloadFile

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/files/5e7c6cf54b832e0018f191ad/download \
  --header 'Accept: application/octet-stream' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/files/5e7c6cf54b832e0018f191ad/download", {
  "method": "GET",
  "headers": {
    "Accept": "application/octet-stream",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/octet-stream",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/files/5e7c6cf54b832e0018f191ad/download", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/files/5e7c6cf54b832e0018f191ad/download"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/octet-stream")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/files/5e7c6cf54b832e0018f191ad/download"),
    Headers =
    {
        { "Accept", "application/octet-stream" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/files/5e7c6cf54b832e0018f191ad/download")
  .header("Accept", "application/octet-stream")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /files/{fileId}/download

Download a file

Download a file by id

Errors:

Parameters

Name In Type Required Description
fileId path string true A unique, machine-oriented ID identifying this file.
thumbnail query boolean false Download thumbnail image if exists

Detailed descriptions

thumbnail: Download thumbnail image if exists A thumbnail is a small image representation of a larger image or a video.

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Binary file stream with file contents DownloadFileResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
409 Conflict The request conflicts with the current state of the resource. None
410 Gone The resource requested is no longer available and will not be available again. The resource could have been intentionally removed and should be purged. The client should not request the resource in the future. None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryFiles

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/files \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/files", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/files", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/files"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/files"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/files")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /files

Query files

Query files (files metatata) by different prarms (i.e. scope, id, filenames etc...) Sorting and pagination supported using marker.

Parameters

Name In Type Required Description
marker query string(byte) false A continuation token, used to retrieve the next results page.
ids query array[string] false Filter files by id
status query array[string] false Filter files by status
fileName query string false Filter files by fileName
scopeType query string false Filter files by entity scope type.
scopeId query string false Filter files by Entity scope ID.

Detailed descriptions

fileName: Filter files by fileName Partial filename can be provided. i.e. givven filename param = 'ample', the file 'sample.txt' will be found assuming it exists in the system and all other filtes apply.

scopeType: Filter files by entity scope type. This filter is related to scopeId. i.e. if scopeType is provided then scopeId should be provided as well.

scopeId: Filter files by Entity scope ID. e.g. query files only associated with alert with ID 5a9e19eebdee5a000a8fe060. This filter is related to scopeType. i.e. if scopeId is provided then scopeType should be provided as well.

Enumerated Values

Parameter Value
scopeType alert
scopeType incident
scopeType channel
scopeType visualization

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "status": "uploaded",
      "id": "5e7c6cf54b832e0018f191ad",
      "name": "attachment.txt",
      "scope": {
        "id": "616ea579f2631c8d4c68a1b7",
        "type": "alert"
      },
      "url": "https://someDomain/somePath/attachment.txt",
      "size": 2680000,
      "mimeType": "text/plain",
      "extension": "txt",
      "createdAt": "2019-08-24T14:15:22Z",
      "createdBy": "8e2c4cf54b832e0018f191ad",
      "relations": [
        {
          "type": "vega",
          "id": "8e2c4cf54b832e0018f191ad"
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the results and additional information FilesQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

search

Files APIs

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/search \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"query":"select from alert where status = '\''New'\''","include":"name,status,severity,description","limit":10,"skip":0,"sort":"created","includeTotal":true}'
fetch("https://test-api.cyberproof.io/api/v1/search", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"query\":\"select from alert where status = 'New'\",\"include\":\"name,status,severity,description\",\"limit\":10,\"skip\":0,\"sort\":\"created\",\"includeTotal\":true}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"query\":\"select from alert where status = 'New'\",\"include\":\"name,status,severity,description\",\"limit\":10,\"skip\":0,\"sort\":\"created\",\"includeTotal\":true}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/search", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/search"

    payload := strings.NewReader("{\"query\":\"select from alert where status = 'New'\",\"include\":\"name,status,severity,description\",\"limit\":10,\"skip\":0,\"sort\":\"created\",\"includeTotal\":true}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/search"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"query\":\"select from alert where status = 'New'\",\"include\":\"name,status,severity,description\",\"limit\":10,\"skip\":0,\"sort\":\"created\",\"includeTotal\":true}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/search")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"query\":\"select from alert where status = 'New'\",\"include\":\"name,status,severity,description\",\"limit\":10,\"skip\":0,\"sort\":\"created\",\"includeTotal\":true}")
  .asString();

POST /search

Returns result of Search QL

Body parameter

{
  "query": "select from alert where status = 'New'",
  "include": "name,status,severity,description",
  "limit": 10,
  "skip": 0,
  "sort": "created",
  "includeTotal": true
}

Parameters

Name In Type Required Description
body body object true none
» query body string true CDC Query string
» include body string(comma-separated-list) false List of fields from query subject collection to be populated.
» limit body integer false Amount of records to return in query result. (If field is omitted, default value of 20 is used)
» skip body integer false Amount of records to skip in query result
» sort body string false Sort order for query results to be sorted, if value not provided defaults to created:
» includeTotal body boolean false Should we return total count of found records

Detailed descriptions

» query: CDC Query string

Full query syntax can be derived from CDC Query Language docs

» include: List of fields from query subject collection to be populated.

List of supported fields should be taken from CDC Query Language docs for the appropriate collection. (If some fields are filtered by PAPI but used as include value, they still will not be returned in response)

» sort: Sort order for query results to be sorted, if value not provided defaults to created:

» includeTotal: Should we return total count of found records

Lowers performance

Enumerated Values

Parameter Value
» sort company
» sort company:asc
» sort company:desc
» sort created
» sort created:asc
» sort created:desc
» sort detected
» sort detected:asc
» sort detected:desc
» sort group
» sort group:asc
» sort group:desc
» sort isIoc
» sort isIoc:asc
» sort isIoc:desc
» sort key
» sort key:asc
» sort key:desc
» sort modified
» sort modified:asc
» sort modified:desc
» sort name
» sort name:asc
» sort name:desc
» sort ownerRef.displayName
» sort ownerRef.displayName:asc
» sort ownerRef.displayName:desc
» sort priority.order
» sort priority.order:asc
» sort priority.order:desc
» sort relatedAlertsLength
» sort relatedAlertsLength:asc
» sort relatedAlertsLength:desc
» sort relatedIncidentsLength
» sort relatedIncidentsLength:asc
» sort relatedIncidentsLength:desc
» sort score.value
» sort score.value:asc
» sort score.value:desc
» sort severity.order
» sort severity.order:asc
» sort severity.order:desc
» sort source
» sort source:asc
» sort source:desc
» sort status.order
» sort status.order:asc
» sort status.order:desc
» sort status.value
» sort status.value:asc
» sort status.value:desc
» sort suspiciousRate
» sort suspiciousRate:asc
» sort suspiciousRate:desc
» sort tags
» sort tags:asc
» sort tags:desc
» sort transition.targetGroup
» sort transition.targetGroup:asc
» sort transition.targetGroup:desc
» sort type
» sort type:asc
» sort type:desc
» sort value
» sort value:asc
» sort value:desc

Example responses

200 Response

{
  "sort": [
    {
      "fieldName": "string",
      "desc": true
    }
  ],
  "limit": 20,
  "skip": 0,
  "items": [
    {
      "id": "5e7c6cf54b832e0018f191ad",
      "source": "QRadar",
      "sourceId": 296,
      "score": 33.2,
      "name": "Windows - Multiple failed logins same user same host",
      "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
      "severity": "Medium",
      "created": "2019-08-24T14:15:22Z",
      "modified": "2019-08-24T14:15:22Z",
      "detected": "2019-08-24T14:15:22Z",
      "status": "In Incident",
      "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
      "company": "ACME Europe",
      "useCase": "UC216 - EPP - Persistent Malware",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "classification": "Authentication",
      "observableTags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "categories": [
        "Ransomware",
        "Phishing"
      ],
      "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
      "killChain": [
        "Reconnaissance",
        "Weaponization",
        "Delivery"
      ],
      "mitreAttacks": [
        "T1003",
        "T1001",
        "T1595.001"
      ],
      "alertType": "CTI-Landscape",
      "threatType": "Phishing",
      "summaryType": "alert",
      "incidentId": "string"
    }
  ],
  "total": 32
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the observable CDCQueryResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
422 Unprocessable Entity The server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions. The client should not repeat this request without modification. None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Headers

Status Header Type Format Description
200 ETag string Includes an identifier for a specific version of a resource. Commonly used as the basis for conditional gets and conditional updates.

autocomplete

Code samples

curl --request GET \
  --url 'https://test-api.cyberproof.io/api/v1/search/autocomplete?collection=alert' \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/search/autocomplete?collection=alert", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/search/autocomplete?collection=alert", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/search/autocomplete?collection=alert"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/search/autocomplete?collection=alert"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/search/autocomplete?collection=alert")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /search/autocomplete

Returns result of autocomplete

Parameters

Name In Type Required Description
fieldName query string false Required in case collection is not "alertExtraProperties" or "observableExtraProperties"
substring query string false none
limit query number false none
collection query string true none

Detailed descriptions

fieldName: Required in case collection is not "alertExtraProperties" or "observableExtraProperties" The value of "fieldName" depends on "collection". Example collection="alert" fieldName="classification"

Enumerated Values

Parameter Value
collection alert
collection observable
collection incident
collection alertRawData
collection alertExtraProperties
collection observableExtraProperties
collection message

Example responses

200 Response

{
  "limit": 10,
  "items": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the results AutocompleteSearchResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
422 Unprocessable Entity The server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions. The client should not repeat this request without modification. None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

grouping

Grouping APIs

queryGroupingSettings

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/grouping/settings \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/grouping/settings", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/grouping/settings", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/grouping/settings"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/grouping/settings"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/grouping/settings")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /grouping/settings

Returns grouping settings

NOTE: To access Grouping Settings, user should have specific Admin privileges.

Example responses

200 Response

{
  "incidentTimeLimit": 86400000,
  "maxAlertsPerIncident": 150
}

Responses

Status Meaning Description Schema
200 OK success Inline
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Schema

Status Code 200

Name Type Required Restrictions Description
» incidentTimeLimit number true none time limit in milliseconds. Time within which alerts could be grouped to an incident since it was created.
» maxAlertsPerIncident number true none maximum number of alerts which can be attached to one incident.

queryGroupingRules

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/grouping/rules \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/grouping/rules", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/grouping/rules", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/grouping/rules"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/grouping/rules"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/grouping/rules")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /grouping/rules

Returns a full list of grouping settings

NOTE: To access Grouping Rules, user should have specific Admin privileges

Example responses

200 Response

{
  "results": [
    {
      "id": "5e7c6cf54b832e0018f191ad",
      "title": "PhishingRule",
      "comment": "5e7c6cf54b832e0018f191ad",
      "order": 1,
      "enabled": true,
      "criteria": [
        {
          "fieldName": "observables",
          "operator": "allOf",
          "matchValue": [
            {
              "type": "IPv4 address"
            },
            {
              "type": "IPv6 address"
            }
          ]
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK success Inline
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Response Schema

Status Code 200

Name Type Required Restrictions Description
» results [object] true none none
»» id string true none A unique, machine-oriented ID identifying this rule.
»» title string true none Rule title
»» comment string false none Rule comment
»» order number true none Order of rules execution
»» enabled boolean true none Defines if rule is enabled
»» criteria [object] true none Criteria of the rule
»»» fieldName string true none Name of the field to compare
»»» operator string true none Comparison operator
»»» matchValue any false none Comparison value

Enumerated Values

Property Value
operator equals
operator allOf
operator oneOf

alert-extended-properties

getExtendedProperties

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/alerts/string/extended-properties", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /alerts/{alertId}/extended-properties

Query alert extended properties

with support for filters and pagination. Default limit is 1000 docs per request.

Parameters

Name In Type Required Description
alertId path string true none
names query array[string] false List of the internal field name of the custom-field schema
ids query array[string] false List of the db`s document identifier
marker query string false none

Example responses

200 Response

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "nextMarker": "string"
}

Responses

Status Meaning Description Schema
200 OK Response for query alert extended properties QueryAlertExtendedPropertiesResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

setExtendedProperties

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"request":[{"name":"string","value":{}}]}'
fetch("https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"request\":[{\"name\":\"string\",\"value\":{}}]}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"request\":[{\"name\":\"string\",\"value\":{}}]}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/alerts/string/extended-properties", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties"

    payload := strings.NewReader("{\"request\":[{\"name\":\"string\",\"value\":{}}]}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"request\":[{\"name\":\"string\",\"value\":{}}]}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/alerts/string/extended-properties")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"request\":[{\"name\":\"string\",\"value\":{}}]}")
  .asString();

POST /alerts/{alertId}/extended-properties

Set alert extended properties

Set alert extended properties

Body parameter

{
  "request": [
    {
      "name": "string",
      "value": {}
    }
  ]
}

Parameters

Name In Type Required Description
alertId path string true none
body body CreateAlertsExtendedPropertiesRequest true none

Example responses

200 Response

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Response for create alert extended properties CreateAlertExtendedPropertiesResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

incident-summary

getIncidentSummary

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/incidents/string/summary \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/incidents/string/summary", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/incidents/string/summary", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/string/summary"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/string/summary"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/incidents/string/summary")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /incidents/{incidentId}/summary

Query incident summary

Query incident summary with support for filters and pagination. Default limit is 1000 docs per request.

Parameters

Name In Type Required Description
incidentId path string true none
names query array[string] false List of the internal field name of the custom-field schema
ids query array[string] false List of the db`s document identifier
marker query string false none

Example responses

200 Response

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "nextMarker": "string"
}

Responses

Status Meaning Description Schema
200 OK Response for query incident summary public QueryIncidentSummaryResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

setIncidentSummary

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/incidents/string/summary \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"request":[{"name":"string","value":{}}]}'
fetch("https://test-api.cyberproof.io/api/v1/incidents/string/summary", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"request\":[{\"name\":\"string\",\"value\":{}}]}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"request\":[{\"name\":\"string\",\"value\":{}}]}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/incidents/string/summary", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/incidents/string/summary"

    payload := strings.NewReader("{\"request\":[{\"name\":\"string\",\"value\":{}}]}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/incidents/string/summary"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"request\":[{\"name\":\"string\",\"value\":{}}]}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/incidents/string/summary")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"request\":[{\"name\":\"string\",\"value\":{}}]}")
  .asString();

POST /incidents/{incidentId}/summary

Set incident summary

Set incident summary

Body parameter

{
  "request": [
    {
      "name": "string",
      "value": {}
    }
  ]
}

Parameters

Name In Type Required Description
incidentId path string true none
body body CreateIncidentsSummaryRequest true none

Example responses

200 Response

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Response for Create incident summary CreateIncidentSummaryResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

messages

createMessage

Code samples

curl --request POST \
  --url https://test-api.cyberproof.io/api/v1/messages \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a' \
  --data '{"externalId":"111e3cf9-da0e-46a1-b099-3fd2e653ecbd","scope":{"id":"616ea579f2631c8d4c68a1b7","type":"alert"},"parentMessageId":"616ea579f2631c8d4c68a1b7","attachmentIds":["616ea579f2631c8d4c68a1b7"],"content":{"message":"some text <b>bold</b> message","contentType":"text"}}'
fetch("https://test-api.cyberproof.io/api/v1/messages", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  },
  "body": "{\"externalId\":\"111e3cf9-da0e-46a1-b099-3fd2e653ecbd\",\"scope\":{\"id\":\"616ea579f2631c8d4c68a1b7\",\"type\":\"alert\"},\"parentMessageId\":\"616ea579f2631c8d4c68a1b7\",\"attachmentIds\":[\"616ea579f2631c8d4c68a1b7\"],\"content\":{\"message\":\"some text <b>bold</b> message\",\"contentType\":\"text\"}}"
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

payload = "{\"externalId\":\"111e3cf9-da0e-46a1-b099-3fd2e653ecbd\",\"scope\":{\"id\":\"616ea579f2631c8d4c68a1b7\",\"type\":\"alert\"},\"parentMessageId\":\"616ea579f2631c8d4c68a1b7\",\"attachmentIds\":[\"616ea579f2631c8d4c68a1b7\"],\"content\":{\"message\":\"some text <b>bold</b> message\",\"contentType\":\"text\"}}"

headers = {
    'Content-Type': "application/json",
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("POST", "/api/v1/messages", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/messages"

    payload := strings.NewReader("{\"externalId\":\"111e3cf9-da0e-46a1-b099-3fd2e653ecbd\",\"scope\":{\"id\":\"616ea579f2631c8d4c68a1b7\",\"type\":\"alert\"},\"parentMessageId\":\"616ea579f2631c8d4c68a1b7\",\"attachmentIds\":[\"616ea579f2631c8d4c68a1b7\"],\"content\":{\"message\":\"some text <b>bold</b> message\",\"contentType\":\"text\"}}")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/messages"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
    Content = new StringContent("{\"externalId\":\"111e3cf9-da0e-46a1-b099-3fd2e653ecbd\",\"scope\":{\"id\":\"616ea579f2631c8d4c68a1b7\",\"type\":\"alert\"},\"parentMessageId\":\"616ea579f2631c8d4c68a1b7\",\"attachmentIds\":[\"616ea579f2631c8d4c68a1b7\"],\"content\":{\"message\":\"some text <b>bold</b> message\",\"contentType\":\"text\"}}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.post("https://test-api.cyberproof.io/api/v1/messages")
  .header("Content-Type", "application/json")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .body("{\"externalId\":\"111e3cf9-da0e-46a1-b099-3fd2e653ecbd\",\"scope\":{\"id\":\"616ea579f2631c8d4c68a1b7\",\"type\":\"alert\"},\"parentMessageId\":\"616ea579f2631c8d4c68a1b7\",\"attachmentIds\":[\"616ea579f2631c8d4c68a1b7\"],\"content\":{\"message\":\"some text <b>bold</b> message\",\"contentType\":\"text\"}}")
  .asString();

POST /messages

Create a new message

Body parameter

{
  "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "parentMessageId": "616ea579f2631c8d4c68a1b7",
  "attachmentIds": [
    "616ea579f2631c8d4c68a1b7"
  ],
  "content": {
    "message": "some text <b>bold</b> message",
    "contentType": "text"
  }
}

Parameters

Name In Type Required Description
body body MessageCreateRequest true none

Example responses

201 Response

{
  "id": "616ea579f2631c8d4c68a1b7",
  "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "parentMessageId": "616ea579f2631c8d4c68a1b7",
  "attachmentIds": [
    "616ea579f2631c8d4c68a1b7"
  ],
  "content": {
    "message": "some text <b>bold</b> message",
    "contentType": "text"
  },
  "attachments": [
    {
      "status": "uploaded",
      "id": "5e7c6cf54b832e0018f191ad",
      "name": "attachment.txt",
      "scope": {
        "id": "616ea579f2631c8d4c68a1b7",
        "type": "alert"
      },
      "url": "https://someDomain/somePath/attachment.txt",
      "size": 2680000,
      "mimeType": "text/plain",
      "extension": "txt",
      "createdAt": "2019-08-24T14:15:22Z",
      "createdBy": "8e2c4cf54b832e0018f191ad",
      "relations": [
        {
          "type": "vega",
          "id": "8e2c4cf54b832e0018f191ad"
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created A JSON object containing the results and additional information Message
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

queryMessages

Code samples

curl --request GET \
  --url 'https://test-api.cyberproof.io/api/v1/messages?scopeType=alert' \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/messages?scopeType=alert", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/messages?scopeType=alert", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/messages?scopeType=alert"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/messages?scopeType=alert"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/messages?scopeType=alert")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /messages

*Queries messages based on filters provided by the client. For synchronization purposes, the updatedAfter filter option should be used. *

Parameters

Name In Type Required Description
marker query string(byte) false A continuation token, used to retrieve the next results page.
scopeType query string true The type of the entity ( alert / incident / channel ...)
scopeId query string false filter by id of the entity as saved in the system must be supplied with scopeType.
fileNames query array[string] false filter by messages that include a file by this name as attachment note- if "fileIds" is supplied this field is ignored
fileIds query array[string] false filter by files that include a file by this id as attachment note- this takes precedent over "fileNames"
hasAttachments query boolean false filter by either with or wihtout attachments
createdBy query string false Include only those which were created by a specific user ID
createdBefore query string(date-time) false Include only those which were created before the specified timestamp (exclusive)
createdAfter query string(date-time) false Include only those which were created after or at the specified timestamp (inclusive)

Enumerated Values

Parameter Value
scopeType alert
scopeType incident
scopeType channel

Example responses

200 Response

{
  "nextMarker": "string",
  "results": [
    {
      "id": "616ea579f2631c8d4c68a1b7",
      "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
      "scope": {
        "id": "616ea579f2631c8d4c68a1b7",
        "type": "alert"
      },
      "parentMessageId": "616ea579f2631c8d4c68a1b7",
      "attachmentIds": [
        "616ea579f2631c8d4c68a1b7"
      ],
      "content": {
        "message": "some text <b>bold</b> message",
        "contentType": "text"
      }
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A JSON object containing the results and additional information MessagesQueryResults
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

custom-fields

queryCustomFieldsSchemasPublic

Code samples

curl --request GET \
  --url https://test-api.cyberproof.io/api/v1/custom-fields/settings \
  --header 'Accept: application/json' \
  --header 'X-API-KEY: 30c050f7fdfe466b9442570ae77dbc8a'
fetch("https://test-api.cyberproof.io/api/v1/custom-fields/settings", {
  "method": "GET",
  "headers": {
    "Accept": "application/json",
    "X-API-KEY": "30c050f7fdfe466b9442570ae77dbc8a"
  }
})
.then(response => {
  console.log(response);
})
.catch(err => {
  console.error(err);
});
import http.client

conn = http.client.HTTPSConnection("test-api.cyberproof.io")

headers = {
    'Accept': "application/json",
    'X-API-KEY': "30c050f7fdfe466b9442570ae77dbc8a"
    }

conn.request("GET", "/api/v1/custom-fields/settings", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://test-api.cyberproof.io/api/v1/custom-fields/settings"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept", "application/json")
    req.Header.Add("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://test-api.cyberproof.io/api/v1/custom-fields/settings"),
    Headers =
    {
        { "Accept", "application/json" },
        { "X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a" },
    },
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
HttpResponse<String> response = Unirest.get("https://test-api.cyberproof.io/api/v1/custom-fields/settings")
  .header("Accept", "application/json")
  .header("X-API-KEY", "30c050f7fdfe466b9442570ae77dbc8a")
  .asString();

GET /custom-fields/settings

Read custom fields setting/schemas

Query custom fields schema with support for filters and pagination

Parameters

Name In Type Required Description
sort query array[string] false fields to sort by
includeTotal query boolean false include total count on response (slower)
ids query array[string] false List of the db`s document identifiers
type query CustomFieldsSchemaTypesEnum false Enum values for the available data types i.e TEXT, RICH_TEXT, NUMBER etc.
scope query EntityScopes false Enum values for the available scopes i.e SUMMARY, ADDITIONAL_INFO etc.
marker query string false none
label query string false none
fieldName query string false none
entityType query string false none
classifications query array[string] false none
visible query boolean false none
order query number false none
deleted query boolean false none

Enumerated Values

Parameter Value
sort label
sort label:desc
sort fieldName
sort fieldName:desc
sort entityType
sort entityType:desc
sort classifications
sort classifications:desc
sort scope
sort scope:desc
sort order
sort order:desc
sort type
sort type:desc
sort visible
sort visible:desc
sort deleted
sort deleted:desc
type TEXT
type RICH_TEXT
type EMAIL
type NUMBER
type IPV4
type IPV6
type DATETIME
type TEXT_LIST
type BOOLEAN_RADIO
scope ADDITIONAL_INFO
scope SUMMARY
entityType ALERT
entityType INCIDENT

Example responses

200 Response

{
  "total": 0,
  "results": [
    {
      "id": "string",
      "label": "string",
      "fieldName": "string",
      "entityType": "ALERT",
      "classifications": [
        "string"
      ],
      "type": "TEXT",
      "scope": "ADDITIONAL_INFO",
      "order": 0,
      "visible": true,
      "deleted": true,
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "nextMarker": "string"
}

Responses

Status Meaning Description Schema
200 OK Response for query schema QueryCustomFieldSchemaResponse
400 Bad Request The request is invalid None
401 Unauthorized Authentication failure None
403 Forbidden The client does not have sufficient priviliges to access the requested resource or perform the requested operation None
404 Not Found The requested resource was not found None
409 Conflict The request conflicts with the current state of the resource. None
410 Gone The resource requested is no longer available and will not be available again. The resource could have been intentionally removed and should be purged. The client should not request the resource in the future. None
413 Payload Too Large The payload sent by the client exceeds the size limits imposed by the server None
429 Too Many Requests Too many requests (throttled). The client should backoff and retry later on, in accordance to the rate limiting policy of the server. None
500 Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request None
502 Bad Gateway The API server, acting as a gateway, got an invalid response from the underlying data store None
503 Service Unavailable The server cannot handle the request at the moment None
504 Gateway Time-out The API server, acting as a gateway, could not get a response from the underlying data store in due time None

Schemas

CreateAlertRequest

{
  "name": "Email messages containing malware removed after delivery",
  "sourceId": "345ffe9a",
  "severity": "High",
  "description": "message containing malware are delivered to mailboxes in your organization. Office 365 removed the infected messages from Exchange Online mailboxes.",
  "sourceUrl": "http://10.0.0.90/MySIEM/api/alerts/345ffe9a",
  "raw": {
    "attributeInitializationInProgress": false,
    "createdTime": {
      "day": {
        "numberInt": "18"
      },
      "hour": {
        "numberInt": "16"
      },
      "milliSecond": {
        "numberInt": "711"
      },
      "minute": {
        "numberInt": "10"
      },
      "month": {
        "numberInt": "6"
      },
      "second": {
        "numberInt": "47"
      },
      "timezoneID": "Israel",
      "year": {
        "numberInt": "2017"
      }
    },
    "createdTimestamp": {
      "numberDouble": "1500383447711"
    },
    "deprecated": false,
    "description": "ACME",
    "disabled": false,
    "inCache": true,
    "inactive": false,
    "initialized": true,
    "isAdditionalLoaded": false,
    "localID": {
      "numberDouble": "30064798760"
    },
    "modificationCount": {
      "numberInt": "1"
    }
  },
  "classification": "Authentication",
  "observables": [
    {
      "type": "IPv4 Address",
      "value": "192.168.40.45",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "extraProperties": {
        "property1": {
          "value": "aaa-bbcc",
          "type": "WeakIdentifier"
        },
        "property2": {
          "value": "aaa-bbcc",
          "type": "WeakIdentifier"
        }
      },
      "relatedExtraProperties": {
        "property1": {
          "sha": 256,
          "type": "WeakIdentifier"
        },
        "property2": {
          "sha": 256,
          "type": "WeakIdentifier"
        }
      }
    }
  ],
  "useCase": "UC216 - EPP - Persistent Malware",
  "company": "ACME",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "alertType": "CTI-Landscape",
  "threatType": "Phishing",
  "threatActors": [
    "Cyber Criminals",
    "Anonymous"
  ],
  "malwareTools": [
    "TrickBot",
    "IcedID",
    "Cobalt Strike"
  ],
  "ctiSourceUrls": [
    "https://blog.malwarebytes.com/someTopic"
  ],
  "recommendations": "Implement the attached IOCs in your security systems.",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ]
}

Properties

Name Type Required Restrictions Description
name string true none The name of the alert
sourceId string true none The identifier of the alert, as it appears in the source system. In most cases this would be the ID as it appears in the SIEM. It cannot exceed 400 characters.
severity string true none The severity of the alert. Must be one of the severities defined in CDC.
description string true none The description of the alert. It cannot exceed 5000 characters when exceeds, the request will not fail but description will be truncated.
sourceUrl string(uri) false none The source URL of the alert in the SIEM or in the origin system
raw object false none Alert raw data, as provided by the SIEM or source system.
NOTE: object's keys cannot start with $ nor contain . characters.
classification string false none Classification category that the alert falls into.
observables [object] false none The observables associated with this alert
» type string true none The type of the observable
» value string true none The value of the observable
» tags Tags false none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified.
When used as query filters, tags are treated as case-insensitive.
» extraProperties object false none observable additional properties
»» additionalProperties object false none none
»»» value any true none none

anyOf

Name Type Required Restrictions Description
»»»» anonymous string false none none

or

Name Type Required Restrictions Description
»»»» anonymous number false none none

or

Name Type Required Restrictions Description
»»»» anonymous boolean false none none

or

Name Type Required Restrictions Description
»»»» anonymous [string] false none none

or

Name Type Required Restrictions Description
»»»» anonymous [number] false none none

or

Name Type Required Restrictions Description
»»»» anonymous [boolean] false none none

continued

Name Type Required Restrictions Description
»»» type string false none none
» relatedExtraProperties object false none additional properties of observable alert relation
»» additionalProperties object false none none
»»» value any true none none

anyOf

Name Type Required Restrictions Description
»»»» anonymous string false none none

or

Name Type Required Restrictions Description
»»»» anonymous number false none none

or

Name Type Required Restrictions Description
»»»» anonymous boolean false none none

or

Name Type Required Restrictions Description
»»»» anonymous [string] false none none

or

Name Type Required Restrictions Description
»»»» anonymous [number] false none none

or

Name Type Required Restrictions Description
»»»» anonymous [boolean] false none none

continued

Name Type Required Restrictions Description
»»» type string false none none
useCase string false none Alert use case
company string false none The company with which this alert is associated
tags Tags false none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified.
When used as query filters, tags are treated as case-insensitive.
categories Categories false none Mapping of alert to specific category in SIEM
detectionRule string false none Name of detection rule from SIEM that triggered the generation of alert. It cannot exceed 256 characters.
alertType string false none The type of the alert. Must be one of the alert types defined in CDC - see Enumerated values. When not provided or invalid value, alertType will be set to General.
threatType string false none The threat type with which this alert is associated.
threatActors [string] false none The attacker, whoever launched the attack/campaign/malware.
malwareTools [string] false none The Malware/Tools that were used in the attack.
ctiSourceUrls [string] false none The data source that was used for opening the alert.
recommendations string false none Instruction how to handle alert.
killChain [string] false none Mapping of alert to specific Kill Chain phases.
The case of the names will be ignored, as well as spaces and duplicate values.
All values will be normalized accroding to the provided enum.
See in Wikipedia

This field accepts any value; the provided enum shows the recommended values.
mitreAttacks MitreAttacks false none MitreAttack Ids List

Enumerated Values

Property Value
alertType CTI-Landscape
alertType CTI-Assetbased
alertType General

AlertsQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5e7c6cf54b832e0018f191ad",
      "source": "QRadar",
      "sourceId": 296,
      "score": 33.2,
      "name": "Windows - Multiple failed logins same user same host",
      "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
      "severity": "Medium",
      "created": "2019-08-24T14:15:22Z",
      "modified": "2019-08-24T14:15:22Z",
      "detected": "2019-08-24T14:15:22Z",
      "status": "In Incident",
      "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
      "company": "ACME Europe",
      "useCase": "UC216 - EPP - Persistent Malware",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "classification": "Authentication",
      "observableTags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "categories": [
        "Ransomware",
        "Phishing"
      ],
      "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
      "killChain": [
        "Reconnaissance",
        "Weaponization",
        "Delivery"
      ],
      "mitreAttacks": [
        "T1003",
        "T1001",
        "T1595.001"
      ],
      "alertType": "CTI-Landscape",
      "threatType": "Phishing"
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none a continuation token. Empty if there are no further results
results [AlertSummary] true none none

IncidentSummary

{
  "id": "string",
  "key": "CDC-20191208-00046",
  "name": "Web Proxy - Execution file download",
  "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "type": "DDOS",
  "status": "Closed",
  "priority": "Low",
  "group": "L1",
  "externalIds": [
    {
      "system": "ServiceNow",
      "id": "40385fee"
    }
  ],
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "ACME Europe",
  "pendingForGroup": "string",
  "redirectionReason": "string",
  "endSlaDate": "2019-08-23T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
id string true none A unique, machine-oriented ID identifying this incident
key string true none A unique, human-oriented key identifying this incident
name string false none The name of the incident. Included only if the client specified it explicitly in the "include" parameter
description string false none The incident description. Included only if the client specified it explicitly in the "include" parameter
created string(date-time) true none The time when the incident was created
updated string(date-time) true none The time when the incident was last updated
type string true none Incident type
status string true none The status of the incident
priority string true none The priority of the incident
group string false none The group to which this incident is currently assigned
externalIds ExternalIds false none Array of external identifiers of the entity. Clients will only receive identifiers they have permission for, and won't be able to see identifiers of other systems.
tags Tags false none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified.
When used as query filters, tags are treated as case-insensitive.
company string false none The company with which this incident is associated
pendingForGroup string false none If this incident was redirected to a different group this will contain the name of the target group
redirectionReason string false none If this incident was redirected to a different group this will contain the user comment provided with redirection request
endSlaDate string(date-time)¦null false none Service level agreement end date

ExternalIds

[
  {
    "system": "ServiceNow",
    "id": "40385fee"
  }
]

Array of external identifiers of the entity. Clients will only receive identifiers they have permission for, and won't be able to see identifiers of other systems.

Properties

Name Type Required Restrictions Description
system string true none none
id string true none none

Tags

[
  "Cloud-Computing",
  "Virus",
  "Phishing"
]

Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified. When used as query filters, tags are treated as case-insensitive.

Properties

None

Categories

[
  "Ransomware",
  "Phishing"
]

Mapping of alert to specific category in SIEM

Properties

None

Alert

{
  "id": "5e7c6cf54b832e0018f191ad",
  "source": "QRadar",
  "sourceId": 296,
  "score": 33.2,
  "name": "Windows - Multiple failed logins same user same host",
  "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
  "severity": "Medium",
  "created": "2019-08-24T14:15:22Z",
  "modified": "2019-08-24T14:15:22Z",
  "detected": "2019-08-24T14:15:22Z",
  "status": "In Incident",
  "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
  "company": "ACME Europe",
  "useCase": "UC216 - EPP - Persistent Malware",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "classification": "Authentication",
  "observableTags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ],
  "alertType": "CTI-Landscape",
  "threatType": "Phishing",
  "raw": {
    "attributeInitializationInProgress": false,
    "createdTime": {
      "day": {
        "numberInt": "18"
      },
      "hour": {
        "numberInt": "16"
      },
      "milliSecond": {
        "numberInt": "711"
      },
      "minute": {
        "numberInt": "10"
      },
      "month": {
        "numberInt": "6"
      },
      "second": {
        "numberInt": "47"
      },
      "timezoneID": "Israel",
      "year": {
        "numberInt": "2017"
      }
    },
    "createdTimestamp": {
      "numberDouble": "1500383447711"
    },
    "deprecated": false,
    "description": "ACME",
    "disabled": false,
    "inCache": true,
    "inactive": false,
    "initialized": true,
    "isAdditionalLoaded": false,
    "localID": {
      "numberDouble": "30064798760"
    },
    "modificationCount": {
      "numberInt": "1"
    }
  },
  "appendedRaw": [
    {}
  ],
  "cdcUrl": "https://acme.cyberproof.io/home/alerts/alert/5e7c6cf54b832e0018f191ad",
  "threatActors": [
    "Cyber Criminals",
    "Anonymous"
  ],
  "malwareTools": [
    "TrickBot",
    "IcedID",
    "Cobalt Strike"
  ],
  "ctiSourceUrls": [
    "https://blog.malwarebytes.com/someTopic"
  ],
  "recommendations": "Implement the attached IOCs in your security systems."
}

Properties

allOf

Name Type Required Restrictions Description
anonymous AlertSummary false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» raw object false none The alert raw data.
» appendedRaw [object] false none The alert appended raw data.
» cdcUrl string(uri) true none The URL of this alert in the CDC application.
» threatActors [string] false none The attacker, whoever launched the attack/campaign/malware.
» malwareTools [string] false none The Malware/Tools that were used in the attack.
» ctiSourceUrls [string] false none The data source that was used for opening the alert.
» recommendations string false none Instruction how to handle alert.

Incident

{
  "id": "string",
  "key": "CDC-20191208-00046",
  "name": "Web Proxy - Execution file download",
  "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "type": "DDOS",
  "status": "Closed",
  "priority": "Low",
  "group": "L1",
  "externalIds": [
    {
      "system": "ServiceNow",
      "id": "40385fee"
    }
  ],
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "ACME Europe",
  "pendingForGroup": "string",
  "redirectionReason": "string",
  "endSlaDate": "2019-08-23T14:15:22Z",
  "closingComment": "string",
  "closingReason": "True Positive",
  "closed": "2019-08-24T14:15:22Z",
  "cdcUrl": "https://acme.cyberproof.io/home/incidents/incident/5ea71bb363f6c6001707663b"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous IncidentSummary false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» closingComment string false none The specified comment when it was closed. Only present if the incident was closed.
» closingReason IncidentClosingReason false none Incident closure reason
Possible default values are: "Benign Positive", "True Positive", "False Positive - Incorrect alert logic", "False Positive - Inaccurate data" and "Undetermined"

Notice: There could be an additional possible custom reasons, but only if such exist at CDC (metamodels)
» closed string(date-time) false none Timestamp specifying when the incident was closed.
» cdcUrl string(uri) true none The URL of this incident in the CDC application.

IncidentsQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "id": "string",
      "key": "CDC-20191208-00046",
      "name": "Web Proxy - Execution file download",
      "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "type": "DDOS",
      "status": "Closed",
      "priority": "Low",
      "group": "L1",
      "externalIds": [
        {
          "system": "ServiceNow",
          "id": "40385fee"
        }
      ],
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "company": "ACME Europe",
      "pendingForGroup": "string",
      "redirectionReason": "string",
      "endSlaDate": "2019-08-23T14:15:22Z"
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none a continuation token. Empty if there are no further results
results [IncidentSummary] true none none

IncidentAlertsQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5e7c6cf54b832e0018f191ad",
      "source": "QRadar",
      "sourceId": 296,
      "score": 33.2,
      "name": "Windows - Multiple failed logins same user same host",
      "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
      "severity": "Medium",
      "created": "2019-08-24T14:15:22Z",
      "modified": "2019-08-24T14:15:22Z",
      "detected": "2019-08-24T14:15:22Z",
      "status": "In Incident",
      "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
      "company": "ACME Europe",
      "useCase": "UC216 - EPP - Persistent Malware",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "classification": "Authentication",
      "observableTags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "categories": [
        "Ransomware",
        "Phishing"
      ],
      "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
      "killChain": [
        "Reconnaissance",
        "Weaponization",
        "Delivery"
      ],
      "mitreAttacks": [
        "T1003",
        "T1001",
        "T1595.001"
      ],
      "alertType": "CTI-Landscape",
      "threatType": "Phishing",
      "raw": {
        "attributeInitializationInProgress": false,
        "createdTime": {
          "day": {
            "numberInt": "18"
          },
          "hour": {
            "numberInt": "16"
          },
          "milliSecond": {
            "numberInt": "711"
          },
          "minute": {
            "numberInt": "10"
          },
          "month": {
            "numberInt": "6"
          },
          "second": {
            "numberInt": "47"
          },
          "timezoneID": "Israel",
          "year": {
            "numberInt": "2017"
          }
        },
        "createdTimestamp": {
          "numberDouble": "1500383447711"
        },
        "deprecated": false,
        "description": "ACME",
        "disabled": false,
        "inCache": true,
        "inactive": false,
        "initialized": true,
        "isAdditionalLoaded": false,
        "localID": {
          "numberDouble": "30064798760"
        },
        "modificationCount": {
          "numberInt": "1"
        }
      },
      "appendedRaw": [
        {}
      ],
      "cdcUrl": "https://acme.cyberproof.io/home/alerts/alert/5e7c6cf54b832e0018f191ad",
      "threatActors": [
        "Cyber Criminals",
        "Anonymous"
      ],
      "malwareTools": [
        "TrickBot",
        "IcedID",
        "Cobalt Strike"
      ],
      "ctiSourceUrls": [
        "https://blog.malwarebytes.com/someTopic"
      ],
      "recommendations": "Implement the attached IOCs in your security systems."
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none A continuation token. Empty if there are no further results
results [Alert] true none none

IncidentAlertIdsQueryResults

{
  "nextMarker": "string",
  "results": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none a continuation token. Empty if there are no further results
results [string] true none alert IDs associated with this incident

IncidentObservablesQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5e13b88122c957000787db06",
      "type": "IPv4 Address",
      "isIoc": false,
      "value": "192.168.40.45",
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2,
      "tags": [
        "Critical-Infrastructure"
      ],
      "enrichments": [
        {
          "id": "5e13b88122c957000787db06",
          "name": "VirusTotal",
          "reported": "2019-08-24T14:15:22Z",
          "suspiciousRate": 3.2
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none A continuation token. Empty if there are no further results
results [ObservableSummary] true none none

EvidenceQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5aa4d8fcbdee5a000a911882",
      "type": "MITRE_ATTACK_ADDED",
      "reported": "2019-08-24T14:15:22Z",
      "created": "2019-08-24T14:15:22Z",
      "caption": "Severity changed",
      "description": "System Admin has changed severity from Low to Medium",
      "messageId": "string",
      "messageCdcUrl": "https://acme.cyberproof.io/home/incidents/5ea71bb363f6c6001707663b/evidence/5ea71bb363f6c6001707254a",
      "externalId": "345ffe9a",
      "data": {}
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none A continuation token. Empty if there are no further results
results [Evidence] true none none

CreateIncidentMessageRequest

{
  "externalId": "345ffe9a",
  "contentType": "text",
  "content": "Requires further investigation",
  "evidence": {
    "caption": "Severity changed",
    "reported": "2019-08-24T14:15:22Z",
    "description": "System Admin has changed severity from Low to Medium"
  }
}

Properties

Name Type Required Restrictions Description
externalId string true none The identifier of the message, as it appears in external systems, mostly used to achieve idempotence
contentType string true none The type of the content, currently only 'text' is supported
content string true none The content of the message
evidence object false none When specified, the message is marked as evidence
» caption string true none The caption of the evidence
» reported string(date-time) false none The time when this evidence was supposed to be reported
» description string false none The description of this evidence

Enumerated Values

Property Value
contentType text

IncidentMessageSummary

{
  "id": "5e7c6cf54b832e0018f191ad",
  "text": "Requires further investigation",
  "processedText": "Requires further investigation"
}

Properties

Name Type Required Restrictions Description
id string true none A unique, machine-oriented ID identifying this message
text string true none The text of the message
processedText string false none The processed text of the message

CreateIncidentObservableRequest

{
  "type": "IPv4 Address",
  "value": "192.168.40.45",
  "tags": [
    "Critical-Infrastructure"
  ]
}

Properties

Name Type Required Restrictions Description
type string true none The type of the observable
value string true none The value of the observable
tags [string] false none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

CloseIncidentRequest

{
  "closingComment": "Virus removed, performed AntiVirus software update, ensured the AntiVirus detects and quarantines emails with the virus attached",
  "closingReason": "True Positive",
  "shouldTerminatePlaybooks": true
}

Properties

Name Type Required Restrictions Description
closingComment string true none The closing comment for this incident
closingReason IncidentClosingReason false none Incident closure reason
Possible default values are: "Benign Positive", "True Positive", "False Positive - Incorrect alert logic", "False Positive - Inaccurate data" and "Undetermined"

Notice: There could be an additional possible custom reasons, but only if such exist at CDC (metamodels)
shouldTerminatePlaybooks boolean false none Terminate playbooks parameter

Possible values:
- true - will terminate all running playbooks in the alerts within the incident and change status(es) and close the incident/alert(s)
- false (default) - close incident if there are no running playbooks, else - close incident flow will be canceled

IncidentClosingReason

"True Positive"

Incident closure reason Possible default values are: "Benign Positive", "True Positive", "False Positive - Incorrect alert logic", "False Positive - Inaccurate data" and "Undetermined"

Notice: There could be an additional possible custom reasons, but only if such exist at CDC (metamodels)

Properties

Name Type Required Restrictions Description
anonymous string false none Incident closure reason
Possible default values are: "Benign Positive", "True Positive", "False Positive - Incorrect alert logic", "False Positive - Inaccurate data" and "Undetermined"

Notice: There could be an additional possible custom reasons, but only if such exist at CDC (metamodels)

UpdateIncidentRequest

{
  "priority": "Low",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "string"
}

Properties

Name Type Required Restrictions Description
priority string false none The priority of the incident
tags Tags false none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified.
When used as query filters, tags are treated as case-insensitive.
company string false none The company with which the incident is associated

RedirectIncidentRequest

{
  "targetGroup": "string",
  "reason": "string"
}

Properties

Name Type Required Restrictions Description
targetGroup string true none The group to which the incident is being redirected
reason string true none a user-provided reason for redirection

ObservableSummary

{
  "id": "5e13b88122c957000787db06",
  "type": "IPv4 Address",
  "isIoc": false,
  "value": "192.168.40.45",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "suspiciousRate": 3.2,
  "tags": [
    "Critical-Infrastructure"
  ],
  "enrichments": [
    {
      "id": "5e13b88122c957000787db06",
      "name": "VirusTotal",
      "reported": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string true none The unique identifier of this observable
type string true none The type of the observable
isIoc boolean true none is this observable an indicator of compromise?
value string true none The value of the observable
created string(date-time) true none The time when the observable was created
updated string(date-time) true none The time when the observable was last updated, including changes to the observable and association to incidents.
suspiciousRate number(double)¦null true none The suspicious rate of the observable (higher is more suspicious), between 0 and 100
This field is Nullable.
Null value meaning: Not enough data to calculate suspiciousRate, could be updated later.
tags [string] true none The tags associated with this observable
enrichments [EnrichmentSummary] true none The recent and valid enrichments associated with this observable

ObservablesQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "id": "5e13b88122c957000787db06",
      "type": "IPv4 Address",
      "isIoc": false,
      "value": "192.168.40.45",
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2,
      "tags": [
        "Critical-Infrastructure"
      ],
      "enrichments": [
        {
          "id": "5e13b88122c957000787db06",
          "name": "VirusTotal",
          "reported": "2019-08-24T14:15:22Z",
          "suspiciousRate": 3.2
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none A continuation token. Empty if there are no further results
results [ObservableSummary] true none none

ObservableAlertIdsQueryResults

{
  "nextMarker": "string",
  "results": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none a continuation token. Empty if there are no further results
results [string] true none alert IDs associated with this observable

ObservableIncidentIdsQueryResults

{
  "nextMarker": "string",
  "results": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none a continuation token. Empty if there are no further results
results [string] true none incident IDs associated with this observable

EnrichmentSummary

{
  "id": "5e13b88122c957000787db06",
  "name": "VirusTotal",
  "reported": "2019-08-24T14:15:22Z",
  "suspiciousRate": 3.2
}

Properties

Name Type Required Restrictions Description
id string true none The unique identifier of this enrichment
name string true none The name of the enrichment
reported string(date-time) true none The time when this enrichment was reported
suspiciousRate number(double)¦null true none The suspicious rate of the observable (higher is more suspicious), between 0 and 100
This field is Nullable.
Null value meaning: Not enough data to calculate suspiciousRate, could be updated later.

Evidence

{
  "id": "5aa4d8fcbdee5a000a911882",
  "type": "MITRE_ATTACK_ADDED",
  "reported": "2019-08-24T14:15:22Z",
  "created": "2019-08-24T14:15:22Z",
  "caption": "Severity changed",
  "description": "System Admin has changed severity from Low to Medium",
  "messageId": "string",
  "messageCdcUrl": "https://acme.cyberproof.io/home/incidents/5ea71bb363f6c6001707663b/evidence/5ea71bb363f6c6001707254a",
  "externalId": "345ffe9a",
  "data": {}
}

Properties

Name Type Required Restrictions Description
id string true none A unique, machine-oriented ID identifying this evidence.
type string true none The type of evidence
reported string(date-time) true none The time when this evidence was reported
created string(date-time) true none The time when this evidence was created
caption string false none The caption of the evidence
description string false none The description of this evidence
messageId string false none The ID of the message this evidence was created from
messageCdcUrl string false none The URL of the message in the CDC application that this evidence was created from.
externalId string false none The identifier of the evidence, as it appears in external systems, mostly used to achieve idempotence
data object false none Additional evidence metadata

Enumerated Values

Property Value
type TEXT
type ALERT_OWNER_ASSIGNED
type ALERT_OWNER_REMOVED
type ALERT_STATUS_CHANGED
type ALERT_ATTACHED_TO_INCIDENT
type ALERT_AUTOMATION_JOB_ENDED
type ALERT_AUTOMATION_JOB_STARTED
type ALERT_CLOSED
type ALERT_DETACHED_FROM_INCIDENT
type ALERT_DETECTED
type ALERT_RESOLVED
type ALERT_INCIDENT_CREATED
type ALERT_PLAYBOOK_STEP_COMPLETED
type ALERT_REOPENED
type MITRE_ATTACK_ADDED
type MITRE_ATTACK_REMOVED
type INCIDENT_ALERT_ADDED
type INCIDENT_ALERT_REMOVED
type INCIDENT_CREATED
type INCIDENT_CLOSED
type INCIDENT_REOPENED
type INCIDENT_STATUS_CHANGED
type INCIDENT_COMPANY_CHANGED
type INCIDENT_SEVERITY_CHANGED
type INCIDENT_PRIORITY_CHANGED
type INCIDENT_TYPE_CHANGED
type INCIDENT_OWNER_CHANGED
type INCIDENT_ESCALATED
type INCIDENT_ESCALATION_REVOKED
type INCIDENT_ESCALATION_ACCEPTED
type INCIDENT_ESCALATION_REMINDER_SENT
type PLAYBOOK_ADDED
type PLAYBOOK_STEP_COMPLETED
type PLAYBOOK_USER_INPUT_REQUIRED
type PLAYBOOK_EVIDENCES_PROVIDED
type PLAYBOOK_TERMINATED

CreateEvidenceRequest

{
  "reported": "2019-08-24T14:15:22Z",
  "caption": "Severity changed",
  "messageId": "string",
  "description": "System Admin has changed severity from Low to Medium",
  "externalId": "345ffe9a"
}

Validations:

Properties

Name Type Required Restrictions Description
reported string(date-time) true none The time when this evidence was reported
caption string true none The caption of the evidence
messageId string false none The ID of the message this evidence was created from.
description string false none The description of this evidence
externalId string false none The identifier of the evidence, as it appears in external systems, mostly used to achieve idempotence

KillChain

[
  "Reconnaissance",
  "Weaponization",
  "Delivery"
]

Mapping of alert to specific Kill Chain phases. See in Wikipedia

Properties

None

MitreAttacks

[
  "T1003",
  "T1001",
  "T1595.001"
]

MitreAttack Ids List

Properties

None

EntityScope

{
  "id": "616ea579f2631c8d4c68a1b7",
  "type": "alert"
}

entities in the system can have a scope defining their assosication with a bussiness object

Properties

Name Type Required Restrictions Description
id string true none id of the entity as saved in the system
type string true none The type of the entity ( alert / incident / channel ...)

Enumerated Values

Property Value
type alert
type incident
type channel

FileScope

{
  "id": "616ea579f2631c8d4c68a1b7",
  "type": "alert"
}

entities in the system can have a scope defining their assosication with a bussiness object

Properties

Name Type Required Restrictions Description
id string true none id of the entity as saved in the system
type string true none The type of the entity ( alert / incident / channel ...)

Enumerated Values

Property Value
type alert
type incident
type channel
type visualization

TextMessageContent

{
  "message": "some text <b>bold</b> message",
  "contentType": "text"
}

Properties

Name Type Required Restrictions Description
message string true none the text of the message. can be simple text or rich text
contentType string true none Specifies the type of the Message content (Text messages)

Enumerated Values

Property Value
contentType text

AdaptiveCardMessageContent

{
  "json": {},
  "contentType": "adaptiveCard"
}

Properties

Name Type Required Restrictions Description
json object true none the raw data attached for the porpuse of populating the card
contentType string true none Specifies the type of the Message content (Adaptive Card messages)

Enumerated Values

Property Value
contentType adaptiveCard

MessageCreateRequest

{
  "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "parentMessageId": "616ea579f2631c8d4c68a1b7",
  "attachmentIds": [
    "616ea579f2631c8d4c68a1b7"
  ],
  "content": {
    "message": "some text <b>bold</b> message",
    "contentType": "text"
  }
}

Properties

Name Type Required Restrictions Description
externalId string true none The identifier of the message, as it appears in external systems. Only one message can be linked to each unique externalId.
scope EntityScope true none Scope provides association data for this message
parentMessageId string false none If provided, the new message will be posted as a child of another message as the last message in it's thread
attachmentIds [string] false none IDs of file attached to this message
content TextMessageContent true none The content of the message

MessageSummary

{
  "id": "616ea579f2631c8d4c68a1b7",
  "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "parentMessageId": "616ea579f2631c8d4c68a1b7",
  "attachmentIds": [
    "616ea579f2631c8d4c68a1b7"
  ],
  "content": {
    "message": "some text <b>bold</b> message",
    "contentType": "text"
  }
}

Properties

Name Type Required Restrictions Description
id string true none ID of the message as saved in the system
externalId string true none The identifier of the message, as it appears in external systems. Only one message can be linked to each unique externalId.
scope EntityScope true none entities in the system can have a scope defining their assosication with a bussiness object
parentMessageId string false none If present, this message was posted in another message's thread
attachmentIds [string] false none IDs of file attached to this message
content any true none The content of the message

oneOf

Name Type Required Restrictions Description
» anonymous TextMessageContent false none none

xor

Name Type Required Restrictions Description
» anonymous AdaptiveCardMessageContent false none none

Message

{
  "id": "616ea579f2631c8d4c68a1b7",
  "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "parentMessageId": "616ea579f2631c8d4c68a1b7",
  "attachmentIds": [
    "616ea579f2631c8d4c68a1b7"
  ],
  "content": {
    "message": "some text <b>bold</b> message",
    "contentType": "text"
  },
  "attachments": [
    {
      "status": "uploaded",
      "id": "5e7c6cf54b832e0018f191ad",
      "name": "attachment.txt",
      "scope": {
        "id": "616ea579f2631c8d4c68a1b7",
        "type": "alert"
      },
      "url": "https://someDomain/somePath/attachment.txt",
      "size": 2680000,
      "mimeType": "text/plain",
      "extension": "txt",
      "createdAt": "2019-08-24T14:15:22Z",
      "createdBy": "8e2c4cf54b832e0018f191ad",
      "relations": [
        {
          "type": "vega",
          "id": "8e2c4cf54b832e0018f191ad"
        }
      ]
    }
  ]
}

Properties

allOf

Name Type Required Restrictions Description
anonymous MessageSummary false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» attachments [FileInfo] false none file info objects for attachments. note - empty array means no attachments.
» content any false none none

oneOf

Name Type Required Restrictions Description
»» anonymous TextMessageContent false none none

xor

Name Type Required Restrictions Description
»» anonymous AdaptiveCardMessageContent false none none

MessagesQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "id": "616ea579f2631c8d4c68a1b7",
      "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
      "scope": {
        "id": "616ea579f2631c8d4c68a1b7",
        "type": "alert"
      },
      "parentMessageId": "616ea579f2631c8d4c68a1b7",
      "attachmentIds": [
        "616ea579f2631c8d4c68a1b7"
      ],
      "content": {
        "message": "some text <b>bold</b> message",
        "contentType": "text"
      }
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none a continuation token. Empty if there are no further results
results [MessageSummary] true none none

FileStatus

"uploaded"

The status of the file, respecting the upload and sanitaion process. Every file should have a status

Properties

Name Type Required Restrictions Description
anonymous string false none The status of the file, respecting the upload and sanitaion process.
Every file should have a status
* uploaded - uploaded but not ready yet, requires additional processing
* processing - being processed by the system, i.e. pending sanitation
* verified - completed sanitation processes, needs to move to final storage location
* ready - completed and made available
* failed - the file upload process has failed, such as when sanitation can't be applied
* blocked - the file sanitation process failed ( i.e. file has malicious content )

Enumerated Values

Property Value
anonymous uploaded
anonymous processing
anonymous verified
anonymous ready
anonymous failed
anonymous blocked

FileInfo

{
  "status": "uploaded",
  "id": "5e7c6cf54b832e0018f191ad",
  "name": "attachment.txt",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "url": "https://someDomain/somePath/attachment.txt",
  "size": 2680000,
  "mimeType": "text/plain",
  "extension": "txt",
  "createdAt": "2019-08-24T14:15:22Z",
  "createdBy": "8e2c4cf54b832e0018f191ad",
  "relations": [
    {
      "type": "vega",
      "id": "8e2c4cf54b832e0018f191ad"
    }
  ]
}

Properties

Name Type Required Restrictions Description
status FileStatus true none The status of the file, respecting the upload and sanitaion process.
Every file should have a status
* uploaded - uploaded but not ready yet, requires additional processing
* processing - being processed by the system, i.e. pending sanitation
* verified - completed sanitation processes, needs to move to final storage location
* ready - completed and made available
* failed - the file upload process has failed, such as when sanitation can't be applied
* blocked - the file sanitation process failed ( i.e. file has malicious content )
id string true none A unique, machine-oriented ID identifying this file.
name string true none The file name
scope FileScope true none entities in the system can have a scope defining their assosication with a bussiness object
url string true none The file url
size number true none the file size in bytes
mimeType string true none The MIME (Multipurpose Internet Mail Extensions) type of the file.
A two-part identifier for file formats and format contents transmitted on the Internet.
see more: https://en.wikipedia.org/wiki/Media_type
extension string false none An identifier specified as a suffix to the name of a file
createdAt string(date-time) true none File creation timestamp
createdBy string true none The ID of the user who created this file.
relations [object] false none The relations of the file
» id string false none none
» type string false none none

Enumerated Values

Property Value
type vega

FilesQueryResults

{
  "nextMarker": "string",
  "results": [
    {
      "status": "uploaded",
      "id": "5e7c6cf54b832e0018f191ad",
      "name": "attachment.txt",
      "scope": {
        "id": "616ea579f2631c8d4c68a1b7",
        "type": "alert"
      },
      "url": "https://someDomain/somePath/attachment.txt",
      "size": 2680000,
      "mimeType": "text/plain",
      "extension": "txt",
      "createdAt": "2019-08-24T14:15:22Z",
      "createdBy": "8e2c4cf54b832e0018f191ad",
      "relations": [
        {
          "type": "vega",
          "id": "8e2c4cf54b832e0018f191ad"
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
nextMarker string(byte) false none a continuation token. Empty if there are no further results
results [FileInfo] true none none

UploadFileRequest

{
  "relations": "[{\"type\": \"vega\", \"id\": \"5e7c6cf54b832e0018f191ad\"}]",
  "password": "test123",
  "file": "string"
}

Form data containing relations, password and file fields.

Properties

Name Type Required Restrictions Description
relations string false none A string representing array of json object where type = relation type, e.g. vega and id = template file id.
password string false none A single password or more separated by a comma.
file string(binary) false none The binary file stream

DownloadFileResponse

"string"

The binary file stream

Properties

Name Type Required Restrictions Description
anonymous string(binary) false none The binary file stream

CDCQueryResponse

{
  "sort": [
    {
      "fieldName": "string",
      "desc": true
    }
  ],
  "limit": 20,
  "skip": 0,
  "items": [
    {
      "id": "5e7c6cf54b832e0018f191ad",
      "source": "QRadar",
      "sourceId": 296,
      "score": 33.2,
      "name": "Windows - Multiple failed logins same user same host",
      "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
      "severity": "Medium",
      "created": "2019-08-24T14:15:22Z",
      "modified": "2019-08-24T14:15:22Z",
      "detected": "2019-08-24T14:15:22Z",
      "status": "In Incident",
      "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
      "company": "ACME Europe",
      "useCase": "UC216 - EPP - Persistent Malware",
      "tags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "classification": "Authentication",
      "observableTags": [
        "Cloud-Computing",
        "Virus",
        "Phishing"
      ],
      "categories": [
        "Ransomware",
        "Phishing"
      ],
      "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
      "killChain": [
        "Reconnaissance",
        "Weaponization",
        "Delivery"
      ],
      "mitreAttacks": [
        "T1003",
        "T1001",
        "T1595.001"
      ],
      "alertType": "CTI-Landscape",
      "threatType": "Phishing",
      "summaryType": "alert",
      "incidentId": "string"
    }
  ],
  "total": 32
}

Properties

Name Type Required Restrictions Description
sort [object] true none none
» fieldName string false none Field name used for sorting query results
» desc boolean false none DESC/ASC value
limit integer true none none
skip integer true none none
items [oneOf] true none Array of either Alerts, Incidents, Observables or Messages (Please note, resulting documents property list are controlled by contents of include field in request)

oneOf

Name Type Required Restrictions Description
» anonymous CQLAlertSummary false none none

xor

Name Type Required Restrictions Description
» anonymous CQLIncidentSummary false none none

xor

Name Type Required Restrictions Description
» anonymous CQLObservableSummary false none none

xor

Name Type Required Restrictions Description
» anonymous CQLMessageSummary false none none

continued

Name Type Required Restrictions Description
total number false none Total count of query results. Note Field is returned only when includeTotal in request is sent as true

CQLAlertSummary

{
  "id": "5e7c6cf54b832e0018f191ad",
  "source": "QRadar",
  "sourceId": 296,
  "score": 33.2,
  "name": "Windows - Multiple failed logins same user same host",
  "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
  "severity": "Medium",
  "created": "2019-08-24T14:15:22Z",
  "modified": "2019-08-24T14:15:22Z",
  "detected": "2019-08-24T14:15:22Z",
  "status": "In Incident",
  "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
  "company": "ACME Europe",
  "useCase": "UC216 - EPP - Persistent Malware",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "classification": "Authentication",
  "observableTags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ],
  "alertType": "CTI-Landscape",
  "threatType": "Phishing",
  "summaryType": "alert",
  "incidentId": "string"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseAlertSummary false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» summaryType string true none Discriminator property to distinguish between different responses
» incidentId string false none Id of related incident

Enumerated Values

Property Value
summaryType alert

CQLIncidentSummary

{
  "id": "string",
  "key": "CDC-20191208-00046",
  "name": "Web Proxy - Execution file download",
  "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "type": "DDOS",
  "status": "Closed",
  "priority": "Low",
  "group": "L1",
  "externalIds": [
    {
      "system": "ServiceNow",
      "id": "40385fee"
    }
  ],
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "ACME Europe",
  "pendingForGroup": "string",
  "redirectionReason": "string",
  "endSlaDate": "2019-08-23T14:15:22Z",
  "summaryType": "incident"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseIncidentSummary false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» summaryType string true none Discriminator property to distinguish between different responses

Enumerated Values

Property Value
summaryType incident

CQLObservableSummary

{
  "id": "5e13b88122c957000787db06",
  "type": "IPv4 Address",
  "isIoc": false,
  "value": "192.168.40.45",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "suspiciousRate": 3.2,
  "tags": [
    "Critical-Infrastructure"
  ],
  "enrichments": [
    {
      "id": "5e13b88122c957000787db06",
      "name": "VirusTotal",
      "reported": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2,
      "rawData": {
        "data": {
          "prop1": "blah",
          "prop2": 3,
          "prop3": false
        }
      }
    }
  ],
  "summaryType": "observable"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseObservableSummary false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» enrichments [allOf] false none The recent and valid enrichments associated with this observable

allOf

Name Type Required Restrictions Description
»» anonymous EnrichmentSummary false none none

and

Name Type Required Restrictions Description
»» anonymous object false none none
»»» rawData object¦null false none Raw data for enrichment.

continued

Name Type Required Restrictions Description
» summaryType string true none Discriminator property to distinguish between different responses

Enumerated Values

Property Value
summaryType observable

CQLMessageSummary

{
  "id": "616ea579f2631c8d4c68a1b7",
  "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "parentMessageId": "616ea579f2631c8d4c68a1b7",
  "attachmentIds": [
    "616ea579f2631c8d4c68a1b7"
  ],
  "content": {
    "message": "some text <b>bold</b> message",
    "contentType": "text"
  },
  "summaryType": "messsage"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous BaseMessageSummary false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» summaryType string true none Discriminator property to distinguish between different responses

Enumerated Values

Property Value
summaryType messsage

BaseAlertSummary

{
  "id": "5e7c6cf54b832e0018f191ad",
  "source": "QRadar",
  "sourceId": 296,
  "score": 33.2,
  "name": "Windows - Multiple failed logins same user same host",
  "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
  "severity": "Medium",
  "created": "2019-08-24T14:15:22Z",
  "modified": "2019-08-24T14:15:22Z",
  "detected": "2019-08-24T14:15:22Z",
  "status": "In Incident",
  "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
  "company": "ACME Europe",
  "useCase": "UC216 - EPP - Persistent Malware",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "classification": "Authentication",
  "observableTags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ],
  "alertType": "CTI-Landscape",
  "threatType": "Phishing"
}

Properties

Name Type Required Restrictions Description
id string false none A unique, machine-oriented ID identifying this alert.
source string false none The name of the source system
sourceId string false none The ID of the alert in the source system
score number(double)¦null false none The score of the alert
This field is Nullable.
Null value meaning: Not enough data to calculate score, could be updated later.
name string false none The name of the alert
description string false none The description of the alert
severity string false none The severity of the alert
created string(date-time) false none Alert creation timestamp
modified string(date-time) false none Last modification timestamp
detected string(date-time) false none Alert detection timestamp
status string false none Alert status
sourceUrl string(uri) false none A URI of this alert pointing to the source system
company string false none The company with which the alert is associated
useCase string false none Alert use case
tags Tags false none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified.
When used as query filters, tags are treated as case-insensitive.
classification string false none Classification category that the alert falls into.
observableTags [string] false none List of tags of alert observables
categories Categories false none Mapping of alert to specific category in SIEM
detectionRule string false none Name of detection rule from SIEM that triggered the generation of alert
killChain KillChain false none Mapping of alert to specific Kill Chain phases.
See in Wikipedia
mitreAttacks MitreAttacks false none MitreAttack Ids List
alertType string false none The type of the alert. Must be one of the alert types defined in CDC - see Enumerated values. When not provided or invalid value, alertType will be set to General.
threatType string false none The threat type with which this alert is associated.

Enumerated Values

Property Value
alertType CTI-Landscape
alertType CTI-Assetbased
alertType General

BaseIncidentSummary

{
  "id": "string",
  "key": "CDC-20191208-00046",
  "name": "Web Proxy - Execution file download",
  "description": "Customer Name - ACME Inc<br>Alert Name - Web Proxy - Execution file download<br>Device Product - Web Gateway<br>Category Outcome - /Failure<br>\n",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "type": "DDOS",
  "status": "Closed",
  "priority": "Low",
  "group": "L1",
  "externalIds": [
    {
      "system": "ServiceNow",
      "id": "40385fee"
    }
  ],
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "company": "ACME Europe",
  "pendingForGroup": "string",
  "redirectionReason": "string",
  "endSlaDate": "2019-08-23T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
id string false none A unique, machine-oriented ID identifying this incident
key string false none A unique, human-oriented key identifying this incident
name string false none The name of the incident. Included only if the client specified it explicitly in the "include" parameter
description string false none The incident description. Included only if the client specified it explicitly in the "include" parameter
created string(date-time) false none The time when the incident was created
updated string(date-time) false none The time when the incident was last updated
type string false none Incident type
status string false none The status of the incident
priority string false none The priority of the incident
group string false none The group to which this incident is currently assigned
externalIds ExternalIds false none Array of external identifiers of the entity. Clients will only receive identifiers they have permission for, and won't be able to see identifiers of other systems.
tags Tags false none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified.
When used as query filters, tags are treated as case-insensitive.
company string false none The company with which this incident is associated
pendingForGroup string false none If this incident was redirected to a different group this will contain the name of the target group
redirectionReason string false none If this incident was redirected to a different group this will contain the user comment provided with redirection request
endSlaDate string(date-time)¦null false none Service level agreement end date

BaseObservableSummary

{
  "id": "5e13b88122c957000787db06",
  "type": "IPv4 Address",
  "isIoc": false,
  "value": "192.168.40.45",
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z",
  "suspiciousRate": 3.2,
  "tags": [
    "Critical-Infrastructure"
  ],
  "enrichments": [
    {
      "id": "5e13b88122c957000787db06",
      "name": "VirusTotal",
      "reported": "2019-08-24T14:15:22Z",
      "suspiciousRate": 3.2
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string false none The unique identifier of this observable
type string false none The type of the observable
isIoc boolean false none is this observable an indicator of compromise?
value string false none The value of the observable
created string(date-time) false none The time when the observable was created
updated string(date-time) false none The time when the observable was last updated, including changes to the observable and association to incidents.
suspiciousRate number(double)¦null false none The suspicious rate of the observable (higher is more suspicious), between 0 and 100
This field is Nullable.
Null value meaning: Not enough data to calculate suspiciousRate, could be updated later.
tags [string] false none The tags associated with this observable
enrichments [EnrichmentSummary] false none The recent and valid enrichments associated with this observable

BaseMessageSummary

{
  "id": "616ea579f2631c8d4c68a1b7",
  "externalId": "111e3cf9-da0e-46a1-b099-3fd2e653ecbd",
  "scope": {
    "id": "616ea579f2631c8d4c68a1b7",
    "type": "alert"
  },
  "parentMessageId": "616ea579f2631c8d4c68a1b7",
  "attachmentIds": [
    "616ea579f2631c8d4c68a1b7"
  ],
  "content": {
    "message": "some text <b>bold</b> message",
    "contentType": "text"
  }
}

Properties

Name Type Required Restrictions Description
id string false none ID of the message as saved in the system
externalId string false none The identifier of the message, as it appears in external systems. Only one message can be linked to each unique externalId.
scope EntityScope false none entities in the system can have a scope defining their assosication with a bussiness object
parentMessageId string false none If present, this message was posted in another message's thread
attachmentIds [string] false none IDs of file attached to this message
content any false none The content of the message

oneOf

Name Type Required Restrictions Description
» anonymous TextMessageContent false none none

xor

Name Type Required Restrictions Description
» anonymous AdaptiveCardMessageContent false none none

AutocompleteSearchResponse

{
  "limit": 10,
  "items": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
limit number false none none
items [string] false none none

CustomFieldSchemaResponse

{
  "id": "string",
  "label": "string",
  "fieldName": "string",
  "entityType": "ALERT",
  "classifications": [
    "string"
  ],
  "type": "TEXT",
  "scope": "ADDITIONAL_INFO",
  "order": 0,
  "visible": true,
  "deleted": true,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
id string true none The db`s document identifier
label string true none The display name of the field i.e Some label
fieldName string true none The internal field name i.e incident_some_label_rich_text
entityType EntityTypes true none Enum values for the type of entity i.e INCIDENT
classifications [string] true none List of classifications i.e DDOS, MALWARE This field is mandatory if entityType is ALERT
type CustomFieldsSchemaTypesEnum true none Enum values for the available data types i.e TEXT, RICH_TEXT, NUMBER
scope EntityScopes true none Enum values for the available scopes i.e SUMMARY, ADDITIONAL_INFO
order number false none This field controls the order of appearance. has an effect if entityType is INCIDENT
visible boolean false none This field controls the visibility for UI consumers.
deleted boolean false none none
createdAt string(date-time) true none none
updatedAt string(date-time) true none none

QueryCustomFieldSchemaResponse

{
  "total": 0,
  "results": [
    {
      "id": "string",
      "label": "string",
      "fieldName": "string",
      "entityType": "ALERT",
      "classifications": [
        "string"
      ],
      "type": "TEXT",
      "scope": "ADDITIONAL_INFO",
      "order": 0,
      "visible": true,
      "deleted": true,
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "nextMarker": "string"
}

Properties

Name Type Required Restrictions Description
total number true none The total documents available for the query. (usage for pagination)
results [CustomFieldSchemaResponse] true none none
nextMarker string true none none

QueryCustomFieldResponse

{
  "results": [
    {
      "id": "string",
      "entityId": "string",
      "entityType": "ALERT",
      "name": "string",
      "value": {},
      "createdAt": "string",
      "updatedAt": "string",
      "createdBy": "string",
      "updatedBy": "string"
    }
  ],
  "nextMarker": "string",
  "total": 0
}

Properties

Name Type Required Restrictions Description
results [CustomField] true none none
nextMarker string true none none
total number true none none

CustomField

{
  "id": "string",
  "entityId": "string",
  "entityType": "ALERT",
  "name": "string",
  "value": {},
  "createdAt": "string",
  "updatedAt": "string",
  "createdBy": "string",
  "updatedBy": "string"
}

Properties

Name Type Required Restrictions Description
id string true none none
entityId string true none none
entityType string true none none
name string true none none
value object true none none
createdAt string true none none
updatedAt string true none none
createdBy string false none none
updatedBy string false none none

Enumerated Values

Property Value
entityType ALERT
entityType INCIDENT

CreateManyCustomFieldRequest

{
  "request": [
    {
      "entityId": "string",
      "entityType": "ALERT",
      "name": "string",
      "value": {}
    }
  ]
}

Properties

Name Type Required Restrictions Description
request [CreateCustomFieldRequest] true none none

CreateCustomFieldRequest

{
  "entityId": "string",
  "entityType": "ALERT",
  "name": "string",
  "value": {}
}

Properties

Name Type Required Restrictions Description
entityId string true none none
entityType string false none none
name string true none none
value object true none none

Enumerated Values

Property Value
entityType ALERT
entityType INCIDENT

CreateCustomFieldResponse

{
  "results": [
    {
      "id": "string",
      "entityId": "string",
      "entityType": "ALERT",
      "name": "string",
      "value": {},
      "createdAt": "string",
      "updatedAt": "string",
      "createdBy": "string",
      "updatedBy": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
results [CustomField] true none none

CustomFieldsSchemaTypesEnum

"TEXT"

Properties

Name Type Required Restrictions Description
anonymous string false none none

Enumerated Values

Property Value
anonymous TEXT
anonymous RICH_TEXT
anonymous EMAIL
anonymous NUMBER
anonymous IPV4
anonymous IPV6
anonymous DATETIME
anonymous TEXT_LIST
anonymous BOOLEAN_RADIO

EntityScopes

"ADDITIONAL_INFO"

Properties

Name Type Required Restrictions Description
anonymous string false none none

Enumerated Values

Property Value
anonymous ADDITIONAL_INFO
anonymous SUMMARY

EntityTypes

"ALERT"

Properties

Name Type Required Restrictions Description
anonymous string false none none

Enumerated Values

Property Value
anonymous ALERT
anonymous INCIDENT

AlertExtendedPropertiesResponse

{
  "name": "string",
  "value": {},
  "id": "string",
  "createdBy": "string",
  "updatedBy": "string",
  "createdAt": "string",
  "updatedAt": "string"
}

Properties

Name Type Required Restrictions Description
name string true none The internal field name of the custom-field schema
value object false none The actual field`s value, can be any data type or nullable
id string true none The db`s document identifier
createdBy string true none The user who created the resource
updatedBy string true none The user who updated the resource
createdAt string true none none
updatedAt string true none none

AlertSummary

{
  "id": "5e7c6cf54b832e0018f191ad",
  "source": "QRadar",
  "sourceId": 296,
  "score": 33.2,
  "name": "Windows - Multiple failed logins same user same host",
  "description": "Customer Name - AcmeCo\nAlert Name - Windows - Multiple failed logins same user same host\nDevice Vendor - Microsoft\nDevice Product - Microsoft Windows\nDevice Event Class Id - rule:105\n",
  "severity": "Medium",
  "created": "2019-08-24T14:15:22Z",
  "modified": "2019-08-24T14:15:22Z",
  "detected": "2019-08-24T14:15:22Z",
  "status": "In Incident",
  "sourceUrl": "https://192.168.41.164/console/do/sem/offensesummary?appName=Sem&pageId=OffenseSummary&summaryId=296",
  "company": "ACME Europe",
  "useCase": "UC216 - EPP - Persistent Malware",
  "tags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "classification": "Authentication",
  "observableTags": [
    "Cloud-Computing",
    "Virus",
    "Phishing"
  ],
  "categories": [
    "Ransomware",
    "Phishing"
  ],
  "detectionRule": "WRONG_PASSWORD_3_ATTEMPTS",
  "killChain": [
    "Reconnaissance",
    "Weaponization",
    "Delivery"
  ],
  "mitreAttacks": [
    "T1003",
    "T1001",
    "T1595.001"
  ],
  "alertType": "CTI-Landscape",
  "threatType": "Phishing"
}

Properties

Name Type Required Restrictions Description
id string true none A unique, machine-oriented ID identifying this alert.
source string true none The name of the source system
sourceId string true none The ID of the alert in the source system
score number(double)¦null false none The score of the alert
This field is Nullable.
Null value meaning: Not enough data to calculate score, could be updated later.
name string true none The name of the alert
description string true none The description of the alert
severity string true none The severity of the alert
created string(date-time) true none Alert creation timestamp
modified string(date-time) true none Last modification timestamp
detected string(date-time) true none Alert detection timestamp
status string true none Alert status
sourceUrl string(uri) false none A URI of this alert pointing to the source system
company string false none The company with which the alert is associated
useCase string false none Alert use case
tags Tags true none Array of tags. A tag's name can contain only the next symbols: alphabetic, "-", "_", ".", "#", "@", and numeric.

Tags are case-reserving on insertion: if a tag doesn't already exist with a different casing style, the tag will be saved with the casing specified.
When used as query filters, tags are treated as case-insensitive.
classification string false none Classification category that the alert falls into.
observableTags [string] true none List of tags of alert observables
categories Categories true none Mapping of alert to specific category in SIEM
detectionRule string false none Name of detection rule from SIEM that triggered the generation of alert
killChain KillChain true none Mapping of alert to specific Kill Chain phases.
See in Wikipedia
mitreAttacks MitreAttacks false none MitreAttack Ids List
alertType string true none The type of the alert. Must be one of the alert types defined in CDC - see Enumerated values. When not provided or invalid value, alertType will be set to General.
threatType string false none The threat type with which this alert is associated.

Enumerated Values

Property Value
alertType CTI-Landscape
alertType CTI-Assetbased
alertType General

CreateAlertExtendedPropertiesRequest

{
  "name": "string",
  "value": {}
}

Properties

Name Type Required Restrictions Description
name string true none The internal field name of the custom-field schema
value object false none The actual field`s value, can be any data type or nullable

CreateAlertExtendedPropertiesResponse

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
results [AlertExtendedPropertiesResponse] true none none

CreateAlertsExtendedPropertiesRequest

{
  "request": [
    {
      "name": "string",
      "value": {}
    }
  ]
}

Properties

Name Type Required Restrictions Description
request [CreateAlertExtendedPropertiesRequest] true none none

CreateIncidentsSummaryRequest

{
  "request": [
    {
      "name": "string",
      "value": {}
    }
  ]
}

Properties

Name Type Required Restrictions Description
request [CreateIncidentSummaryRequest] true none none

CreateIncidentSummaryRequest

{
  "name": "string",
  "value": {}
}

Properties

Name Type Required Restrictions Description
name string true none The internal field name of the custom-field schema
value object false none The actual field`s value, can be any data type or nullable

CreateIncidentSummaryResponse

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
results [IncidentSummaryResponse] true none none

IncidentSummaryResponse

{
  "name": "string",
  "value": {},
  "id": "string",
  "createdBy": "string",
  "updatedBy": "string",
  "createdAt": "string",
  "updatedAt": "string"
}

Properties

Name Type Required Restrictions Description
name string true none The internal field name of the custom-field schema
value object false none The actual field`s value, can be any data type or nullable
id string true none The db`s document identifier
createdBy string true none The user who created the resource
updatedBy string true none The user who updated the resource
createdAt string true none none
updatedAt string true none none

QueryAlertExtendedPropertiesResponse

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "nextMarker": "string"
}

Properties

Name Type Required Restrictions Description
results [AlertExtendedPropertiesResponse] true none none
nextMarker string false none none

QueryIncidentSummaryResponse

{
  "results": [
    {
      "name": "string",
      "value": {},
      "id": "string",
      "createdBy": "string",
      "updatedBy": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "nextMarker": "string"
}

Properties

Name Type Required Restrictions Description
results [IncidentSummaryResponse] true none none
nextMarker string false none none

General API Guidelines

Concurrency

CyberProof supports consistency related concerns by leveraging HTTP constructs to enable an optimistic concurrency control. Specifically, the mechanism is provided by the combination of entity tags and conditional requests.

An entity tag, specified by the ETag HTTP header, is an opaque token that the server associates with a particular state of a resource. When the resource changes, the entity tag should be modified as well. This allows parties to determine if a request on a resource references an up-to-date repreesentation of that resource. Typically, if there's a mismatch, the request is not performed and the client should refresh its copy of the resource to bring it up to date.

A conditional request is a request that may be executed differently depending on the value of specific HTTP headers. These headers define the precondition that must be true before the server should execute the request. Regarding entity tags, generally there are two options for making requests conditional:

Take the following scenario as an example:

What's New


GET /alerts/{alertId}/extended-properties

Query alert extended properties

POST /alerts/{alertId}/extended-properties

Set alert extended properties

GET /incidents/{incidentId}/summary

Query incident summary

POST /incidents/{incidentId}/summary

Set incident summary

GET /custom-fields/settings

Read custom fields setting/schemas