NAV
Shell HTTP JavaScript Ruby Python PHP Java Go

Visualization interface API v3.0.0-SNAPSHOT

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

Default

clearCache

Code samples

# You can also use wget
curl -X DELETE /auth/cache

DELETE /auth/cache HTTP/1.1


fetch('/auth/cache',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/auth/cache',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/auth/cache')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/auth/cache', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/auth/cache");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/auth/cache", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /auth/cache

Responses

Status Meaning Description Schema
default Default successful operation None

login

Code samples

# You can also use wget
curl -X POST /auth/login \
  -H 'Accept: application/json'

POST /auth/login HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/auth/login',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/auth/login',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/auth/login', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/auth/login', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/auth/login");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/auth/login", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /auth/login

Example responses

200 Response

{
  "username": "string",
  "fullName": "string",
  "loginOrigin": "LDAP",
  "permissions": [
    "string"
  ],
  "redirectUrl": "string",
  "isAdmin": true
}

Responses

Status Meaning Description Schema
200 OK same as for whoami AuthDTO

logout

Code samples

# You can also use wget
curl -X GET /auth/logout

GET /auth/logout HTTP/1.1


fetch('/auth/logout',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/auth/logout',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/auth/logout')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/auth/logout', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/auth/logout");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/auth/logout", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /auth/logout

Responses

Status Meaning Description Schema
default Default successful operation None

whoAmI

Code samples

# You can also use wget
curl -X GET /auth/whoami \
  -H 'Accept: application/json'

GET /auth/whoami HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/auth/whoami',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/auth/whoami',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/auth/whoami', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/auth/whoami', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/auth/whoami");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/auth/whoami", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /auth/whoami

Example responses

200 Response

{
  "username": "string",
  "fullName": "string",
  "loginOrigin": "LDAP",
  "permissions": [
    "string"
  ],
  "redirectUrl": "string",
  "isAdmin": true
}

Responses

Status Meaning Description Schema
200 OK successful operation AuthDTO

processTaskBulkEvent

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/tasks/bulk \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/tasks/bulk HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/tasks/bulk',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/tasks/bulk',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/tasks/bulk', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/tasks/bulk', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/tasks/bulk");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/tasks/bulk", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/tasks/bulk

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

{
  "teamInfo": [
    {
      "teamId": "string",
      "teamName": "string",
      "saved": 0,
      "total": 0,
      "latestTaskInfo": [
        {
          "taskId": "string",
          "taskName": "string",
          "status": "ABANDONED"
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskBulkEventSaveResult

getMission

Code samples

# You can also use wget
curl -X GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission \
  -H 'Accept: application/json'

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf-exercises/{exerciseId}/teams/{teamId}/mission',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf-exercises/{exerciseId}/teams/{teamId}/mission', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf-exercises/{exerciseId}/teams/{teamId}/mission', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

{
  "teamCount": 0,
  "endTime": 0,
  "missionEndTime": 0,
  "tasksByCategory": [
    {
      "category": "string",
      "name": "string",
      "tasks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "type": "SINGLE_ANSWER",
          "title": "string",
          "score": 0,
          "teamsSolved": 0,
          "status": "ABANDONED",
          "availableHints": 0,
          "usedHintPoints": 0,
          "requiredTasks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "title": "string"
            }
          ],
          "niceIds": {
            "taskIds": [
              "string"
            ],
            "knowledgeIds": [
              "string"
            ],
            "skillIds": [
              "string"
            ],
            "abilityIds": [
              "string"
            ]
          },
          "targets": [
            {
              "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
              "targetName": "string",
              "vmId": "f1446e55-23f6-4461-a5de-ba794da4dde9",
              "powerState": "POWERED_OFF"
            }
          ],
          "answerCrossUsageDetected": true
        }
      ]
    }
  ],
  "openedTasksLimit": 0,
  "individualStartStop": {
    "start": 0,
    "stop": 0
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFMissionDTO

uploadImage

Code samples

# You can also use wget
curl -X POST /widget/situation-report/exercise/{exerciseId}/team/{teamId}/images \
  -H 'Accept: application/json'

POST /widget/situation-report/exercise/{exerciseId}/team/{teamId}/images HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/situation-report/exercise/{exerciseId}/team/{teamId}/images',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/widget/situation-report/exercise/{exerciseId}/team/{teamId}/images',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/widget/situation-report/exercise/{exerciseId}/team/{teamId}/images', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/situation-report/exercise/{exerciseId}/team/{teamId}/images', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/situation-report/exercise/{exerciseId}/team/{teamId}/images");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/situation-report/exercise/{exerciseId}/team/{teamId}/images", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/situation-report/exercise/{exerciseId}/team/{teamId}/images

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

{
  "id": "string",
  "name": "string",
  "size": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation IsaFileMetaData

startMission

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/start

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/start HTTP/1.1


fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/start',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/start',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/start')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/start', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/start");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/start", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/start

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getStatus

Code samples

# You can also use wget
curl -X GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/status \
  -H 'Accept: application/json'

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/status HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/status',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/status',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/status', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/status', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/status");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/status

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

{
  "endTime": 0,
  "missionEndTime": 0,
  "missionMaxDurationMs": 0,
  "leader": {
    "score": 0,
    "tasksSolved": 0
  },
  "teamScore": 0,
  "teamPosition": 0,
  "totalTeams": 0,
  "tasksSolved": 0,
  "tasksOpened": 0,
  "tasksLimit": 0,
  "tasksTotal": 0,
  "hintsUsed": 0,
  "hintsTotal": 0,
  "individualStartStop": {
    "start": 0,
    "stop": 0
  },
  "showTeamPosition": true
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTeamStatusDTO

stopMission

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop HTTP/1.1


fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/stop

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

listenForValidatedTasks

Code samples

# You can also use wget
curl -X GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe HTTP/1.1


fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/validation/subscribe

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getTaskDetails

Code samples

# You can also use wget
curl -X GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId} \
  -H 'Accept: application/json'

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "SINGLE_ANSWER",
  "title": "string",
  "question": "string",
  "description": "string",
  "score": 0,
  "hintCount": 0,
  "answer": "string",
  "hints": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "content": "string",
      "penalty": 0
    }
  ],
  "status": "ABANDONED",
  "taskAbandonPenalty": 0,
  "usedHintIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "nextHintPenalty": 0,
  "penaltyPoints": 0,
  "submissions": [
    {
      "timestamp": 0,
      "teamName": "string",
      "userName": "string",
      "answer": "string",
      "score": 0,
      "feedback": "string",
      "validatorOutput": "string",
      "answerCrossUsageTeamNames": [
        "string"
      ],
      "isCorrect": true
    }
  ],
  "feedback": [
    {
      "timestamp": 0,
      "teamName": "string",
      "userName": "string",
      "feedback": "string"
    }
  ],
  "validatorOutput": "string",
  "isInputRequired": true
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskDetailsDTO

abandonTask

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/abandon

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "status": "ABANDONED",
  "score": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskEventSaveResult

saveTaskFeedback

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback HTTP/1.1


fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/feedback

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

lockTask

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/lock

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "status": "ABANDONED",
  "score": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskEventSaveResult

getNextHint

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/next-hint

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "usedHint": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "content": "string",
    "penalty": 0
  },
  "nextHintPenalty": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFHintUseDTO

solveTask

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/solve

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "status": "ABANDONED",
  "score": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskEventSaveResult

startTask

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/start

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "status": "ABANDONED",
  "score": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskEventSaveResult

unlockTask

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/unlock

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "status": "ABANDONED",
  "score": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskEventSaveResult

validateTask

Code samples

# You can also use wget
curl -X POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate \
  -H 'Accept: application/json'

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf-exercises/{exerciseId}/teams/{teamId}/mission/tasks/{taskId}/validate

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none

Example responses

200 Response

{
  "status": "ABANDONED",
  "score": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskEventSaveResult

getData

Code samples

# You can also use wget
curl -X GET /widget/user-scoring/exercise/{exerciseId} \
  -H 'Accept: application/json'

GET /widget/user-scoring/exercise/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/user-scoring/exercise/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/user-scoring/exercise/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/user-scoring/exercise/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/user-scoring/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/user-scoring/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/user-scoring/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/user-scoring/exercise/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
team query UUID false team id
timestamp query integer(int64) false none

Example responses

200 Response

[
  {
    "valueType": "ARRAY"
  }
]

Responses

Status Meaning Description Schema
200 OK [

{ "teamName":"Team-1, "username":"BT1-User1", "scores":[ { "category":"SPECIAL", "value":-986 }, { "category":"AVAILABILITY", "value":463 }, { "category":"INCIDENT_REPORTS", "value":-29 }, { "category":"SITUATION_REPORTS", "value":1044 }, { "category":"ATTACK_REPORTS", "value":167 }, { "category":"RESTORE_TO_BACKUP", "value":-350.0 } ] }, ... ]|Inline|

Response Schema

Status Code 200

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

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

getAssessmentReport

Code samples

# You can also use wget
curl -X GET /ctf/assessment/exercises/{exerciseId}/teams/{teamId} \
  -H 'Accept: application/json'

GET /ctf/assessment/exercises/{exerciseId}/teams/{teamId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf/assessment/exercises/{exerciseId}/teams/{teamId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf/assessment/exercises/{exerciseId}/teams/{teamId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf/assessment/exercises/{exerciseId}/teams/{teamId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf/assessment/exercises/{exerciseId}/teams/{teamId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf/assessment/exercises/{exerciseId}/teams/{teamId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf/assessment/exercises/{exerciseId}/teams/{teamId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf/assessment/exercises/{exerciseId}/teams/{teamId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

{
  "title": "string",
  "details": "string",
  "usernames": [
    "string"
  ],
  "startTime": 0,
  "endTime": 0,
  "maxTimeMs": 0,
  "taskAvgTimeMs": 0,
  "scoreReport": {
    "scoreByCategory": {
      "property1": 0,
      "property2": 0
    },
    "scoreEvents": [
      {
        "type": "ANSWER",
        "taskCategory": "string",
        "source": "TASK_EVENT",
        "eventScore": 0,
        "totalScore": 0,
        "timestamp": 0,
        "taskName": "string"
      }
    ],
    "totalScore": 0
  },
  "tasksTotal": 0,
  "tasksSolved": 0,
  "progressByCategory": {
    "property1": 0,
    "property2": 0
  },
  "totalProgress": 0,
  "hintsTotal": 0,
  "hintsUsed": 0,
  "wrongAnswers": 0,
  "abandonedTasks": 0,
  "teamTasksOverview": {
    "teamName": "string",
    "position": 0,
    "categories": [
      {
        "category": "string",
        "tasks": [
          {
            "status": "ABANDONED",
            "title": "string",
            "score": 0,
            "usedHints": 0,
            "maxHints": 0,
            "timeSpentMs": 0
          }
        ]
      }
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFAssessmentReport

getOverview

Code samples

# You can also use wget
curl -X GET /ctf/game-overview/exercises/{exerciseId} \
  -H 'Accept: application/json'

GET /ctf/game-overview/exercises/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf/game-overview/exercises/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf/game-overview/exercises/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf/game-overview/exercises/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf/game-overview/exercises/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf/game-overview/exercises/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf/game-overview/exercises/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf/game-overview/exercises/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

{
  "teams": [
    {
      "teamName": "string",
      "position": 0,
      "categories": [
        {
          "category": "string",
          "tasks": [
            {
              "status": "ABANDONED",
              "title": "string",
              "score": 0,
              "usedHints": 0,
              "maxHints": 0,
              "timeSpentMs": 0
            }
          ]
        }
      ]
    }
  ],
  "status": {
    "endTime": 0,
    "totalTeams": 0,
    "leader": {
      "name": "string",
      "score": 0,
      "tasksSolved": 0
    },
    "tasksTotal": 0,
    "hintsUsed": 0,
    "hintsTotal": 0,
    "progressByCategory": {
      "property1": 0,
      "property2": 0
    }
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFOverviewDTO

getLeaderBoard

Code samples

# You can also use wget
curl -X GET /ctf/leaderboard/exercises/{exerciseId} \
  -H 'Accept: application/json'

GET /ctf/leaderboard/exercises/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf/leaderboard/exercises/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf/leaderboard/exercises/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf/leaderboard/exercises/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf/leaderboard/exercises/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf/leaderboard/exercises/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf/leaderboard/exercises/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf/leaderboard/exercises/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

{
  "teams": [
    {
      "teamName": "string",
      "score": 0,
      "tasks": {
        "total": 0,
        "solved": 0,
        "inProgress": 0,
        "abandoned": 0,
        "wrongSubmissions": 0
      },
      "progressByCategory": {
        "property1": 0,
        "property2": 0
      },
      "totalProgress": 0,
      "hints": {
        "used": 0,
        "total": 0
      }
    }
  ],
  "status": {
    "endTime": 0,
    "totalTeams": 0,
    "leader": {
      "name": "string",
      "score": 0,
      "tasksSolved": 0
    },
    "tasksTotal": 0,
    "hintsUsed": 0,
    "hintsTotal": 0,
    "progressByCategory": {
      "property1": 0,
      "property2": 0
    }
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFLeaderboardDTO

getPodiumData

Code samples

# You can also use wget
curl -X GET /ctf/podium/exercises/{exerciseId} \
  -H 'Accept: application/json'

GET /ctf/podium/exercises/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf/podium/exercises/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf/podium/exercises/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf/podium/exercises/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf/podium/exercises/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf/podium/exercises/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf/podium/exercises/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf/podium/exercises/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
timestamp query integer(int64) false none

Example responses

200 Response

{
  "endTime": 0,
  "teams": [
    {
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "score": 0,
      "tasksOverview": {
        "teamName": "string",
        "position": 0,
        "categories": [
          {
            "category": "string",
            "tasks": [
              {
                "status": "ABANDONED",
                "title": "string",
                "score": 0,
                "usedHints": 0,
                "maxHints": 0,
                "timeSpentMs": 0
              }
            ]
          }
        ]
      }
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFPodiumDTO

getSound

Code samples

# You can also use wget
curl -X GET /widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}

GET /widget/team-scoring/exercise/{exerciseId}/sounds/{soundId} HTTP/1.1


fetch('/widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/team-scoring/exercise/{exerciseId}/sounds/{soundId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
soundId path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

getWidgetData

Code samples

# You can also use wget
curl -X GET /widget/team-timeline/exercise/{exerciseId}/team/{teamId} \
  -H 'Accept: application/json'

GET /widget/team-timeline/exercise/{exerciseId}/team/{teamId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/team-timeline/exercise/{exerciseId}/team/{teamId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/team-timeline/exercise/{exerciseId}/team/{teamId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/team-timeline/exercise/{exerciseId}/team/{teamId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/team-timeline/exercise/{exerciseId}/team/{teamId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/team-timeline/exercise/{exerciseId}/team/{teamId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/team-timeline/exercise/{exerciseId}/team/{teamId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/team-timeline/exercise/{exerciseId}/team/{teamId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

[
  {
    "valueType": "ARRAY"
  }
]

Responses

Status Meaning Description Schema
200 OK [

{ "category":"TOTAL", "scores":[ { "timestamp":"2017-06-22T09:15:12.189Z", "value":1246.0, "isEndex":false }, { "timestamp":"2017-06-22T09:16:12.189Z", "value":1300.6, "isEndex":true } ] }, { "category":"AVAILABILITY", "scores":[ { "timestamp":"2017-06-22T09:15:12.189Z", "value":1246.0, "isEndex":false }, { "timestamp":"2017-06-22T09:16:12.189Z", "value":1300.6, "isEndex":true } ] }, { "category":"ATTACK_REPORTS", "scores":[ { "timestamp":"2017-06-22T09:15:12.189Z", "value":105.1, "isEndex":false }, { "timestamp:"2017-06-22T09:16:12.189Z", "value":231.0, "isEndex":true } ] } ]|Inline|

Response Schema

Status Code 200

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

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

getTaskReportDetails

Code samples

# You can also use wget
curl -X GET /ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId} \
  -H 'Accept: application/json'

GET /ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
taskId path string(uuid) true none
reportId path string(uuid) true none

Example responses

200 Response

{
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "taskId": "e6e9d88a-9b63-468a-aec3-b7a11de27af8",
  "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
  "username": "string",
  "timestamp": 0,
  "answer": "string"
}

Responses

Status Meaning Description Schema
200 OK successful operation CTFTaskReportDetails

saveTaskReportConfirmation

Code samples

# You can also use wget
curl -X POST /ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation

POST /ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation HTTP/1.1


fetch('/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /ctf/task-reports/exercises/{exerciseId}/teams/{teamId}/tasks/{taskId}/reports/{reportId}/confirmation

Responses

Status Meaning Description Schema
default Default successful operation None

streamMediaFile

Code samples

# You can also use wget
curl -X GET /emi/stream/media/{mediaId}/exercise/{exerciseId} \
  -H 'Range: string'

GET /emi/stream/media/{mediaId}/exercise/{exerciseId} HTTP/1.1

Range: string


const headers = {
  'Range':'string'
};

fetch('/emi/stream/media/{mediaId}/exercise/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Range' => 'string'
}

result = RestClient.get '/emi/stream/media/{mediaId}/exercise/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Range': 'string'
}

r = requests.get('/emi/stream/media/{mediaId}/exercise/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Range' => 'string',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/emi/stream/media/{mediaId}/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/emi/stream/media/{mediaId}/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Range": []string{"string"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/emi/stream/media/{mediaId}/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /emi/stream/media/{mediaId}/exercise/{exerciseId}

Parameters

Name In Type Required Description
mediaId path string true none
exerciseId path string(uuid) true none
Range header string false none

Responses

Status Meaning Description Schema
default Default successful operation None

uploadMedia

Code samples

# You can also use wget
curl -X POST /emi/upload/exercise/{exerciseId} \
  -H 'Accept: application/json'

POST /emi/upload/exercise/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/emi/upload/exercise/{exerciseId}',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/emi/upload/exercise/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/emi/upload/exercise/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/emi/upload/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/emi/upload/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/emi/upload/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /emi/upload/exercise/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

{
  "id": "string",
  "name": "string",
  "fileType": "AUDIO"
}

Responses

Status Meaning Description Schema
200 OK successful operation MediaMetaInfo

getExerciseListDTOs

Code samples

# You can also use wget
curl -X GET /exercise \
  -H 'Accept: application/json'

GET /exercise HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise

Example responses

200 Response

[
  {
    "name": "string",
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "type": "CAMPAIGN",
    "description": "string",
    "status": "NOT_STARTED",
    "imageId": "string",
    "isTeamSettingsEnabled": true
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [IExerciseListDTO] false none none
» name string false none none
» id string(uuid) false none none
» type string false none none
» description string false none none
» status string false none none
» imageId string false none none
» isTeamSettingsEnabled boolean false read-only none

Enumerated Values

Property Value
type CAMPAIGN
type CTF
type HYBRID
type UNPUBLISHED
status NOT_STARTED
status RUNNING
status STOPPED
status UNPUBLISHED

save

Code samples

# You can also use wget
curl -X POST /system-event/exercise/{exerciseId}

POST /system-event/exercise/{exerciseId} HTTP/1.1


fetch('/system-event/exercise/{exerciseId}',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/system-event/exercise/{exerciseId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/system-event/exercise/{exerciseId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/system-event/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/system-event/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/system-event/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /system-event/exercise/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

update

Code samples

# You can also use wget
curl -X PUT /exercise

PUT /exercise HTTP/1.1


fetch('/exercise',
{
  method: 'PUT'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.put '/exercise',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.put('/exercise')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/exercise', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/exercise", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /exercise

Responses

Status Meaning Description Schema
default Default successful operation None

getObjectiveCategories

Code samples

# You can also use wget
curl -X GET /exercise/objective/category \
  -H 'Accept: application/json'

GET /exercise/objective/category HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise/objective/category',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise/objective/category',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise/objective/category', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/objective/category', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/objective/category");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/objective/category", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/objective/category

Example responses

200 Response

[
  "NETWORKING"
]

Responses

Status Meaning Description Schema
200 OK ["NETWORKING","CLIENT_SIDE","WEB"] Inline

Response Schema

getObjectiveStatuses

Code samples

# You can also use wget
curl -X GET /exercise/objective/status \
  -H 'Accept: application/json'

GET /exercise/objective/status HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise/objective/status',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise/objective/status',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise/objective/status', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/objective/status', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/objective/status");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/objective/status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/objective/status

Example responses

200 Response

[
  "NOT_COMPROMISED"
]

Responses

Status Meaning Description Schema
200 OK ["NOT_COMPROMISED","COMPROMISED"] Inline

Response Schema

replace

Code samples

# You can also use wget
curl -X POST /exercise/{exerciseId} \
  -H 'Accept: */*'

POST /exercise/{exerciseId} HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/exercise/{exerciseId}',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.post '/exercise/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.post('/exercise/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /exercise/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation IExercise

delete

Code samples

# You can also use wget
curl -X DELETE /widget/gma/{gmaId}

DELETE /widget/gma/{gmaId} HTTP/1.1


fetch('/widget/gma/{gmaId}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/widget/gma/{gmaId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/widget/gma/{gmaId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/widget/gma/{gmaId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/gma/{gmaId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/widget/gma/{gmaId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /widget/gma/{gmaId}

Parameters

Name In Type Required Description
gmaId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getExerciseTeamTargets

Code samples

# You can also use wget
curl -X GET /exercise/{exerciseId}/blueTeam/{teamId}/targets \
  -H 'Accept: application/json'

GET /exercise/{exerciseId}/blueTeam/{teamId}/targets HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise/{exerciseId}/blueTeam/{teamId}/targets',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise/{exerciseId}/blueTeam/{teamId}/targets',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise/{exerciseId}/blueTeam/{teamId}/targets', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{exerciseId}/blueTeam/{teamId}/targets', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/blueTeam/{teamId}/targets");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{exerciseId}/blueTeam/{teamId}/targets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{exerciseId}/blueTeam/{teamId}/targets

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

{
  "property1": {
    "valueType": "ARRAY"
  },
  "property2": {
    "valueType": "ARRAY"
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» additionalProperties JsonValue false none none
»» valueType string false none none

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

getExerciseImage

Code samples

# You can also use wget
curl -X GET /exercise/{exerciseId}/image

GET /exercise/{exerciseId}/image HTTP/1.1


fetch('/exercise/{exerciseId}/image',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/exercise/{exerciseId}/image',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/exercise/{exerciseId}/image')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{exerciseId}/image', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/image");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{exerciseId}/image", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{exerciseId}/image

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

saveExerciseImage

Code samples

# You can also use wget
curl -X POST /exercise/{exerciseId}/image \
  -H 'Accept: */*'

POST /exercise/{exerciseId}/image HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/exercise/{exerciseId}/image',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.post '/exercise/{exerciseId}/image',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.post('/exercise/{exerciseId}/image', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/exercise/{exerciseId}/image', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/image");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/exercise/{exerciseId}/image", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /exercise/{exerciseId}/image

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation IsaFileMetaData

deleteExerciseImage

Code samples

# You can also use wget
curl -X DELETE /exercise/{exerciseId}/image

DELETE /exercise/{exerciseId}/image HTTP/1.1


fetch('/exercise/{exerciseId}/image',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/exercise/{exerciseId}/image',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/exercise/{exerciseId}/image')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/exercise/{exerciseId}/image', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/image");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/exercise/{exerciseId}/image", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /exercise/{exerciseId}/image

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getUserBlueTeam

Code samples

# You can also use wget
curl -X GET /exercise/{exerciseId}/my-blue-team \
  -H 'Accept: text/plain'

GET /exercise/{exerciseId}/my-blue-team HTTP/1.1

Accept: text/plain


const headers = {
  'Accept':'text/plain'
};

fetch('/exercise/{exerciseId}/my-blue-team',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/plain'
}

result = RestClient.get '/exercise/{exerciseId}/my-blue-team',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'text/plain'
}

r = requests.get('/exercise/{exerciseId}/my-blue-team', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'text/plain',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{exerciseId}/my-blue-team', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/my-blue-team");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/plain"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{exerciseId}/my-blue-team", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{exerciseId}/my-blue-team

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

"string"

Responses

Status Meaning Description Schema
200 OK successful operation string

updateNetworkSegment

Code samples

# You can also use wget
curl -X PUT /exercise/{exerciseId}/network-segments/{networkSegmentId}

PUT /exercise/{exerciseId}/network-segments/{networkSegmentId} HTTP/1.1


fetch('/exercise/{exerciseId}/network-segments/{networkSegmentId}',
{
  method: 'PUT'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.put '/exercise/{exerciseId}/network-segments/{networkSegmentId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.put('/exercise/{exerciseId}/network-segments/{networkSegmentId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/exercise/{exerciseId}/network-segments/{networkSegmentId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/network-segments/{networkSegmentId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/exercise/{exerciseId}/network-segments/{networkSegmentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /exercise/{exerciseId}/network-segments/{networkSegmentId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
networkSegmentId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

reloadExternalScripts

Code samples

# You can also use wget
curl -X POST /exercise/{exerciseId}/reload-scripts

POST /exercise/{exerciseId}/reload-scripts HTTP/1.1


fetch('/exercise/{exerciseId}/reload-scripts',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/exercise/{exerciseId}/reload-scripts',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/exercise/{exerciseId}/reload-scripts')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/exercise/{exerciseId}/reload-scripts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/reload-scripts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/exercise/{exerciseId}/reload-scripts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /exercise/{exerciseId}/reload-scripts

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

resetExercise

Code samples

# You can also use wget
curl -X POST /exercise/{exerciseId}/reset

POST /exercise/{exerciseId}/reset HTTP/1.1


fetch('/exercise/{exerciseId}/reset',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/exercise/{exerciseId}/reset',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/exercise/{exerciseId}/reset')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/exercise/{exerciseId}/reset', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/reset");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/exercise/{exerciseId}/reset", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /exercise/{exerciseId}/reset

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getExerciseScoreTypes

Code samples

# You can also use wget
curl -X GET /exercise/{exerciseId}/score-types \
  -H 'Accept: application/json'

GET /exercise/{exerciseId}/score-types HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise/{exerciseId}/score-types',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise/{exerciseId}/score-types',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise/{exerciseId}/score-types', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{exerciseId}/score-types', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/score-types");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{exerciseId}/score-types", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{exerciseId}/score-types

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

[
  "TOTAL"
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

listenForTeamSettingsChanges

Code samples

# You can also use wget
curl -X GET /exercise/{exerciseId}/team-settings/subscribe

GET /exercise/{exerciseId}/team-settings/subscribe HTTP/1.1


fetch('/exercise/{exerciseId}/team-settings/subscribe',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/exercise/{exerciseId}/team-settings/subscribe',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/exercise/{exerciseId}/team-settings/subscribe')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{exerciseId}/team-settings/subscribe', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/team-settings/subscribe");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{exerciseId}/team-settings/subscribe", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{exerciseId}/team-settings/subscribe

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getTeamAvatar

Code samples

# You can also use wget
curl -X GET /exercise/{exerciseId}/teams/{teamId}/avatar

GET /exercise/{exerciseId}/teams/{teamId}/avatar HTTP/1.1


fetch('/exercise/{exerciseId}/teams/{teamId}/avatar',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/exercise/{exerciseId}/teams/{teamId}/avatar',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/exercise/{exerciseId}/teams/{teamId}/avatar')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{exerciseId}/teams/{teamId}/avatar', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/teams/{teamId}/avatar");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{exerciseId}/teams/{teamId}/avatar", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{exerciseId}/teams/{teamId}/avatar

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

resetExerciseTeamData

Code samples

# You can also use wget
curl -X POST /exercise/{exerciseId}/teams/{teamId}/reset

POST /exercise/{exerciseId}/teams/{teamId}/reset HTTP/1.1


fetch('/exercise/{exerciseId}/teams/{teamId}/reset',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/exercise/{exerciseId}/teams/{teamId}/reset',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/exercise/{exerciseId}/teams/{teamId}/reset')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/exercise/{exerciseId}/teams/{teamId}/reset', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/teams/{teamId}/reset");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/exercise/{exerciseId}/teams/{teamId}/reset", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /exercise/{exerciseId}/teams/{teamId}/reset

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getTeamSettings

Code samples

# You can also use wget
curl -X GET /exercise/{exerciseId}/teams/{teamId}/settings \
  -H 'Accept: application/json'

GET /exercise/{exerciseId}/teams/{teamId}/settings HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise/{exerciseId}/teams/{teamId}/settings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise/{exerciseId}/teams/{teamId}/settings',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise/{exerciseId}/teams/{teamId}/settings', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{exerciseId}/teams/{teamId}/settings', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/teams/{teamId}/settings");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{exerciseId}/teams/{teamId}/settings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{exerciseId}/teams/{teamId}/settings

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string"
}

Responses

Status Meaning Description Schema
200 OK successful operation TeamSettingsDTO

saveTeamSettings

Code samples

# You can also use wget
curl -X POST /exercise/{exerciseId}/teams/{teamId}/settings

POST /exercise/{exerciseId}/teams/{teamId}/settings HTTP/1.1


fetch('/exercise/{exerciseId}/teams/{teamId}/settings',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/exercise/{exerciseId}/teams/{teamId}/settings',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/exercise/{exerciseId}/teams/{teamId}/settings')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/exercise/{exerciseId}/teams/{teamId}/settings', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{exerciseId}/teams/{teamId}/settings");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/exercise/{exerciseId}/teams/{teamId}/settings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /exercise/{exerciseId}/teams/{teamId}/settings

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getExercise

Code samples

# You can also use wget
curl -X GET /exercise/{id} \
  -H 'Accept: application/json'

GET /exercise/{id} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise/{id}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{id}

Parameters

Name In Type Required Description
id path string(uuid) true none

Example responses

200 Response

{
  "property1": {
    "valueType": "ARRAY"
  },
  "property2": {
    "valueType": "ARRAY"
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» additionalProperties JsonValue false none none
»» valueType string false none none

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

getExerciseBlueTeamUsers

Code samples

# You can also use wget
curl -X GET /exercise/{id}/teams/{teamId}/users \
  -H 'Accept: application/json'

GET /exercise/{id}/teams/{teamId}/users HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/exercise/{id}/teams/{teamId}/users',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/exercise/{id}/teams/{teamId}/users',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/exercise/{id}/teams/{teamId}/users', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/exercise/{id}/teams/{teamId}/users', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/exercise/{id}/teams/{teamId}/users");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/exercise/{id}/teams/{teamId}/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /exercise/{id}/teams/{teamId}/users

Parameters

Name In Type Required Description
id path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

[
  {
    "username": "string",
    "fullName": "string",
    "origin": "LDAP"
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [UserListDTO] false none none
» username string false none none
» fullName string false none none
» origin string false none none

Enumerated Values

Property Value
origin LDAP
origin LOCAL
origin OBSERVER
origin UNKNOWN
origin EXTERNAL

getFileContent

Code samples

# You can also use wget
curl -X GET /files/{fileId} \
  -H 'Accept: application/octet-stream'

GET /files/{fileId} HTTP/1.1

Accept: application/octet-stream


const headers = {
  'Accept':'application/octet-stream'
};

fetch('/files/{fileId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/octet-stream'
}

result = RestClient.get '/files/{fileId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/octet-stream'
}

r = requests.get('/files/{fileId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/octet-stream',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/files/{fileId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/files/{fileId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/octet-stream"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/files/{fileId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /files/{fileId}

Parameters

Name In Type Required Description
fileId path string true none

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

getHealthAggregatedData

Code samples

# You can also use wget
curl -X GET /health-data \
  -H 'Accept: application/json'

GET /health-data HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/health-data',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/health-data',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/health-data', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/health-data', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/health-data");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/health-data", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /health-data

Example responses

200 Response

{
  "timestamp": 0,
  "data": [
    {
      "type": "string",
      "name": "string",
      "description": "string",
      "checks": [
        {}
      ],
      "isUp": true
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK successful operation HealthAggregatedData

listenForHealthDataChanges

Code samples

# You can also use wget
curl -X GET /health-data/subscribe

GET /health-data/subscribe HTTP/1.1


fetch('/health-data/subscribe',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/health-data/subscribe',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/health-data/subscribe')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/health-data/subscribe', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/health-data/subscribe");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/health-data/subscribe", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /health-data/subscribe

Responses

Status Meaning Description Schema
default Default successful operation None

getIntegrations

Code samples

# You can also use wget
curl -X GET /integrations \
  -H 'Accept: application/json'

GET /integrations HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/integrations',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/integrations',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/integrations', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/integrations', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/integrations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /integrations

Example responses

200 Response

[
  {
    "id": "string",
    "name": "string",
    "type": "REST",
    "eventTypes": [
      "TARGET_STATUS_CHANGE"
    ],
    "baseUrl": "string",
    "events": [
      {
        "id": {
          "timestamp": 0,
          "date": "2019-08-24T14:15:22Z"
        },
        "type": "TARGET_STATUS_CHANGE",
        "subjectType": "TARGET",
        "integrationId": {
          "timestamp": 0,
          "date": "2019-08-24T14:15:22Z"
        },
        "subjectId": "string"
      }
    ],
    "authentication": {
      "type": "SESSION_TOKEN"
    },
    "configuration": {
      "integrationType": "REST"
    }
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [IntegrationListItemDTO] false none none
» id string false none none
» name string false none none
» type string false none none
» eventTypes [string] false none none
» baseUrl string false none none
» events [IntegrationEvent] false none none
»» id ObjectId false none none
»»» timestamp integer(int32) false none none
»»» date string(date-time) false none none
»» type string false none none
»» subjectType string false none none
»» integrationId ObjectId false none none
»» subjectId string false none none
» authentication IntegrationAuthentication false none none
»» type string false none none
» configuration IntegrationConfiguration false none none
»» integrationType string false none none

Enumerated Values

Property Value
type REST
type SENDGRID
type SLACK_WEBHOOK
type DELRAP
type TARGET_STATUS_CHANGE
type EMAIL
type EXERCISE_START
type EXERCISE_END
type EXERCISE_PROGRESS_UPDATE
subjectType TARGET
subjectType EMAIL
subjectType EXERCISE
type SESSION_TOKEN
type API_KEY
type ACTIVEMQ
type NOOP
integrationType REST
integrationType SENDGRID
integrationType SLACK_WEBHOOK
integrationType DELRAP

saveIntegration

Code samples

# You can also use wget
curl -X POST /integrations

POST /integrations HTTP/1.1


fetch('/integrations',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/integrations',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/integrations')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/integrations', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/integrations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /integrations

Responses

Status Meaning Description Schema
default Default successful operation None

getIntegrationEvents

Code samples

# You can also use wget
curl -X GET /integrations/events \
  -H 'Accept: application/json'

GET /integrations/events HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/integrations/events',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/integrations/events',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/integrations/events', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/integrations/events', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations/events");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/integrations/events", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /integrations/events

Parameters

Name In Type Required Description
subjectId query string false none
subjectType query string false none
eventTypes query array[string] false none
integrationId query string false none

Enumerated Values

Parameter Value
subjectType TARGET
subjectType EMAIL
subjectType EXERCISE
eventTypes TARGET_STATUS_CHANGE
eventTypes EMAIL
eventTypes EXERCISE_START
eventTypes EXERCISE_END
eventTypes EXERCISE_PROGRESS_UPDATE

Example responses

200 Response

[
  {
    "id": "string",
    "type": "TARGET_STATUS_CHANGE",
    "subjectName": "string",
    "subjectType": "TARGET",
    "integrationId": "string",
    "subjectId": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [IntegrationEventDTO] false none none
» id string false none none
» type string false none none
» subjectName string false none none
» subjectType string false none none
» integrationId string false none none
» subjectId string false none none

Enumerated Values

Property Value
type TARGET_STATUS_CHANGE
type EMAIL
type EXERCISE_START
type EXERCISE_END
type EXERCISE_PROGRESS_UPDATE
subjectType TARGET
subjectType EMAIL
subjectType EXERCISE

saveIntegrationEvent

Code samples

# You can also use wget
curl -X POST /integrations/events \
  -H 'Accept: application/json'

POST /integrations/events HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/integrations/events',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/integrations/events',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/integrations/events', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/integrations/events', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations/events");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/integrations/events", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /integrations/events

Example responses

200 Response

{
  "id": "string",
  "type": "TARGET_STATUS_CHANGE",
  "subjectName": "string",
  "subjectType": "TARGET",
  "integrationId": "string",
  "subjectId": "string"
}

Responses

Status Meaning Description Schema
200 OK successful operation IntegrationEventDTO

updateIntegrationEvent

Code samples

# You can also use wget
curl -X PUT /integrations/events/{id}

PUT /integrations/events/{id} HTTP/1.1


fetch('/integrations/events/{id}',
{
  method: 'PUT'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.put '/integrations/events/{id}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.put('/integrations/events/{id}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/integrations/events/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations/events/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/integrations/events/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /integrations/events/{id}

Parameters

Name In Type Required Description
id path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

deleteIntegrationEvent

Code samples

# You can also use wget
curl -X DELETE /integrations/events/{id}

DELETE /integrations/events/{id} HTTP/1.1


fetch('/integrations/events/{id}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/integrations/events/{id}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/integrations/events/{id}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/integrations/events/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations/events/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/integrations/events/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /integrations/events/{id}

Parameters

Name In Type Required Description
id path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

sendIntegrationEvent

Code samples

# You can also use wget
curl -X POST /integrations/events/{subjectId}/send

POST /integrations/events/{subjectId}/send HTTP/1.1


fetch('/integrations/events/{subjectId}/send',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/integrations/events/{subjectId}/send',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/integrations/events/{subjectId}/send')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/integrations/events/{subjectId}/send', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations/events/{subjectId}/send");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/integrations/events/{subjectId}/send", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /integrations/events/{subjectId}/send

Parameters

Name In Type Required Description
subjectId path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

updateIntegration

Code samples

# You can also use wget
curl -X PUT /integrations/{id}

PUT /integrations/{id} HTTP/1.1


fetch('/integrations/{id}',
{
  method: 'PUT'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.put '/integrations/{id}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.put('/integrations/{id}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/integrations/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/integrations/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /integrations/{id}

Parameters

Name In Type Required Description
id path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

deleteIntegration

Code samples

# You can also use wget
curl -X DELETE /integrations/{id}

DELETE /integrations/{id} HTTP/1.1


fetch('/integrations/{id}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/integrations/{id}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/integrations/{id}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/integrations/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/integrations/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/integrations/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /integrations/{id}

Parameters

Name In Type Required Description
id path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

getNewsInjections

Code samples

# You can also use wget
curl -X GET /news/injects/exercise/{exerciseId} \
  -H 'Accept: application/json'

GET /news/injects/exercise/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/news/injects/exercise/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/news/injects/exercise/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/news/injects/exercise/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/news/injects/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/news/injects/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /news/injects/exercise/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId query string(uuid) false none

Example responses

200 Response

[
  {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
    "title": "string",
    "description": "string",
    "timestamp": 0,
    "mediaId": "string",
    "thumbnailId": "string",
    "fileType": "AUDIO",
    "status": "PUBLISHED",
    "teams": [
      {
        "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
        "teamName": "string",
        "injectStatus": "PUBLISHED",
        "injectPublicationId": "string",
        "injectPublicationTimestamp": 0
      }
    ],
    "isNew": true
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [NewsInjectData] false none none
» id string(uuid) false none none
» exerciseId string(uuid) false none none
» title string false none none
» description string false none none
» timestamp integer(int64) false none none
» mediaId string false none none
» thumbnailId string false none none
» fileType string false none none
» status string false none none
» teams [NewsInjectTeam] false none none
»» teamId string(uuid) false none none
»» teamName string false none none
»» injectStatus string false none none
»» injectPublicationId string false none none
»» injectPublicationTimestamp integer(int64) false none none
» isNew boolean false read-only none

Enumerated Values

Property Value
fileType AUDIO
fileType IMAGE
fileType VIDEO
status PUBLISHED
status UNPUBLISHED
injectStatus PUBLISHED
injectStatus UNPUBLISHED

saveNewsInject

Code samples

# You can also use wget
curl -X POST /news/injects/exercise/{exerciseId}

POST /news/injects/exercise/{exerciseId} HTTP/1.1


fetch('/news/injects/exercise/{exerciseId}',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/news/injects/exercise/{exerciseId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/news/injects/exercise/{exerciseId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/news/injects/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/news/injects/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /news/injects/exercise/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

saveNewsInjectPublications

Code samples

# You can also use wget
curl -X POST /news/injects/publications

POST /news/injects/publications HTTP/1.1


fetch('/news/injects/publications',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/news/injects/publications',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/news/injects/publications')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/news/injects/publications', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/publications");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/news/injects/publications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /news/injects/publications

Responses

Status Meaning Description Schema
default Default successful operation None

getNewsInjection

Code samples

# You can also use wget
curl -X GET /news/injects/{newsInjectId}/exercise/{exerciseId} \
  -H 'Accept: application/json'

GET /news/injects/{newsInjectId}/exercise/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/news/injects/{newsInjectId}/exercise/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/news/injects/{newsInjectId}/exercise/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/news/injects/{newsInjectId}/exercise/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/news/injects/{newsInjectId}/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/{newsInjectId}/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/news/injects/{newsInjectId}/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /news/injects/{newsInjectId}/exercise/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
newsInjectId path string(uuid) true none
teamId query string(uuid) false none

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "title": "string",
  "description": "string",
  "timestamp": 0,
  "mediaId": "string",
  "thumbnailId": "string",
  "fileType": "AUDIO",
  "status": "PUBLISHED",
  "teams": [
    {
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "injectStatus": "PUBLISHED",
      "injectPublicationId": "string",
      "injectPublicationTimestamp": 0
    }
  ],
  "isNew": true
}

Responses

Status Meaning Description Schema
200 OK successful operation NewsInjectData

removeNewsInject

Code samples

# You can also use wget
curl -X DELETE /news/injects/{newsInjectId}/exercise/{exerciseId}

DELETE /news/injects/{newsInjectId}/exercise/{exerciseId} HTTP/1.1


fetch('/news/injects/{newsInjectId}/exercise/{exerciseId}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/news/injects/{newsInjectId}/exercise/{exerciseId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/news/injects/{newsInjectId}/exercise/{exerciseId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/news/injects/{newsInjectId}/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/{newsInjectId}/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/news/injects/{newsInjectId}/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /news/injects/{newsInjectId}/exercise/{exerciseId}

Parameters

Name In Type Required Description
newsInjectId path string(uuid) true none
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

saveNewsInjectPublication

Code samples

# You can also use wget
curl -X POST /news/injects/{newsInjectId}/exercise/{exerciseId}/publication

POST /news/injects/{newsInjectId}/exercise/{exerciseId}/publication HTTP/1.1


fetch('/news/injects/{newsInjectId}/exercise/{exerciseId}/publication',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/news/injects/{newsInjectId}/exercise/{exerciseId}/publication',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/news/injects/{newsInjectId}/exercise/{exerciseId}/publication')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/news/injects/{newsInjectId}/exercise/{exerciseId}/publication', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/{newsInjectId}/exercise/{exerciseId}/publication");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/news/injects/{newsInjectId}/exercise/{exerciseId}/publication", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /news/injects/{newsInjectId}/exercise/{exerciseId}/publication

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
newsInjectId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

unpublish

Code samples

# You can also use wget
curl -X DELETE /news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}

DELETE /news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId} HTTP/1.1


fetch('/news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /news/injects/{newsInjectId}/exercise/{exerciseId}/publication/{publicationId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
newsInjectId path string(uuid) true none
publicationId path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

getNewsInjectionTeamsData

Code samples

# You can also use wget
curl -X GET /news/injects/{newsInjectId}/exercise/{exerciseId}/teams \
  -H 'Accept: application/json'

GET /news/injects/{newsInjectId}/exercise/{exerciseId}/teams HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/news/injects/{newsInjectId}/exercise/{exerciseId}/teams',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/news/injects/{newsInjectId}/exercise/{exerciseId}/teams',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/news/injects/{newsInjectId}/exercise/{exerciseId}/teams', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/news/injects/{newsInjectId}/exercise/{exerciseId}/teams', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/news/injects/{newsInjectId}/exercise/{exerciseId}/teams");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/news/injects/{newsInjectId}/exercise/{exerciseId}/teams", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /news/injects/{newsInjectId}/exercise/{exerciseId}/teams

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
newsInjectId path string(uuid) true none

Example responses

200 Response

[
  {
    "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
    "teamName": "string",
    "injectStatus": "PUBLISHED",
    "injectPublicationId": "string",
    "injectPublicationTimestamp": 0
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [NewsInjectTeam] false none none
» teamId string(uuid) false none none
» teamName string false none none
» injectStatus string false none none
» injectPublicationId string false none none
» injectPublicationTimestamp integer(int64) false none none

Enumerated Values

Property Value
injectStatus PUBLISHED
injectStatus UNPUBLISHED

getUserPreferences

Code samples

# You can also use wget
curl -X GET /preferences \
  -H 'Accept: application/json'

GET /preferences HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/preferences',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/preferences',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/preferences', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/preferences', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/preferences");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/preferences", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /preferences

Example responses

200 Response

{
  "defaultExerciseId": "string",
  "defaultTeamId": "string",
  "dateFormat": "string",
  "defaultListSize": 0,
  "isLightTheme": true
}

Responses

Status Meaning Description Schema
200 OK {

"username":"tester", "defaultExerciseId":"a43b1de0-1b7c-4ec7-b2bb-95ec6f36406e", "defaultTeamId":"c5c95011-be78-425c-8cce-ee816a65930f" }|PreferencesDTO|

saveUserPreferences

Code samples

# You can also use wget
curl -X PUT /preferences \
  -H 'Accept: application/json'

PUT /preferences HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/preferences',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.put '/preferences',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.put('/preferences', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/preferences', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/preferences");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/preferences", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /preferences

Example responses

200 Response

{
  "defaultExerciseId": "string",
  "defaultTeamId": "string",
  "dateFormat": "string",
  "defaultListSize": 0,
  "isLightTheme": true
}

Responses

Status Meaning Description Schema
200 OK {

"username":"tester", "defaultExerciseId":"a43b1de0-1b7c-4ec7-b2bb-95ec6f36406e", "defaultTeamId":"c5c95011-be78-425c-8cce-ee816a65930f" }|PreferencesDTO| |400|Bad Request|if 'defaultExerciseId' or 'defaultTeamId' is not valid UUID|None| |403|Forbidden|if 'username' doe not match authenticated user|None|

getProductKey

Code samples

# You can also use wget
curl -X GET /product-keys \
  -H 'Accept: application/json'

GET /product-keys HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/product-keys',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/product-keys',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/product-keys', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/product-keys', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/product-keys");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/product-keys", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /product-keys

Example responses

200 Response

{
  "key": "string",
  "licensedTo": "string",
  "validUntil": "string",
  "numberOfUsers": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation ProductKeyDetailsDTO

saveProductKey

Code samples

# You can also use wget
curl -X PUT /product-keys

PUT /product-keys HTTP/1.1


fetch('/product-keys',
{
  method: 'PUT'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.put '/product-keys',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.put('/product-keys')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/product-keys', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/product-keys");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/product-keys", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /product-keys

Responses

Status Meaning Description Schema
default Default successful operation None

getQueuePosition

Code samples

# You can also use wget
curl -X GET /queue/{exerciseId} \
  -H 'Accept: */*'

GET /queue/{exerciseId} HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/queue/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/queue/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/queue/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/queue/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/queue/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/queue/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /queue/{exerciseId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation QueueResponse

getAssignableRoles

Code samples

# You can also use wget
curl -X GET /roles \
  -H 'Accept: application/json'

GET /roles HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/roles',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/roles',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/roles', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/roles', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/roles");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /roles

Example responses

200 Response

{
  "roles": [
    {
      "code": "string",
      "description": "string",
      "domains": [
        "GN_EXERCISE"
      ]
    }
  ],
  "targetsByDomain": {
    "property1": [
      {
        "targets": [
          {
            "id": "string",
            "name": "string"
          }
        ],
        "parentDomain": "GN_EXERCISE",
        "parentTargetId": "string",
        "parentTargetName": "string"
      }
    ],
    "property2": [
      {
        "targets": [
          {
            "id": "string",
            "name": "string"
          }
        ],
        "parentDomain": "GN_EXERCISE",
        "parentTargetId": "string",
        "parentTargetName": "string"
      }
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation AssignableRolesDTO

getSettings

Code samples

# You can also use wget
curl -X GET /settings \
  -H 'Accept: application/json'

GET /settings HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/settings',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/settings',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/settings', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings

Example responses

200 Response

{
  "gamenetEnabled": true,
  "pentestEnabled": true,
  "vulnerabilityScanEnabled": true,
  "ldapEnabled": true,
  "observerEnabled": true,
  "vlmEnabled": true,
  "gamenetSettings": {
    "soundOnTeamChangeEnabled": true,
    "selectedSoundId": "string",
    "ctfPodiumFirstPlaceSoundEnabled": true,
    "ctfPodiumFirstPlaceSoundId": "string",
    "ctfPodiumSecondThirdPlaceSoundEnabled": true,
    "ctfPodiumSecondThirdPlaceSoundId": "string",
    "exerciseRefreshInterval": 0,
    "scoringTimelineWidgetRefreshInterval": 0
  },
  "ldapSettings": {
    "principal": "string",
    "searchBase": "string",
    "principalSuffix": "string",
    "urls": [
      "string"
    ],
    "groupMappings": [
      {
        "role": "string",
        "distinguishedName": "string"
      }
    ],
    "useSavedPassword": true
  },
  "vlmSettings": {
    "url": "string",
    "serviceKey": "string",
    "localWebConsoleProxyEnabled": true
  },
  "observerSettings": {
    "key": "string",
    "enabledViews": [
      "CAMPAIGN_LIVE"
    ],
    "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47"
  },
  "apiTokens": [
    {
      "name": "string",
      "value": "string",
      "timestamp": 0,
      "signingKey": {
        "value": "string",
        "timestamp": 0
      }
    }
  ],
  "widgetRefreshInterval": 0,
  "timestamp": 0,
  "applicationUrl": "string",
  "customLogoImageId": "string",
  "isLightTheme": true
}

Responses

Status Meaning Description Schema
200 OK successful operation SettingsDTO

saveSettings

Code samples

# You can also use wget
curl -X PUT /settings \
  -H 'Accept: */*'

PUT /settings HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/settings',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.put '/settings',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.put('/settings', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/settings', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/settings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /settings

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation SettingsDTO

checkObserver

Code samples

# You can also use wget
curl -X GET /settings/check-observer \
  -H 'Accept: */*'

GET /settings/check-observer HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/settings/check-observer',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/settings/check-observer',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/settings/check-observer', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings/check-observer', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/check-observer");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings/check-observer", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings/check-observer

Parameters

Name In Type Required Description
observerKey query string false none

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation boolean

Code samples

# You can also use wget
curl -X GET /settings/custom-logo

GET /settings/custom-logo HTTP/1.1


fetch('/settings/custom-logo',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/settings/custom-logo',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/settings/custom-logo')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings/custom-logo', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/custom-logo");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings/custom-logo", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings/custom-logo

Responses

Status Meaning Description Schema
default Default successful operation None

getFile

Code samples

# You can also use wget
curl -X GET /settings/files/{fileId}

GET /settings/files/{fileId} HTTP/1.1


fetch('/settings/files/{fileId}',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/settings/files/{fileId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/settings/files/{fileId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings/files/{fileId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/files/{fileId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings/files/{fileId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings/files/{fileId}

Parameters

Name In Type Required Description
fileId path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

deleteFile

Code samples

# You can also use wget
curl -X DELETE /settings/files/{fileId}

DELETE /settings/files/{fileId} HTTP/1.1


fetch('/settings/files/{fileId}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/settings/files/{fileId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/settings/files/{fileId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/settings/files/{fileId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/files/{fileId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/settings/files/{fileId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /settings/files/{fileId}

Parameters

Name In Type Required Description
fileId path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

generateApiTokenSigningKey

Code samples

# You can also use wget
curl -X GET /settings/generate-signing-key \
  -H 'Accept: application/json'

GET /settings/generate-signing-key HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/settings/generate-signing-key',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/settings/generate-signing-key',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/settings/generate-signing-key', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings/generate-signing-key', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/generate-signing-key");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings/generate-signing-key", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings/generate-signing-key

Example responses

200 Response

{
  "value": "string",
  "timestamp": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation SigningKey

generateApiToken

Code samples

# You can also use wget
curl -X GET /settings/generate-token \
  -H 'Accept: application/json'

GET /settings/generate-token HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/settings/generate-token',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/settings/generate-token',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/settings/generate-token', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings/generate-token', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/generate-token");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings/generate-token", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings/generate-token

Example responses

200 Response

{
  "name": "string",
  "value": "string",
  "timestamp": 0,
  "signingKey": {
    "value": "string",
    "timestamp": 0
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation ApiToken

getObserverSettings

Code samples

# You can also use wget
curl -X GET /settings/observer \
  -H 'Accept: */*'

GET /settings/observer HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/settings/observer',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/settings/observer',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/settings/observer', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings/observer', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/observer");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings/observer", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings/observer

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation CombinedObserverSettingsDTO

getSoundList

Code samples

# You can also use wget
curl -X GET /settings/sounds \
  -H 'Accept: application/json'

GET /settings/sounds HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/settings/sounds',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/settings/sounds',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/settings/sounds', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/settings/sounds', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/sounds");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/settings/sounds", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /settings/sounds

Example responses

200 Response

[
  {
    "id": "string",
    "name": "string",
    "size": 0
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [IsaFileMetaData] false none none
» id string false none none
» name string false none none
» size integer(int32) false none none

uploadSound

Code samples

# You can also use wget
curl -X POST /settings/sounds \
  -H 'Accept: application/json'

POST /settings/sounds HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/settings/sounds',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/settings/sounds',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/settings/sounds', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/settings/sounds', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/settings/sounds");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/settings/sounds", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /settings/sounds

Example responses

200 Response

{
  "id": "string",
  "name": "string",
  "size": 0
}

Responses

Status Meaning Description Schema
200 OK successful operation IsaFileMetaData

getExerciseStartAndStopEvents

Code samples

# You can also use wget
curl -X GET /system-event/exercise/{exerciseId}/duration \
  -H 'Accept: application/json'

GET /system-event/exercise/{exerciseId}/duration HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/system-event/exercise/{exerciseId}/duration',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/system-event/exercise/{exerciseId}/duration',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/system-event/exercise/{exerciseId}/duration', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/system-event/exercise/{exerciseId}/duration', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/system-event/exercise/{exerciseId}/duration");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/system-event/exercise/{exerciseId}/duration", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /system-event/exercise/{exerciseId}/duration

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

[
  {
    "startex": 0,
    "endex": 0
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [StartexAndEndex] false none none
» startex integer(int64) false none none
» endex integer(int64) false none none

listen

Code samples

# You can also use wget
curl -X GET /system-event/exercise/{exerciseId}/sse

GET /system-event/exercise/{exerciseId}/sse HTTP/1.1


fetch('/system-event/exercise/{exerciseId}/sse',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/system-event/exercise/{exerciseId}/sse',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/system-event/exercise/{exerciseId}/sse')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/system-event/exercise/{exerciseId}/sse', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/system-event/exercise/{exerciseId}/sse");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/system-event/exercise/{exerciseId}/sse", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /system-event/exercise/{exerciseId}/sse

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getVersion

Code samples

# You can also use wget
curl -X GET /system/version \
  -H 'Accept: application/json'

GET /system/version HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/system/version',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/system/version',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/system/version', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/system/version', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/system/version");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/system/version", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /system/version

Example responses

200 Response

"string"

Responses

Status Meaning Description Schema
200 OK successful operation string

subscribeToCalculationProgressEvents

Code samples

# You can also use wget
curl -X GET /target-check-availability/calculation-progress/subscribe

GET /target-check-availability/calculation-progress/subscribe HTTP/1.1


fetch('/target-check-availability/calculation-progress/subscribe',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/target-check-availability/calculation-progress/subscribe',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/target-check-availability/calculation-progress/subscribe')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/target-check-availability/calculation-progress/subscribe', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/target-check-availability/calculation-progress/subscribe");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/target-check-availability/calculation-progress/subscribe", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /target-check-availability/calculation-progress/subscribe

Responses

Status Meaning Description Schema
default Default successful operation None

recalculateData

Code samples

# You can also use wget
curl -X POST /target-check-availability/recalculate

POST /target-check-availability/recalculate HTTP/1.1


fetch('/target-check-availability/recalculate',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/target-check-availability/recalculate',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/target-check-availability/recalculate')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/target-check-availability/recalculate', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/target-check-availability/recalculate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/target-check-availability/recalculate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /target-check-availability/recalculate

Responses

Status Meaning Description Schema
default Default successful operation None

listenForLogoutEvents

Code samples

# You can also use wget
curl -X GET /users/current/events/subscribe

GET /users/current/events/subscribe HTTP/1.1


fetch('/users/current/events/subscribe',
{
  method: 'GET'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.get '/users/current/events/subscribe',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.get('/users/current/events/subscribe')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/users/current/events/subscribe', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/users/current/events/subscribe");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/users/current/events/subscribe", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /users/current/events/subscribe

Responses

Status Meaning Description Schema
default Default successful operation None

updateLastSeenNotifications

Code samples

# You can also use wget
curl -X PUT /users/current/last-seen-notifications

PUT /users/current/last-seen-notifications HTTP/1.1


fetch('/users/current/last-seen-notifications',
{
  method: 'PUT'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.put '/users/current/last-seen-notifications',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.put('/users/current/last-seen-notifications')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/users/current/last-seen-notifications', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/users/current/last-seen-notifications");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/users/current/last-seen-notifications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /users/current/last-seen-notifications

Changes the notifications last seen timestamp of the current user

'current' in path refers to the currently logged in user of the request

Responses

Status Meaning Description Schema
default Default successful operation None

changePassword

Code samples

# You can also use wget
curl -X POST /widget/users/{username}/password

POST /widget/users/{username}/password HTTP/1.1


fetch('/widget/users/{username}/password',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/users/{username}/password',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/users/{username}/password')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/users/{username}/password', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/users/{username}/password");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/users/{username}/password", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/users/{username}/password

Changes the password of the given user

Parameters

Name In Type Required Description
username path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

getSessionToken

Code samples

# You can also use wget
curl -X POST /vm/{vmId}/session-token \
  -H 'Accept: application/json'

POST /vm/{vmId}/session-token HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/vm/{vmId}/session-token',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/vm/{vmId}/session-token',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/vm/{vmId}/session-token', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/vm/{vmId}/session-token', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/vm/{vmId}/session-token");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/vm/{vmId}/session-token", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /vm/{vmId}/session-token

Parameters

Name In Type Required Description
vmId path string(uuid) true none

Example responses

200 Response

"string"

Responses

Status Meaning Description Schema
200 OK successful operation string

getWebConsoleUrl

Code samples

# You can also use wget
curl -X GET /vm/{vmId}/webconsole-url/exercise/{exerciseId} \
  -H 'Accept: application/json'

GET /vm/{vmId}/webconsole-url/exercise/{exerciseId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/vm/{vmId}/webconsole-url/exercise/{exerciseId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/vm/{vmId}/webconsole-url/exercise/{exerciseId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/vm/{vmId}/webconsole-url/exercise/{exerciseId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/vm/{vmId}/webconsole-url/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/vm/{vmId}/webconsole-url/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/vm/{vmId}/webconsole-url/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /vm/{vmId}/webconsole-url/exercise/{exerciseId}

Parameters

Name In Type Required Description
vmId path string(uuid) true none
exerciseId path string(uuid) true none

Example responses

200 Response

"string"

Responses

Status Meaning Description Schema
200 OK successful operation string

requestFlag

Code samples

# You can also use wget
curl -X POST /widget/attack-campaign/attack-flag/request \
  -H 'Accept: */*'

POST /widget/attack-campaign/attack-flag/request HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/widget/attack-campaign/attack-flag/request',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.post '/widget/attack-campaign/attack-flag/request',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.post('/widget/attack-campaign/attack-flag/request', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/attack-campaign/attack-flag/request', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/attack-campaign/attack-flag/request");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/attack-campaign/attack-flag/request", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/attack-campaign/attack-flag/request

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» additionalProperties JsonValue false none none
»» valueType string false none none

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

assignUserToObjective

Code samples

# You can also use wget
curl -X POST /widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment \
  -H 'Accept: application/json'

POST /widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
objectiveId path string(uuid) true none

Example responses

200 Response

{
  "property1": {
    "valueType": "ARRAY"
  },
  "property2": {
    "valueType": "ARRAY"
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» additionalProperties JsonValue false none none
»» valueType string false none none

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

removeUserFromObjective

Code samples

# You can also use wget
curl -X DELETE /widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}

DELETE /widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId} HTTP/1.1


fetch('/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /widget/attack-campaign/exercise/{exerciseId}/objective/{objectiveId}/assignment/{assignmentId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
objectiveId path string(uuid) true none
assignmentId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

assignUserToObjectives

Code samples

# You can also use wget
curl -X POST /widget/attack-campaign/objective/assignment/batch \
  -H 'Accept: application/json'

POST /widget/attack-campaign/objective/assignment/batch HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/attack-campaign/objective/assignment/batch',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post '/widget/attack-campaign/objective/assignment/batch',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('/widget/attack-campaign/objective/assignment/batch', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/attack-campaign/objective/assignment/batch', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/attack-campaign/objective/assignment/batch");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/attack-campaign/objective/assignment/batch", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/attack-campaign/objective/assignment/batch

Example responses

200 Response

[
  {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
    "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
    "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
    "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
    "username": "string",
    "timestamp": 0,
    "unassigned": 0
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [AttackCampaignUserAssignment] false none none
» id string(uuid) false none none
» exerciseId string(uuid) false none none
» teamId string(uuid) false none none
» objectiveContainerId string(uuid) false none none
» objectiveId string(uuid) false none none
» username string false none none
» timestamp integer(int64) false none none
» unassigned integer(int64) false none none

saveReport

Code samples

# You can also use wget
curl -X POST /widget/situation-report/exercise/{exerciseId}/team/{teamId}

POST /widget/situation-report/exercise/{exerciseId}/team/{teamId} HTTP/1.1


fetch('/widget/situation-report/exercise/{exerciseId}/team/{teamId}',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/situation-report/exercise/{exerciseId}/team/{teamId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/situation-report/exercise/{exerciseId}/team/{teamId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/situation-report/exercise/{exerciseId}/team/{teamId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/situation-report/exercise/{exerciseId}/team/{teamId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/situation-report/exercise/{exerciseId}/team/{teamId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/situation-report/exercise/{exerciseId}/team/{teamId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

saveReportBatch

Code samples

# You can also use wget
curl -X POST /widget/attack-campaign/report/batch

POST /widget/attack-campaign/report/batch HTTP/1.1


fetch('/widget/attack-campaign/report/batch',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/attack-campaign/report/batch',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/attack-campaign/report/batch')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/attack-campaign/report/batch', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/attack-campaign/report/batch");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/attack-campaign/report/batch", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/attack-campaign/report/batch

Responses

Status Meaning Description Schema
default Default successful operation None

saveConfirmation

Code samples

# You can also use wget
curl -X POST /widget/situation-reports/exercise/{exerciseId}/confirmation

POST /widget/situation-reports/exercise/{exerciseId}/confirmation HTTP/1.1


fetch('/widget/situation-reports/exercise/{exerciseId}/confirmation',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/situation-reports/exercise/{exerciseId}/confirmation',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/situation-reports/exercise/{exerciseId}/confirmation')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/situation-reports/exercise/{exerciseId}/confirmation', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/situation-reports/exercise/{exerciseId}/confirmation");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/situation-reports/exercise/{exerciseId}/confirmation", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/situation-reports/exercise/{exerciseId}/confirmation

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

saveConfirmationBatch

Code samples

# You can also use wget
curl -X POST /widget/incident-reports/exercise/{exerciseId}/confirmation/batch

POST /widget/incident-reports/exercise/{exerciseId}/confirmation/batch HTTP/1.1


fetch('/widget/incident-reports/exercise/{exerciseId}/confirmation/batch',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/incident-reports/exercise/{exerciseId}/confirmation/batch',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/incident-reports/exercise/{exerciseId}/confirmation/batch')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/incident-reports/exercise/{exerciseId}/confirmation/batch', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/incident-reports/exercise/{exerciseId}/confirmation/batch");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/incident-reports/exercise/{exerciseId}/confirmation/batch", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/incident-reports/exercise/{exerciseId}/confirmation/batch

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getReport

Code samples

# You can also use wget
curl -X GET /widget/attack-reports/exercise/{exerciseId}/report/{reportId} \
  -H 'Accept: application/json'

GET /widget/attack-reports/exercise/{exerciseId}/report/{reportId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/attack-reports/exercise/{exerciseId}/report/{reportId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/attack-reports/exercise/{exerciseId}/report/{reportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/attack-reports/exercise/{exerciseId}/report/{reportId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/attack-reports/exercise/{exerciseId}/report/{reportId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/attack-reports/exercise/{exerciseId}/report/{reportId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/attack-reports/exercise/{exerciseId}/report/{reportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/attack-reports/exercise/{exerciseId}/report/{reportId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
reportId path string(uuid) true none

Example responses

200 Response

{
  "property1": {
    "valueType": "ARRAY"
  },
  "property2": {
    "valueType": "ARRAY"
  }
}

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» additionalProperties JsonValue false none none
»» valueType string false none none

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

getTeamRankingData

Code samples

# You can also use wget
curl -X GET /widget/campaign-live/exercise/{exerciseId}/ranking \
  -H 'Accept: application/json'

GET /widget/campaign-live/exercise/{exerciseId}/ranking HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/campaign-live/exercise/{exerciseId}/ranking',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/campaign-live/exercise/{exerciseId}/ranking',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/campaign-live/exercise/{exerciseId}/ranking', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/campaign-live/exercise/{exerciseId}/ranking', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/campaign-live/exercise/{exerciseId}/ranking");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/campaign-live/exercise/{exerciseId}/ranking", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/campaign-live/exercise/{exerciseId}/ranking

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
timestamp query integer(int64) false none

Example responses

200 Response

[
  {
    "valueType": "ARRAY"
  }
]

Responses

Status Meaning Description Schema
200 OK [

{ "teamId":"3008c596-8cf1-4b68-a5f9-e089b973788d", "teamName":"Team-10", "score":10.0 }, { "teamId":"3008c596-8cf1-4b68-a5f9-e089b973788d", "teamName":"Team-20", "score":20.5 } ]|Inline|

Response Schema

Status Code 200

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

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

getCampaignLiveData

Code samples

# You can also use wget
curl -X GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId} \
  -H 'Accept: application/json'

GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/campaign-live/exercise/{exerciseId}/team/{teamId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/campaign-live/exercise/{exerciseId}/team/{teamId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/campaign-live/exercise/{exerciseId}/team/{teamId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/campaign-live/exercise/{exerciseId}/team/{teamId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/campaign-live/exercise/{exerciseId}/team/{teamId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/campaign-live/exercise/{exerciseId}/team/{teamId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
timestamp query integer(int64) false none

Example responses

200 Response

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "score": 0,
  "ranking": 0,
  "states": {
    "good": 0,
    "compromised": 0,
    "notAvailable": 0
  },
  "networkSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "color": "string",
      "states": {
        "good": 0,
        "compromised": 0,
        "notAvailable": 0
      },
      "isUnderAttack": true
    }
  ],
  "targetGroups": [
    {
      "name": "string",
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD"
            }
          ],
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "isUnderAttack": true,
          "isDeployed": true
        }
      ],
      "isUnderAttack": true
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK {

"teamId":"3008c596-8cf1-4b68-a5f9-e089b973788d", "teamName":"Team-1", "score":1486, "ranking":10, "states":{ "good":10, "compromised":5, "notAvailable":1 }, "networkSegments":[ { "id":"a6a9c875-8084-4305-9d2b-2afd9e7beece", "name":"DMZ", "states":{ "good":10, "compromised":5, "notAvailable":1 }, "isUnderAttack":true } ], "targetGroups":[ { "name":"Default", "isUnderAttack":true, "targets":[ { "id":"aaf28481-18e9-4747-8c9e-13aaad9e6550", "name":"team1_vm1_name1", "networkSegmentId":"a6a9c875-8084-4305-9d2b-2afd9e7beece", "isUnderAttack":true, "targetChecks":[ { "id":"c7c75726-0396-41a2-8bc0-295a8f4bdc2b", "name":"team1_vm1_targetCheck1", "status":"GOOD", } ] }, { "id":"7993c5c8-a735-487a-8e03-58ca98c79eb0", "name":"team1_vm5_name1", "networkSegmentId":"a6a9c875-8084-4305-9d2b-2afd9e7beece", "isUnderAttack":false, "targetChecks":[ { "id":"935ea515-b4a1-4c6f-8f3f-d3367d7ae810", "name":"team1_vm2_targetCheck1", "status":"COMPROMISED", } } ] } ] }|CampaignLiveWidgetData|

getAttackData

Code samples

# You can also use wget
curl -X GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks \
  -H 'Accept: application/json'

GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId}/attacks

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
limit query integer(int32) false none
timestamp query integer(int64) false none

Example responses

200 Response

[
  {
    "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
    "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
    "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
    "objectiveContainerName": "string",
    "status": "ATTACK_UNASSIGNED",
    "timestamp": 0
  }
]

Responses

Status Meaning Description Schema
200 OK [

{ "exerciseId":"dfec7231-6212-42b3-9de9-c271533f61cb", "teamId":"19d6820b-6afc-4b52-98f2-fa07a3e86fd3", "objectiveContainerId":"750cb533-6b31-49ed-84c3-d49db7a80382", "objectiveContainerName":"TargetCheck1", "status":"UNDER_ATTACK", "timestamp":"2017-06-21T09:31:20.619816269Z" }, { "exerciseId":"dfec7231-6212-42b3-9de9-c271533f61cb", "teamId":"19d6820b-6afc-4b52-98f2-fa07a3e86fd3", "objectiveContainerId":"e7b57e42-157e-4d44-8f02-20f59c63212f", "objectiveContainerName":"TargetGroup1", "status":"COMPROMISED", "timestamp":"2017-06-21T09:31:20.619816269Z" } ]|Inline|

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [CampaignLiveAttackWidgetData] false none none
» exerciseId string(uuid) false none none
» teamId string(uuid) false none none
» objectiveContainerId string(uuid) false none none
» objectiveContainerName string false none none
» status string false none none
» timestamp integer(int64) false none none

Enumerated Values

Property Value
status ATTACK_UNASSIGNED
status UNDER_ATTACK
status COMPROMISED
status FAILED

getReportData

Code samples

# You can also use wget
curl -X GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports \
  -H 'Accept: application/json'

GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/campaign-live/exercise/{exerciseId}/team/{teamId}/reports

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
limit query integer(int32) false none
timestamp query integer(int64) false none

Example responses

200 Response

[
  {
    "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
    "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
    "timestamp": 0,
    "type": "SITUATION_REPORT",
    "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
    "incidentType": "ONLINE"
  }
]

Responses

Status Meaning Description Schema
200 OK [

{ "exerciseId":"dfec7231-6212-42b3-9de9-c271533f61cb", "teamId":"19d6820b-6afc-4b52-98f2-fa07a3e86fd3", "timestamp":"2017-06-17T03:40:51Z", "type":"SITUATION_REPORT" }, { "exerciseId":"dfec7231-6212-42b3-9de9-c271533f61cb", "teamId":"19d6820b-6afc-4b52-98f2-fa07a3e86fd3", "timestamp":"2017-06-14T03:40:51Z", "targetId":"52cbbddd-c52d-42a0-b452-0184f4d9402c", "type":"INCIDENT", "incidentType":"INFORMATION_GATHERING" } ]|Inline|

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [CampaignLiveReportWidgetData] false none none
» exerciseId string(uuid) false none none
» teamId string(uuid) false none none
» timestamp integer(int64) false none none
» type string false none none
» targetId string(uuid) false none none
» incidentType string false none none

Enumerated Values

Property Value
type SITUATION_REPORT
type INCIDENT
incidentType ONLINE
incidentType OFFLINE
incidentType COMPROMISED
incidentType NOT_COMPROMISED

getGmaOverviewList

Code samples

# You can also use wget
curl -X GET /widget/gma \
  -H 'Accept: application/json'

GET /widget/gma HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/gma',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/gma',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/gma', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/gma', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/gma");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/gma", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/gma

Example responses

200 Response

[
  {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "ipAddress": "string",
    "registered": 0,
    "latestActivityTimestamp": 0,
    "exercises": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "name": "string",
        "teams": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ]
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [GmaOverview] false none none
» id string(uuid) false none none
» ipAddress string false none none
» registered integer(int64) false none none
» latestActivityTimestamp integer(int64) false none none
» exercises [GmaExerciseOverview] false none none
»» id string(uuid) false none none
»» name string false none none
»» teams [GmaTeamOverview] false none none
»»» id string(uuid) false none none
»»» name string false none none

saveReports

Code samples

# You can also use wget
curl -X POST /widget/incident-report/exercise/{exerciseId}/team/{teamId}

POST /widget/incident-report/exercise/{exerciseId}/team/{teamId} HTTP/1.1


fetch('/widget/incident-report/exercise/{exerciseId}/team/{teamId}',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/incident-report/exercise/{exerciseId}/team/{teamId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/incident-report/exercise/{exerciseId}/team/{teamId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/incident-report/exercise/{exerciseId}/team/{teamId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/incident-report/exercise/{exerciseId}/team/{teamId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/incident-report/exercise/{exerciseId}/team/{teamId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/incident-report/exercise/{exerciseId}/team/{teamId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getIncidentTypes

Code samples

# You can also use wget
curl -X GET /widget/incident-report/exercise/{exerciseId}/types \
  -H 'Accept: application/json'

GET /widget/incident-report/exercise/{exerciseId}/types HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/incident-report/exercise/{exerciseId}/types',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/incident-report/exercise/{exerciseId}/types',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/incident-report/exercise/{exerciseId}/types', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/incident-report/exercise/{exerciseId}/types', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/incident-report/exercise/{exerciseId}/types");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/incident-report/exercise/{exerciseId}/types", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/incident-report/exercise/{exerciseId}/types

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Example responses

200 Response

[
  "ONLINE"
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

getIncidentReports

Code samples

# You can also use wget
curl -X GET /widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report \
  -H 'Accept: application/json'

GET /widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/reporting-status/exercise/{exerciseId}/objective/{objectiveId}/incident-report

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
objectiveId path string(uuid) true none

Example responses

200 Response

[
  {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
    "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
    "username": "string",
    "timestamp": 0,
    "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
    "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
    "targetCheckId": "e6bd6631-9fae-481a-af78-b92fff1729e4",
    "incidentType": "ONLINE",
    "details": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [IncidentReport] false none none
» id string(uuid) false none none
» teamId string(uuid) false none none
» exerciseId string(uuid) false none none
» username string false none none
» timestamp integer(int64) false none none
» networkSegmentId string(uuid) false none none
» targetId string(uuid) false none none
» targetCheckId string(uuid) false none none
» incidentType string false none none
» details string false none none

Enumerated Values

Property Value
incidentType ONLINE
incidentType OFFLINE
incidentType COMPROMISED
incidentType NOT_COMPROMISED

getSpecialScoringMessageDetails

Code samples

# You can also use wget
curl -X GET /widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details \
  -H 'Accept: */*'

GET /widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details HTTP/1.1

Accept: */*


const headers = {
  'Accept':'*/*'
};

fetch('/widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => '*/*'
}

result = RestClient.get '/widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': '*/*'
}

r = requests.get('/widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"*/*"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/scoring-log/exercise/{exerciseId}/teams/{teamId}/messages/{messageId}/details

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
messageId path string(uuid) true none

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK successful operation ScoringLogSpecialMessageDetailsDTO

getReportDataById

Code samples

# You can also use wget
curl -X GET /widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId} \
  -H 'Accept: application/json'

GET /widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/situation-reports/exercise/{exerciseId}/team/{teamId}/report/{reportId}

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
reportId path string(uuid) true none

Example responses

200 Response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "username": "string",
  "timestamp": 0,
  "reportText": "string"
}

Responses

Status Meaning Description Schema
200 OK successful operation SituationReport

saveSpecialScore

Code samples

# You can also use wget
curl -X POST /widget/special-scoring/exercise/{exerciseId}

POST /widget/special-scoring/exercise/{exerciseId} HTTP/1.1


fetch('/widget/special-scoring/exercise/{exerciseId}',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/special-scoring/exercise/{exerciseId}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/special-scoring/exercise/{exerciseId}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/special-scoring/exercise/{exerciseId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/special-scoring/exercise/{exerciseId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/special-scoring/exercise/{exerciseId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/special-scoring/exercise/{exerciseId}

Saves submitted special score for the given team

{ "teamId":"string/uuid", "score":"(+/-)int", "description":"string" }

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getLatest

Code samples

# You can also use wget
curl -X GET /widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest \
  -H 'Accept: application/json'

GET /widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/team-timeline/exercise/{exerciseId}/team/{teamId}/latest

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none

Example responses

200 Response

[
  {
    "valueType": "ARRAY"
  }
]

Responses

Status Meaning Description Schema
200 OK [

{ "category":"TOTAL", "scores":[ { "timestamp":"2017-06-22T09:16:12.189Z", "value":1300.6, "isEndex":true } ] }, { "category":"AVAILABILITY", "scores":[ { "timestamp":"2017-06-22T09:15:12.189Z", "value":1246.0, "isEndex":true } ] }, { "category":"ATTACK_REPORTS", "scores":[ { "timestamp":"2017-06-22T09:15:12.189Z", "value":105.1, "isEndex":true } ] } ]|Inline|

Response Schema

Status Code 200

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

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

assignTargetChecks

Code samples

# You can also use wget
curl -X POST /widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks

POST /widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks HTTP/1.1


fetch('/widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/target-status/exercise/{exerciseId}/team/{teamId}/target/{targetId}/assign-checks

Parameters

Name In Type Required Description
exerciseId path string(uuid) true none
teamId path string(uuid) true none
targetId path string(uuid) true none

Responses

Status Meaning Description Schema
default Default successful operation None

getUsers

Code samples

# You can also use wget
curl -X GET /widget/users \
  -H 'Accept: application/json'

GET /widget/users HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/users',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/users',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/users', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/users', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/users");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/users

Example responses

200 Response

[
  {
    "username": "string",
    "fullName": "string",
    "origin": "LDAP"
  }
]

Responses

Status Meaning Description Schema
200 OK successful operation Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [UserListDTO] false none none
» username string false none none
» fullName string false none none
» origin string false none none

Enumerated Values

Property Value
origin LDAP
origin LOCAL
origin OBSERVER
origin UNKNOWN
origin EXTERNAL

createUser

Code samples

# You can also use wget
curl -X POST /widget/users

POST /widget/users HTTP/1.1


fetch('/widget/users',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/users',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/users')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/users', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/users");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/users

Responses

Status Meaning Description Schema
default Default successful operation None

getUser

Code samples

# You can also use wget
curl -X GET /widget/users/{username} \
  -H 'Accept: application/json'

GET /widget/users/{username} HTTP/1.1

Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('/widget/users/{username}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/widget/users/{username}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/widget/users/{username}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/widget/users/{username}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/users/{username}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/widget/users/{username}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /widget/users/{username}

Parameters

Name In Type Required Description
username path string true none

Example responses

200 Response

{
  "username": "string",
  "fullName": "string",
  "roles": [
    {
      "code": "string",
      "description": "string",
      "targetsByDomain": {
        "property1": [
          "string"
        ],
        "property2": [
          "string"
        ]
      }
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK successful operation UserDetailDTO

saveRole

Code samples

# You can also use wget
curl -X POST /widget/users/{username}/roles

POST /widget/users/{username}/roles HTTP/1.1


fetch('/widget/users/{username}/roles',
{
  method: 'POST'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.post '/widget/users/{username}/roles',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.post('/widget/users/{username}/roles')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/widget/users/{username}/roles', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/users/{username}/roles");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/widget/users/{username}/roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /widget/users/{username}/roles

Saves the given user role

Overwrites any existing domain targets by what is given in the payload

Parameters

Name In Type Required Description
username path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

removeRole

Code samples

# You can also use wget
curl -X DELETE /widget/users/{username}/roles/{code}

DELETE /widget/users/{username}/roles/{code} HTTP/1.1


fetch('/widget/users/{username}/roles/{code}',
{
  method: 'DELETE'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

result = RestClient.delete '/widget/users/{username}/roles/{code}',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.delete('/widget/users/{username}/roles/{code}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/widget/users/{username}/roles/{code}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/widget/users/{username}/roles/{code}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/widget/users/{username}/roles/{code}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /widget/users/{username}/roles/{code}

Removes the given user role

Parameters

Name In Type Required Description
username path string true none
code path string true none

Responses

Status Meaning Description Schema
default Default successful operation None

Schemas

ActiveMqAuthentication

{
  "type": "SESSION_TOKEN",
  "brokerUrl": "string",
  "username": "string",
  "password": "string"
}

Properties

allOf - discriminator: IntegrationAuthentication.type

Name Type Required Restrictions Description
anonymous IntegrationAuthentication false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» brokerUrl string false none none
» username string false none none
» password string false none none

ActiveTime

{
  "startTime": 0,
  "endTime": 0
}

Properties

Name Type Required Restrictions Description
startTime integer(int64) false none none
endTime integer(int64) false none none

AdvancedScoringLogMessageData

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "category": "TOTAL",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "targetObjectId": "0736fe8b-41d3-4e16-8748-96fb9cfaaac8",
  "targetObjectName": "string",
  "targetObjectType": "TARGET",
  "score": 0,
  "timestamp": 0
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
exerciseId string(uuid) false none none
category string false none none
teamId string(uuid) false none none
teamName string false none none
targetObjectId string(uuid) false none none
targetObjectName string false none none
targetObjectType string false none none
score number(double) false none none
timestamp integer(int64) false none none

Enumerated Values

Property Value
category TOTAL
category SPECIAL
category ATTACK_REPORTS
category AVAILABILITY
category INCIDENT_REPORTS
category SITUATION_REPORTS
category RESTORE_FROM_BACKUP
category USE_HINT
category ABANDON_TASK
category SOLVE_TASK
targetObjectType TARGET
targetObjectType TARGET_CHECK
targetObjectType TARGET_GROUP
targetObjectType TASK

AdvancedScoringLogWidgetDataDTO

{
  "meta": {
    "offset": 0,
    "limit": 0,
    "totalCount": 0,
    "timestamp": 0
  },
  "data": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
      "category": "TOTAL",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "targetObjectId": "0736fe8b-41d3-4e16-8748-96fb9cfaaac8",
      "targetObjectName": "string",
      "targetObjectType": "TARGET",
      "score": 0,
      "timestamp": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
meta MetaData false none none
data [AdvancedScoringLogMessageData] false none none

Annotation

{}

Properties

None

AnnotationIntrospector

{}

Properties

None

ApiKeyAuthentication

{
  "type": "SESSION_TOKEN",
  "apiKey": "string"
}

Properties

allOf - discriminator: IntegrationAuthentication.type

Name Type Required Restrictions Description
anonymous IntegrationAuthentication false none none

and

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

ApiToken

{
  "name": "string",
  "value": "string",
  "timestamp": 0,
  "signingKey": {
    "value": "string",
    "timestamp": 0
  }
}

Properties

Name Type Required Restrictions Description
name string false none none
value string false none none
timestamp integer(int64) false none none
signingKey SigningKey false none none

ArrayBuilders

{
  "byteBuilder": {},
  "booleanBuilder": {},
  "doubleBuilder": {},
  "intBuilder": {},
  "floatBuilder": {},
  "shortBuilder": {},
  "longBuilder": {}
}

Properties

Name Type Required Restrictions Description
byteBuilder ByteBuilder false none none
booleanBuilder BooleanBuilder false none none
doubleBuilder DoubleBuilder false none none
intBuilder IntBuilder false none none
floatBuilder FloatBuilder false none none
shortBuilder ShortBuilder false none none
longBuilder LongBuilder false none none

AssignableRolesDTO

{
  "roles": [
    {
      "code": "string",
      "description": "string",
      "domains": [
        "GN_EXERCISE"
      ]
    }
  ],
  "targetsByDomain": {
    "property1": [
      {
        "targets": [
          {
            "id": "string",
            "name": "string"
          }
        ],
        "parentDomain": "GN_EXERCISE",
        "parentTargetId": "string",
        "parentTargetName": "string"
      }
    ],
    "property2": [
      {
        "targets": [
          {
            "id": "string",
            "name": "string"
          }
        ],
        "parentDomain": "GN_EXERCISE",
        "parentTargetId": "string",
        "parentTargetName": "string"
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
roles [RoleListItem] false none none
targetsByDomain object false none none
» additionalProperties [TargetsDTO] false none none

AttackCampaignObjective

{
  "type": "TARGET_CHECK",
  "name": "string",
  "category": "NETWORKING",
  "teams": [
    {
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
      "objectiveUserName": "string",
      "objectiveStatus": "NOT_COMPROMISED",
      "targetCheckAvailabilityStatus": true,
      "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
      "userAssignmentId": "5cbec838-7673-4a99-92c7-f2aeed4a48c2",
      "reportCount": 0,
      "attackAttempted": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
type string false none none
name string false none none
category string false none none
teams [AttackCampaignObjectiveTeam] false none none

Enumerated Values

Property Value
type TARGET_CHECK
type TARGET_GROUP
category NETWORKING
category CLIENT_SIDE
category WEB

AttackCampaignObjectiveTeam

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
  "objectiveUserName": "string",
  "objectiveStatus": "NOT_COMPROMISED",
  "targetCheckAvailabilityStatus": true,
  "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
  "userAssignmentId": "5cbec838-7673-4a99-92c7-f2aeed4a48c2",
  "reportCount": 0,
  "attackAttempted": true
}

Properties

Name Type Required Restrictions Description
teamId string(uuid) false none none
teamName string false none none
objectiveContainerId string(uuid) false none none
objectiveUserName string false none none
objectiveStatus string false none none
targetCheckAvailabilityStatus boolean false none none
objectiveId string(uuid) false none none
userAssignmentId string(uuid) false none none
reportCount integer(int32) false none none
attackAttempted boolean false none none

Enumerated Values

Property Value
objectiveStatus NOT_COMPROMISED
objectiveStatus COMPROMISED
objectiveStatus PENDING_COMPROMISED
objectiveStatus UNABLE_TO_COMPROMISE

AttackCampaignUserAssignment

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
  "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
  "username": "string",
  "timestamp": 0,
  "unassigned": 0
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
exerciseId string(uuid) false none none
teamId string(uuid) false none none
objectiveContainerId string(uuid) false none none
objectiveId string(uuid) false none none
username string false none none
timestamp integer(int64) false none none
unassigned integer(int64) false none none

AttackCampaignWidgetData

{
  "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
  "campaignPhaseName": "string",
  "objectives": [
    {
      "type": "TARGET_CHECK",
      "name": "string",
      "category": "NETWORKING",
      "teams": [
        {
          "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
          "teamName": "string",
          "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
          "objectiveUserName": "string",
          "objectiveStatus": "NOT_COMPROMISED",
          "targetCheckAvailabilityStatus": true,
          "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
          "userAssignmentId": "5cbec838-7673-4a99-92c7-f2aeed4a48c2",
          "reportCount": 0,
          "attackAttempted": true
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
campaignPhaseId string(uuid) false none none
campaignPhaseName string false none none
objectives [AttackCampaignObjective] false none none

AttackReportsWidgetData

{
  "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "status": "PENDING_CONFIRMATION",
  "whiteTeamMember": "string",
  "timestamp": 0,
  "feedback": "string",
  "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
  "objectiveContainerName": "string",
  "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
  "objectiveName": "string",
  "campaignPhaseName": "string",
  "objectiveStatus": "NOT_COMPROMISED",
  "objectiveReportsCount": 0
}

Properties

Name Type Required Restrictions Description
reportId string(uuid) false none none
teamId string(uuid) false none none
teamName string false none none
status string false none none
whiteTeamMember string false none none
timestamp integer(int64) false none none
feedback string false none none
objectiveContainerId string(uuid) false none none
objectiveContainerName string false none none
objectiveId string(uuid) false none none
objectiveName string false none none
campaignPhaseName string false none none
objectiveStatus string false none none
objectiveReportsCount integer(int32) false none none

Enumerated Values

Property Value
status PENDING_CONFIRMATION
status CONFIRMED
status DENIED
objectiveStatus NOT_COMPROMISED
objectiveStatus COMPROMISED
objectiveStatus PENDING_COMPROMISED
objectiveStatus UNABLE_TO_COMPROMISE

AuthDTO

{
  "username": "string",
  "fullName": "string",
  "loginOrigin": "LDAP",
  "permissions": [
    "string"
  ],
  "redirectUrl": "string",
  "isAdmin": true
}

Properties

Name Type Required Restrictions Description
username string false none none
fullName string false none none
loginOrigin string false none none
permissions [string] false none none
redirectUrl string false none none
isAdmin boolean false read-only none

Enumerated Values

Property Value
loginOrigin LDAP
loginOrigin LOCAL
loginOrigin OBSERVER
loginOrigin UNKNOWN
loginOrigin EXTERNAL

Base64Variant

{
  "name": "string",
  "maxLineLength": 0,
  "paddingByte": "string",
  "paddingChar": "string"
}

Properties

Name Type Required Restrictions Description
name string false none none
maxLineLength integer(int32) false none none
paddingByte string(byte) false none none
paddingChar string false none none

BlueTeam

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "ldapGroup": "string",
  "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a",
  "targetGroups": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "hostname": "string",
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD",
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ],
          "isDeployed": true
        }
      ]
    }
  ],
  "avatarFileId": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
ldapGroup string false none none
gmaId string(uuid) false none none
targetGroups [TargetGroup] false none none
avatarFileId string false none none

BooleanBuilder

{}

Properties

None

ByteBuilder

{}

Properties

None

CTFAssessmentReport

{
  "title": "string",
  "details": "string",
  "usernames": [
    "string"
  ],
  "startTime": 0,
  "endTime": 0,
  "maxTimeMs": 0,
  "taskAvgTimeMs": 0,
  "scoreReport": {
    "scoreByCategory": {
      "property1": 0,
      "property2": 0
    },
    "scoreEvents": [
      {
        "type": "ANSWER",
        "taskCategory": "string",
        "source": "TASK_EVENT",
        "eventScore": 0,
        "totalScore": 0,
        "timestamp": 0,
        "taskName": "string"
      }
    ],
    "totalScore": 0
  },
  "tasksTotal": 0,
  "tasksSolved": 0,
  "progressByCategory": {
    "property1": 0,
    "property2": 0
  },
  "totalProgress": 0,
  "hintsTotal": 0,
  "hintsUsed": 0,
  "wrongAnswers": 0,
  "abandonedTasks": 0,
  "teamTasksOverview": {
    "teamName": "string",
    "position": 0,
    "categories": [
      {
        "category": "string",
        "tasks": [
          {
            "status": "ABANDONED",
            "title": "string",
            "score": 0,
            "usedHints": 0,
            "maxHints": 0,
            "timeSpentMs": 0
          }
        ]
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
title string false none none
details string false none none
usernames [string] false none none
startTime integer(int64) false none none
endTime integer(int64) false none none
maxTimeMs integer(int64) false none none
taskAvgTimeMs integer(int64) false none none
scoreReport ScoreReport false none none
tasksTotal integer(int32) false none none
tasksSolved integer(int32) false none none
progressByCategory object false none none
» additionalProperties integer(int32) false none none
totalProgress integer(int32) false none none
hintsTotal integer(int32) false none none
hintsUsed integer(int32) false none none
wrongAnswers integer(int32) false none none
abandonedTasks integer(int32) false none none
teamTasksOverview CTFTeamOverviewDTO false none none

CTFBlueTeam

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "ldapGroup": "string",
  "tasks": [
    {
      "niceIds": {
        "taskIds": [
          "string"
        ],
        "knowledgeIds": [
          "string"
        ],
        "skillIds": [
          "string"
        ],
        "abilityIds": [
          "string"
        ]
      },
      "type": "SINGLE_ANSWER",
      "description": "string",
      "requiredTaskIds": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "hostname": "string",
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD",
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ],
          "isDeployed": true
        }
      ],
      "question": "string",
      "title": "string",
      "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
      "category": "string",
      "hints": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "content": "string",
          "penalty": 0
        }
      ],
      "score": 0,
      "isLocked": true
    }
  ],
  "avatarFileId": "string",
  "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
ldapGroup string false none none
tasks [ICTFTask] false none none
avatarFileId string false none none
gmaId string(uuid) false none none

CTFCategoryDTO

{
  "category": "string",
  "name": "string",
  "tasks": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "type": "SINGLE_ANSWER",
      "title": "string",
      "score": 0,
      "teamsSolved": 0,
      "status": "ABANDONED",
      "availableHints": 0,
      "usedHintPoints": 0,
      "requiredTasks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "title": "string"
        }
      ],
      "niceIds": {
        "taskIds": [
          "string"
        ],
        "knowledgeIds": [
          "string"
        ],
        "skillIds": [
          "string"
        ],
        "abilityIds": [
          "string"
        ]
      },
      "targets": [
        {
          "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
          "targetName": "string",
          "vmId": "f1446e55-23f6-4461-a5de-ba794da4dde9",
          "powerState": "POWERED_OFF"
        }
      ],
      "answerCrossUsageDetected": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
category string false none none
name string false none none
tasks [CTFTaskDTO] false none none

CTFExercise

{
  "teamSettingsEnabled": true,
  "networkSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "CAMPAIGN",
  "definition": {
    "image": "string",
    "networkSegments": [
      {
        "name": "string",
        "description": "string",
        "colorHex": "string"
      }
    ],
    "name": "string",
    "type": "CAMPAIGN",
    "description": "string",
    "gitConfiguration": {
      "url": "string",
      "authenticationType": "CREDENTIALS",
      "branch": "string"
    },
    "blueTeamLdapGroup": "string",
    "externalId": "string",
    "campaignPhases": [
      {
        "name": "string",
        "description": "string",
        "startTime": 0
      }
    ],
    "externalSource": "VLM",
    "activeTimes": [
      {
        "startTime": 0,
        "endTime": 0
      }
    ],
    "difficulty": "EASY",
    "blueTeamName": "string",
    "targetGroups": [
      {
        "name": "string",
        "username": "string",
        "objectives": [
          {
            "name": "string",
            "category": "NETWORKING",
            "campaignPhaseName": "string",
            "scoreWeight": 0,
            "sequence": 0
          }
        ],
        "targets": [
          {
            "name": "string",
            "hostname": "string",
            "networkSegmentName": "string",
            "targetChecks": [
              {
                "name": "string",
                "description": "string",
                "type": "ICMP_RESPONDER_PING",
                "ipAddress": "string",
                "parameters": [
                  {
                    "name": "string",
                    "value": "string"
                  }
                ],
                "scoreWeight": 0,
                "objectives": [
                  {
                    "name": "string",
                    "category": "NETWORKING",
                    "campaignPhaseName": "string",
                    "scoreWeight": 0,
                    "sequence": 0
                  }
                ],
                "username": "string"
              }
            ],
            "scoreBreakdown": [
              {
                "name": "TOTAL",
                "value": 0
              }
            ]
          }
        ]
      }
    ],
    "numberOfTeams": 0,
    "gmaId": [
      "497f6eca-6276-4993-bfeb-53cbbbba6f08"
    ],
    "imageId": "string",
    "whiteTeamLdapGroup": "string",
    "isTeamSettingsEnabled": true,
    "isTargetManagementEnabled": true
  },
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "externalId": "string",
  "campaignPhases": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeams": [
    {
      "avatarFileId": "string",
      "ldapGroup": "string",
      "name": "string",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a",
      "tasks": [
        {
          "niceIds": {
            "taskIds": [
              "string"
            ],
            "knowledgeIds": [
              "string"
            ],
            "skillIds": [
              "string"
            ],
            "abilityIds": [
              "string"
            ]
          },
          "type": "SINGLE_ANSWER",
          "description": "string",
          "requiredTaskIds": [
            "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          ],
          "targets": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "hostname": "string",
              "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
              "targetChecks": [
                {
                  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
                  "name": "string",
                  "status": "GOOD",
                  "username": "string"
                }
              ],
              "scoreBreakdown": [
                {
                  "name": "TOTAL",
                  "value": 0
                }
              ],
              "isDeployed": true
            }
          ],
          "question": "string",
          "title": "string",
          "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
          "category": "string",
          "hints": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "content": "string",
              "penalty": 0
            }
          ],
          "score": 0,
          "isLocked": true
        }
      ]
    }
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTargetManagementEnabled": true,
  "taskCategories": [
    {
      "code": "string",
      "name": "string",
      "icon": "string"
    }
  ],
  "durationPeriod": "string",
  "taskAbandonPenalty": 0,
  "openedTasksLimit": 0,
  "individualAssessmentIdlePeriod": "string",
  "missionDurationPeriod": "string",
  "workRoleId": "string",
  "showTeamPosition": true,
  "isNiceFrameworkSupported": true,
  "isIndividualAssessment": true
}

Properties

allOf - discriminator: IExercise.type

Name Type Required Restrictions Description
anonymous IExercise false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» blueTeams [CTFBlueTeam] false none none
» taskCategories [CTFTaskCategory] false none none
» durationPeriod string false none none
» taskAbandonPenalty number(double) false none none
» openedTasksLimit integer(int32) false none none
» individualAssessmentIdlePeriod string false none none
» missionDurationPeriod string false none none
» workRoleId string false none none
» showTeamPosition boolean false none none
» isNiceFrameworkSupported boolean false read-only none
» isIndividualAssessment boolean false read-only none

CTFExerciseDefinition

{
  "image": "string",
  "networkSegments": [
    {
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "type": "CAMPAIGN",
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "blueTeamLdapGroup": "string",
  "externalId": "string",
  "campaignPhases": [
    {
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeamName": "string",
  "targetGroups": [
    {
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseName": "string",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "name": "string",
          "hostname": "string",
          "networkSegmentName": "string",
          "targetChecks": [
            {
              "name": "string",
              "description": "string",
              "type": "ICMP_RESPONDER_PING",
              "ipAddress": "string",
              "parameters": [
                {
                  "name": "string",
                  "value": "string"
                }
              ],
              "scoreWeight": 0,
              "objectives": [
                {
                  "name": "string",
                  "category": "NETWORKING",
                  "campaignPhaseName": "string",
                  "scoreWeight": 0,
                  "sequence": 0
                }
              ],
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ]
        }
      ]
    }
  ],
  "numberOfTeams": 0,
  "gmaId": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTeamSettingsEnabled": true,
  "isTargetManagementEnabled": true,
  "tasks": [
    {
      "niceIds": {
        "taskIds": [
          "string"
        ],
        "knowledgeIds": [
          "string"
        ],
        "skillIds": [
          "string"
        ],
        "abilityIds": [
          "string"
        ]
      },
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "type": "SINGLE_ANSWER",
      "description": "string",
      "targetNamePatterns": [
        "string"
      ],
      "requiredTaskIds": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "question": "string",
      "title": "string",
      "category": "string",
      "hints": [
        {
          "content": "string",
          "penalty": 0
        }
      ],
      "score": 0,
      "isLocked": true
    }
  ],
  "durationPeriod": "string",
  "taskAbandonPenalty": 0,
  "openedTasksLimit": 0,
  "individualAssessmentIdlePeriod": "string",
  "missionDurationPeriod": "string",
  "taskCategories": [
    {
      "code": "string",
      "name": "string",
      "icon": "string"
    }
  ],
  "workRoleId": "string",
  "showTeamPosition": true,
  "isNiceFrameworkSupported": true,
  "isIndividualAssessment": true
}

Properties

allOf - discriminator: IExerciseDefinition.type

Name Type Required Restrictions Description
anonymous IExerciseDefinition false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» tasks [ICTFTaskDefinition] false none none
» durationPeriod string false none none
» taskAbandonPenalty number(double) false none none
» openedTasksLimit integer(int32) false none none
» individualAssessmentIdlePeriod string false none none
» missionDurationPeriod string false none none
» taskCategories [CTFTaskCategory] false none none
» workRoleId string false none none
» showTeamPosition boolean false none none
» isNiceFrameworkSupported boolean false read-only none
» isIndividualAssessment boolean false read-only none

CTFExerciseStatusDTO

{
  "endTime": 0,
  "totalTeams": 0,
  "leader": {
    "name": "string",
    "score": 0,
    "tasksSolved": 0
  },
  "tasksTotal": 0,
  "hintsUsed": 0,
  "hintsTotal": 0,
  "progressByCategory": {
    "property1": 0,
    "property2": 0
  }
}

Properties

Name Type Required Restrictions Description
endTime integer(int64) false none none
totalTeams integer(int32) false none none
leader ExerciseStatusLeaderDTO false none none
tasksTotal integer(int32) false none none
hintsUsed integer(int32) false none none
hintsTotal integer(int32) false none none
progressByCategory object false none none
» additionalProperties integer(int32) false none none

CTFFreeFormTask

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "type": "SINGLE_ANSWER",
  "description": "string",
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "targets": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "hostname": "string",
      "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
      "targetChecks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "status": "GOOD",
          "username": "string"
        }
      ],
      "scoreBreakdown": [
        {
          "name": "TOTAL",
          "value": 0
        }
      ],
      "isDeployed": true
    }
  ],
  "question": "string",
  "title": "string",
  "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
  "category": "string",
  "hints": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true
}

Properties

allOf - discriminator: ICTFTask.type

Name Type Required Restrictions Description
anonymous ICTFTask false none none

and

Name Type Required Restrictions Description
anonymous object false none none

CTFFreeFormTaskDefinition

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "SINGLE_ANSWER",
  "description": "string",
  "targetNamePatterns": [
    "string"
  ],
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "question": "string",
  "title": "string",
  "category": "string",
  "hints": [
    {
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true
}

Properties

allOf - discriminator: ICTFTaskDefinition.type

Name Type Required Restrictions Description
anonymous ICTFTaskDefinition false none none

and

Name Type Required Restrictions Description
anonymous object false none none

CTFGmaValidationTask

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "type": "SINGLE_ANSWER",
  "description": "string",
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "targets": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "hostname": "string",
      "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
      "targetChecks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "status": "GOOD",
          "username": "string"
        }
      ],
      "scoreBreakdown": [
        {
          "name": "TOTAL",
          "value": 0
        }
      ],
      "isDeployed": true
    }
  ],
  "question": "string",
  "title": "string",
  "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
  "category": "string",
  "hints": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true,
  "scripts": [
    {
      "script": "string",
      "args": [
        "string"
      ]
    }
  ],
  "isInputRequired": true
}

Properties

allOf - discriminator: ICTFTask.type

Name Type Required Restrictions Description
anonymous ICTFTask false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» scripts [ScriptConfiguration] false none none
» isInputRequired boolean false read-only none

CTFGmaValidationTaskDefinition

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "SINGLE_ANSWER",
  "description": "string",
  "targetNamePatterns": [
    "string"
  ],
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "question": "string",
  "title": "string",
  "category": "string",
  "hints": [
    {
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true,
  "scripts": [
    {
      "script": "string",
      "args": [
        "string"
      ]
    }
  ],
  "isInputRequired": true
}

Properties

allOf - discriminator: ICTFTaskDefinition.type

Name Type Required Restrictions Description
anonymous ICTFTaskDefinition false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» scripts [ScriptConfiguration] false none none
» isInputRequired boolean false read-only none

CTFHint

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "content": "string",
  "penalty": 0
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
content string false none none
penalty integer(int32) false none none

CTFHintDefinition

{
  "content": "string",
  "penalty": 0
}

Properties

Name Type Required Restrictions Description
content string false none none
penalty integer(int32) false none none

CTFHintUseDTO

{
  "usedHint": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "content": "string",
    "penalty": 0
  },
  "nextHintPenalty": 0
}

Properties

Name Type Required Restrictions Description
usedHint CTFHint false none none
nextHintPenalty integer(int32) false none none

CTFLatestTaskInfo

{
  "taskId": "string",
  "taskName": "string",
  "status": "ABANDONED"
}

Properties

Name Type Required Restrictions Description
taskId string false none none
taskName string false none none
status string false none none

Enumerated Values

Property Value
status ABANDONED
status IN_PROGRESS
status NOT_STARTED
status DEPENDENCIES_UNSOLVED
status VALIDATING
status SOLVED
status LOCKED

CTFLatestTeamTaskInfo

{
  "teamId": "string",
  "teamName": "string",
  "saved": 0,
  "total": 0,
  "latestTaskInfo": [
    {
      "taskId": "string",
      "taskName": "string",
      "status": "ABANDONED"
    }
  ]
}

Properties

Name Type Required Restrictions Description
teamId string false none none
teamName string false none none
saved integer(int32) false none none
total integer(int32) false none none
latestTaskInfo [CTFLatestTaskInfo] false none none

CTFLeaderboardDTO

{
  "teams": [
    {
      "teamName": "string",
      "score": 0,
      "tasks": {
        "total": 0,
        "solved": 0,
        "inProgress": 0,
        "abandoned": 0,
        "wrongSubmissions": 0
      },
      "progressByCategory": {
        "property1": 0,
        "property2": 0
      },
      "totalProgress": 0,
      "hints": {
        "used": 0,
        "total": 0
      }
    }
  ],
  "status": {
    "endTime": 0,
    "totalTeams": 0,
    "leader": {
      "name": "string",
      "score": 0,
      "tasksSolved": 0
    },
    "tasksTotal": 0,
    "hintsUsed": 0,
    "hintsTotal": 0,
    "progressByCategory": {
      "property1": 0,
      "property2": 0
    }
  }
}

Properties

Name Type Required Restrictions Description
teams [LeaderboardTeamDTO] false none none
status CTFExerciseStatusDTO false none none

CTFMissionDTO

{
  "teamCount": 0,
  "endTime": 0,
  "missionEndTime": 0,
  "tasksByCategory": [
    {
      "category": "string",
      "name": "string",
      "tasks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "type": "SINGLE_ANSWER",
          "title": "string",
          "score": 0,
          "teamsSolved": 0,
          "status": "ABANDONED",
          "availableHints": 0,
          "usedHintPoints": 0,
          "requiredTasks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "title": "string"
            }
          ],
          "niceIds": {
            "taskIds": [
              "string"
            ],
            "knowledgeIds": [
              "string"
            ],
            "skillIds": [
              "string"
            ],
            "abilityIds": [
              "string"
            ]
          },
          "targets": [
            {
              "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
              "targetName": "string",
              "vmId": "f1446e55-23f6-4461-a5de-ba794da4dde9",
              "powerState": "POWERED_OFF"
            }
          ],
          "answerCrossUsageDetected": true
        }
      ]
    }
  ],
  "openedTasksLimit": 0,
  "individualStartStop": {
    "start": 0,
    "stop": 0
  }
}

Properties

Name Type Required Restrictions Description
teamCount integer(int32) false none none
endTime integer(int64) false none none
missionEndTime integer(int64) false none none
tasksByCategory [CTFCategoryDTO] false none none
openedTasksLimit integer(int32) false none none
individualStartStop IndividualStartStop false none none

CTFNiceSummaryCategoryDTO

{
  "name": "string",
  "solved": 0,
  "unsolved": 0,
  "total": 0,
  "items": [
    {
      "id": "string",
      "tasks": [
        {
          "title": "string",
          "status": "ABANDONED",
          "category": "string"
        }
      ],
      "isSolved": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
name string false none none
solved integer(int32) false none none
unsolved integer(int32) false none none
total integer(int32) false none none
items [CTFNiceSummaryItemDTO] false none none

CTFNiceSummaryItemDTO

{
  "id": "string",
  "tasks": [
    {
      "title": "string",
      "status": "ABANDONED",
      "category": "string"
    }
  ],
  "isSolved": true
}

Properties

Name Type Required Restrictions Description
id string false none none
tasks [CTFNiceSummaryItemTaskDTO] false none none
isSolved boolean false read-only none

CTFNiceSummaryItemTaskDTO

{
  "title": "string",
  "status": "ABANDONED",
  "category": "string"
}

Properties

Name Type Required Restrictions Description
title string false none none
status string false none none
category string false none none

Enumerated Values

Property Value
status ABANDONED
status IN_PROGRESS
status NOT_STARTED
status DEPENDENCIES_UNSOLVED
status VALIDATING
status SOLVED
status LOCKED

CTFOverviewDTO

{
  "teams": [
    {
      "teamName": "string",
      "position": 0,
      "categories": [
        {
          "category": "string",
          "tasks": [
            {
              "status": "ABANDONED",
              "title": "string",
              "score": 0,
              "usedHints": 0,
              "maxHints": 0,
              "timeSpentMs": 0
            }
          ]
        }
      ]
    }
  ],
  "status": {
    "endTime": 0,
    "totalTeams": 0,
    "leader": {
      "name": "string",
      "score": 0,
      "tasksSolved": 0
    },
    "tasksTotal": 0,
    "hintsUsed": 0,
    "hintsTotal": 0,
    "progressByCategory": {
      "property1": 0,
      "property2": 0
    }
  }
}

Properties

Name Type Required Restrictions Description
teams [CTFTeamOverviewDTO] false none none
status CTFExerciseStatusDTO false none none

CTFPodiumDTO

{
  "endTime": 0,
  "teams": [
    {
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "score": 0,
      "tasksOverview": {
        "teamName": "string",
        "position": 0,
        "categories": [
          {
            "category": "string",
            "tasks": [
              {
                "status": "ABANDONED",
                "title": "string",
                "score": 0,
                "usedHints": 0,
                "maxHints": 0,
                "timeSpentMs": 0
              }
            ]
          }
        ]
      }
    }
  ]
}

Properties

Name Type Required Restrictions Description
endTime integer(int64) false none none
teams [PodiumTeamDTO] false none none

CTFTask

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "type": "SINGLE_ANSWER",
  "description": "string",
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "targets": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "hostname": "string",
      "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
      "targetChecks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "status": "GOOD",
          "username": "string"
        }
      ],
      "scoreBreakdown": [
        {
          "name": "TOTAL",
          "value": 0
        }
      ],
      "isDeployed": true
    }
  ],
  "question": "string",
  "title": "string",
  "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
  "category": "string",
  "hints": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true,
  "answer": "string"
}

Properties

allOf - discriminator: ICTFTask.type

Name Type Required Restrictions Description
anonymous ICTFTask false none none

and

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

CTFTaskBulkEventSaveResult

{
  "teamInfo": [
    {
      "teamId": "string",
      "teamName": "string",
      "saved": 0,
      "total": 0,
      "latestTaskInfo": [
        {
          "taskId": "string",
          "taskName": "string",
          "status": "ABANDONED"
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
teamInfo [CTFLatestTeamTaskInfo] false none none

CTFTaskCategory

{
  "code": "string",
  "name": "string",
  "icon": "string"
}

Properties

Name Type Required Restrictions Description
code string false none none
name string false none none
icon string false none none

CTFTaskDTO

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "SINGLE_ANSWER",
  "title": "string",
  "score": 0,
  "teamsSolved": 0,
  "status": "ABANDONED",
  "availableHints": 0,
  "usedHintPoints": 0,
  "requiredTasks": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "title": "string"
    }
  ],
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "targets": [
    {
      "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
      "targetName": "string",
      "vmId": "f1446e55-23f6-4461-a5de-ba794da4dde9",
      "powerState": "POWERED_OFF"
    }
  ],
  "answerCrossUsageDetected": true
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
type string false none none
title string false none none
score integer(int32) false none none
teamsSolved integer(int32) false none none
status string false none none
availableHints integer(int32) false none none
usedHintPoints number(double) false none none
requiredTasks [RequiredTask] false none none
niceIds NiceIds false none none
targets [TargetData] false none none
answerCrossUsageDetected boolean false none none

Enumerated Values

Property Value
type SINGLE_ANSWER
type GMA_VALIDATION
type FREE_FORM
status ABANDONED
status IN_PROGRESS
status NOT_STARTED
status DEPENDENCIES_UNSOLVED
status VALIDATING
status SOLVED
status LOCKED

CTFTaskDefinition

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "SINGLE_ANSWER",
  "description": "string",
  "targetNamePatterns": [
    "string"
  ],
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "question": "string",
  "title": "string",
  "category": "string",
  "hints": [
    {
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true,
  "answer": [
    "string"
  ]
}

Properties

allOf - discriminator: ICTFTaskDefinition.type

Name Type Required Restrictions Description
anonymous ICTFTaskDefinition false none none

and

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

CTFTaskDetailsDTO

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "SINGLE_ANSWER",
  "title": "string",
  "question": "string",
  "description": "string",
  "score": 0,
  "hintCount": 0,
  "answer": "string",
  "hints": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "content": "string",
      "penalty": 0
    }
  ],
  "status": "ABANDONED",
  "taskAbandonPenalty": 0,
  "usedHintIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "nextHintPenalty": 0,
  "penaltyPoints": 0,
  "submissions": [
    {
      "timestamp": 0,
      "teamName": "string",
      "userName": "string",
      "answer": "string",
      "score": 0,
      "feedback": "string",
      "validatorOutput": "string",
      "answerCrossUsageTeamNames": [
        "string"
      ],
      "isCorrect": true
    }
  ],
  "feedback": [
    {
      "timestamp": 0,
      "teamName": "string",
      "userName": "string",
      "feedback": "string"
    }
  ],
  "validatorOutput": "string",
  "isInputRequired": true
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
type string false none none
title string false none none
question string false none none
description string false none none
score integer(int32) false none none
hintCount integer(int32) false none none
answer string false none none
hints [CTFHint] false none none
status string false none none
taskAbandonPenalty number(double) false none none
usedHintIds [string] false none none
nextHintPenalty number(double) false none none
penaltyPoints number(double) false none none
submissions [CTFTaskSubmissionDTO] false none none
feedback [CTFTaskFeedbackDTO] false none none
validatorOutput string false none none
isInputRequired boolean false read-only none

Enumerated Values

Property Value
type SINGLE_ANSWER
type GMA_VALIDATION
type FREE_FORM
status ABANDONED
status IN_PROGRESS
status NOT_STARTED
status DEPENDENCIES_UNSOLVED
status VALIDATING
status SOLVED
status LOCKED

CTFTaskEventSaveResult

{
  "status": "ABANDONED",
  "score": 0
}

Properties

Name Type Required Restrictions Description
status string false none none
score integer(int32) false none none

Enumerated Values

Property Value
status ABANDONED
status IN_PROGRESS
status NOT_STARTED
status DEPENDENCIES_UNSOLVED
status VALIDATING
status SOLVED
status LOCKED

CTFTaskFeedbackDTO

{
  "timestamp": 0,
  "teamName": "string",
  "userName": "string",
  "feedback": "string"
}

Properties

Name Type Required Restrictions Description
timestamp integer(int64) false none none
teamName string false none none
userName string false none none
feedback string false none none

CTFTaskReportDetails

{
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "taskId": "e6e9d88a-9b63-468a-aec3-b7a11de27af8",
  "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
  "username": "string",
  "timestamp": 0,
  "answer": "string"
}

Properties

Name Type Required Restrictions Description
exerciseId string(uuid) false none none
teamId string(uuid) false none none
taskId string(uuid) false none none
reportId string(uuid) false none none
username string false none none
timestamp integer(int64) false none none
answer string false none none

CTFTaskSubmissionDTO

{
  "timestamp": 0,
  "teamName": "string",
  "userName": "string",
  "answer": "string",
  "score": 0,
  "feedback": "string",
  "validatorOutput": "string",
  "answerCrossUsageTeamNames": [
    "string"
  ],
  "isCorrect": true
}

Properties

Name Type Required Restrictions Description
timestamp integer(int64) false none none
teamName string false none none
userName string false none none
answer string false none none
score number(double) false none none
feedback string false none none
validatorOutput string false none none
answerCrossUsageTeamNames [string] false none none
isCorrect boolean false read-only none

CTFTeamOverviewDTO

{
  "teamName": "string",
  "position": 0,
  "categories": [
    {
      "category": "string",
      "tasks": [
        {
          "status": "ABANDONED",
          "title": "string",
          "score": 0,
          "usedHints": 0,
          "maxHints": 0,
          "timeSpentMs": 0
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
teamName string false none none
position integer(int32) false none none
categories [OverviewCategoryDTO] false none none

CTFTeamStatusDTO

{
  "endTime": 0,
  "missionEndTime": 0,
  "missionMaxDurationMs": 0,
  "leader": {
    "score": 0,
    "tasksSolved": 0
  },
  "teamScore": 0,
  "teamPosition": 0,
  "totalTeams": 0,
  "tasksSolved": 0,
  "tasksOpened": 0,
  "tasksLimit": 0,
  "tasksTotal": 0,
  "hintsUsed": 0,
  "hintsTotal": 0,
  "individualStartStop": {
    "start": 0,
    "stop": 0
  },
  "showTeamPosition": true
}

Properties

Name Type Required Restrictions Description
endTime integer(int64) false none none
missionEndTime integer(int64) false none none
missionMaxDurationMs integer(int64) false none none
leader TeamStatusLeaderDTO false none none
teamScore number(double) false none none
teamPosition integer(int32) false none none
totalTeams integer(int32) false none none
tasksSolved integer(int32) false none none
tasksOpened integer(int32) false none none
tasksLimit integer(int32) false none none
tasksTotal integer(int32) false none none
hintsUsed integer(int32) false none none
hintsTotal integer(int32) false none none
individualStartStop IndividualStartStop false none none
showTeamPosition boolean false none none

CampaignLiveAttackWidgetData

{
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
  "objectiveContainerName": "string",
  "status": "ATTACK_UNASSIGNED",
  "timestamp": 0
}

Properties

Name Type Required Restrictions Description
exerciseId string(uuid) false none none
teamId string(uuid) false none none
objectiveContainerId string(uuid) false none none
objectiveContainerName string false none none
status string false none none
timestamp integer(int64) false none none

Enumerated Values

Property Value
status ATTACK_UNASSIGNED
status UNDER_ATTACK
status COMPROMISED
status FAILED

CampaignLiveNetworkSegment

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "color": "string",
  "states": {
    "good": 0,
    "compromised": 0,
    "notAvailable": 0
  },
  "isUnderAttack": true
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
color string false none none
states TargetCheckStates false none none
isUnderAttack boolean false read-only none

CampaignLiveReportWidgetData

{
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "timestamp": 0,
  "type": "SITUATION_REPORT",
  "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
  "incidentType": "ONLINE"
}

Properties

Name Type Required Restrictions Description
exerciseId string(uuid) false none none
teamId string(uuid) false none none
timestamp integer(int64) false none none
type string false none none
targetId string(uuid) false none none
incidentType string false none none

Enumerated Values

Property Value
type SITUATION_REPORT
type INCIDENT
incidentType ONLINE
incidentType OFFLINE
incidentType COMPROMISED
incidentType NOT_COMPROMISED

CampaignLiveTarget

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "targetChecks": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "status": "GOOD"
    }
  ],
  "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
  "isUnderAttack": true,
  "isDeployed": true
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
targetChecks [CampaignLiveTargetCheck] false none none
networkSegmentId string(uuid) false none none
isUnderAttack boolean false read-only none
isDeployed boolean false read-only none

CampaignLiveTargetCheck

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "status": "GOOD"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
status string false none none

Enumerated Values

Property Value
status GOOD
status COMPROMISED
status NOT_AVAILABLE

CampaignLiveTargetGroup

{
  "name": "string",
  "targets": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "targetChecks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "status": "GOOD"
        }
      ],
      "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
      "isUnderAttack": true,
      "isDeployed": true
    }
  ],
  "isUnderAttack": true
}

Properties

Name Type Required Restrictions Description
name string false none none
targets [CampaignLiveTarget] false none none
isUnderAttack boolean false read-only none

CampaignLiveWidgetData

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "score": 0,
  "ranking": 0,
  "states": {
    "good": 0,
    "compromised": 0,
    "notAvailable": 0
  },
  "networkSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "color": "string",
      "states": {
        "good": 0,
        "compromised": 0,
        "notAvailable": 0
      },
      "isUnderAttack": true
    }
  ],
  "targetGroups": [
    {
      "name": "string",
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD"
            }
          ],
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "isUnderAttack": true,
          "isDeployed": true
        }
      ],
      "isUnderAttack": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
teamId string(uuid) false none none
teamName string false none none
score number(double) false none none
ranking integer(int32) false none none
states TargetCheckStates false none none
networkSegments [CampaignLiveNetworkSegment] false none none
targetGroups [CampaignLiveTargetGroup] false none none

CampaignPhase

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "description": "string",
  "startTime": 0
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
description string false none none
startTime integer(int64) false none none

CampaignPhaseDefinition

{
  "name": "string",
  "description": "string",
  "startTime": 0
}

Properties

Name Type Required Restrictions Description
name string false none none
description string false none none
startTime integer(int64) false none none

CharacterEscapes

{
  "escapeCodesForAscii": [
    0
  ]
}

Properties

Name Type Required Restrictions Description
escapeCodesForAscii [integer] false none none

ClassIntrospector

{}

Properties

None

ClassLoader

{
  "parent": {
    "parent": {},
    "name": "string",
    "unnamedModule": {
      "layer": {},
      "name": "string",
      "descriptor": {
        "open": true,
        "automatic": true
      },
      "classLoader": {},
      "annotations": [
        {}
      ],
      "declaredAnnotations": [
        {}
      ],
      "named": true,
      "packages": [
        "string"
      ]
    },
    "registeredAsParallelCapable": true,
    "definedPackages": [
      {
        "name": "string",
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "sealed": true,
        "specificationTitle": "string",
        "specificationVersion": "string",
        "specificationVendor": "string",
        "implementationTitle": "string",
        "implementationVersion": "string",
        "implementationVendor": "string"
      }
    ]
  },
  "name": "string",
  "unnamedModule": {
    "layer": {},
    "name": "string",
    "descriptor": {
      "open": true,
      "automatic": true
    },
    "classLoader": {
      "parent": {},
      "name": "string",
      "unnamedModule": {},
      "registeredAsParallelCapable": true,
      "definedPackages": [
        {
          "name": "string",
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "sealed": true,
          "specificationTitle": "string",
          "specificationVersion": "string",
          "specificationVendor": "string",
          "implementationTitle": "string",
          "implementationVersion": "string",
          "implementationVendor": "string"
        }
      ]
    },
    "annotations": [
      {}
    ],
    "declaredAnnotations": [
      {}
    ],
    "named": true,
    "packages": [
      "string"
    ]
  },
  "registeredAsParallelCapable": true,
  "definedPackages": [
    {
      "name": "string",
      "annotations": [
        {}
      ],
      "declaredAnnotations": [
        {}
      ],
      "sealed": true,
      "specificationTitle": "string",
      "specificationVersion": "string",
      "specificationVendor": "string",
      "implementationTitle": "string",
      "implementationVersion": "string",
      "implementationVendor": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
parent ClassLoader false none none
name string false none none
unnamedModule Module false none none
registeredAsParallelCapable boolean false none none
definedPackages [Package] false none none

CombinedObserverSettingsDTO

{
  "views": [
    "CAMPAIGN_LIVE"
  ],
  "isEnabled": true
}

Properties

Name Type Required Restrictions Description
views [string] false none none
isEnabled boolean false read-only none

ContextAttributes

{}

Properties

None

Currency

{
  "currencyCode": "string",
  "defaultFractionDigits": 0,
  "numericCode": 0,
  "displayName": "string",
  "symbol": "string",
  "numericCodeAsString": "string"
}

Properties

Name Type Required Restrictions Description
currencyCode string false none none
defaultFractionDigits integer(int32) false none none
numericCode integer(int32) false none none
displayName string false none none
symbol string false none none
numericCodeAsString string false none none

DateFormat

{
  "calendar": "2019-08-24T14:15:22Z",
  "numberFormat": {
    "groupingUsed": true,
    "parseIntegerOnly": true,
    "maximumIntegerDigits": 0,
    "minimumIntegerDigits": 0,
    "maximumFractionDigits": 0,
    "minimumFractionDigits": 0,
    "currency": {
      "currencyCode": "string",
      "defaultFractionDigits": 0,
      "numericCode": 0,
      "displayName": "string",
      "symbol": "string",
      "numericCodeAsString": "string"
    },
    "roundingMode": "UP"
  },
  "lenient": true,
  "timeZone": {
    "id": "string",
    "displayName": "string",
    "dstsavings": 0,
    "rawOffset": 0
  }
}

Properties

Name Type Required Restrictions Description
calendar string(date-time) false none none
numberFormat NumberFormat false none none
lenient boolean false none none
timeZone TimeZone false none none

DelRapConfiguration

{
  "integrationType": "REST"
}

Properties

allOf - discriminator: IntegrationConfiguration.integrationType

Name Type Required Restrictions Description
anonymous IntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none

DeserializationConfig

{
  "defaultPropertyInclusion": {
    "valueInclusion": "ALWAYS",
    "contentInclusion": "ALWAYS"
  },
  "annotationIntrospector": {},
  "deserializationFeatures": 0,
  "nodeFactory": {},
  "problemHandlers": {},
  "defaultVisibilityChecker": {},
  "attributes": {},
  "rootName": "string",
  "subtypeResolver": {},
  "fullRootName": {
    "empty": true,
    "simpleName": "string",
    "namespace": "string"
  },
  "handlerInstantiator": {},
  "propertyNamingStrategy": {},
  "timeZone": {
    "id": "string",
    "displayName": "string",
    "dstsavings": 0,
    "rawOffset": 0
  },
  "locale": {
    "language": "string",
    "script": "string",
    "country": "string",
    "variant": "string",
    "extensionKeys": [
      "string"
    ],
    "unicodeLocaleAttributes": [
      "string"
    ],
    "unicodeLocaleKeys": [
      "string"
    ],
    "iso3Language": "string",
    "iso3Country": "string",
    "displayLanguage": "string",
    "displayScript": "string",
    "displayCountry": "string",
    "displayVariant": "string",
    "displayName": "string"
  },
  "classIntrospector": {},
  "typeFactory": {
    "classLoader": {
      "parent": {},
      "name": "string",
      "unnamedModule": {
        "layer": {},
        "name": "string",
        "descriptor": {
          "open": true,
          "automatic": true
        },
        "classLoader": {},
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "named": true,
        "packages": [
          "string"
        ]
      },
      "registeredAsParallelCapable": true,
      "definedPackages": [
        {
          "name": "string",
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "sealed": true,
          "specificationTitle": "string",
          "specificationVersion": "string",
          "specificationVendor": "string",
          "implementationTitle": "string",
          "implementationVersion": "string",
          "implementationVendor": "string"
        }
      ]
    }
  },
  "annotationProcessingEnabled": true,
  "dateFormat": {
    "calendar": "2019-08-24T14:15:22Z",
    "numberFormat": {
      "groupingUsed": true,
      "parseIntegerOnly": true,
      "maximumIntegerDigits": 0,
      "minimumIntegerDigits": 0,
      "maximumFractionDigits": 0,
      "minimumFractionDigits": 0,
      "currency": {
        "currencyCode": "string",
        "defaultFractionDigits": 0,
        "numericCode": 0,
        "displayName": "string",
        "symbol": "string",
        "numericCodeAsString": "string"
      },
      "roundingMode": "UP"
    },
    "lenient": true,
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    }
  },
  "base64Variant": {
    "name": "string",
    "maxLineLength": 0,
    "paddingByte": "string",
    "paddingChar": "string"
  }
}

Properties

Name Type Required Restrictions Description
defaultPropertyInclusion Value false none none
annotationIntrospector AnnotationIntrospector false none none
deserializationFeatures integer(int32) false none none
nodeFactory JsonNodeFactory false none none
problemHandlers LinkedNodeDeserializationProblemHandler false none none
defaultVisibilityChecker VisibilityCheckerObject false none none
attributes ContextAttributes false none none
rootName string false none none
subtypeResolver SubtypeResolver false none none
fullRootName PropertyName false none none
handlerInstantiator HandlerInstantiator false none none
propertyNamingStrategy PropertyNamingStrategy false none none
timeZone TimeZone false none none
locale Locale false none none
classIntrospector ClassIntrospector false none none
typeFactory TypeFactory false none none
annotationProcessingEnabled boolean false none none
dateFormat DateFormat false none none
base64Variant Base64Variant false none none

DeserializationContext

{
  "annotationIntrospector": {},
  "factory": {},
  "timeZone": {
    "id": "string",
    "displayName": "string",
    "dstsavings": 0,
    "rawOffset": 0
  },
  "locale": {
    "language": "string",
    "script": "string",
    "country": "string",
    "variant": "string",
    "extensionKeys": [
      "string"
    ],
    "unicodeLocaleAttributes": [
      "string"
    ],
    "unicodeLocaleKeys": [
      "string"
    ],
    "iso3Language": "string",
    "iso3Country": "string",
    "displayLanguage": "string",
    "displayScript": "string",
    "displayCountry": "string",
    "displayVariant": "string",
    "displayName": "string"
  },
  "config": {
    "defaultPropertyInclusion": {
      "valueInclusion": "ALWAYS",
      "contentInclusion": "ALWAYS"
    },
    "annotationIntrospector": {},
    "deserializationFeatures": 0,
    "nodeFactory": {},
    "problemHandlers": {},
    "defaultVisibilityChecker": {},
    "attributes": {},
    "rootName": "string",
    "subtypeResolver": {},
    "fullRootName": {
      "empty": true,
      "simpleName": "string",
      "namespace": "string"
    },
    "handlerInstantiator": {},
    "propertyNamingStrategy": {},
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    },
    "locale": {
      "language": "string",
      "script": "string",
      "country": "string",
      "variant": "string",
      "extensionKeys": [
        "string"
      ],
      "unicodeLocaleAttributes": [
        "string"
      ],
      "unicodeLocaleKeys": [
        "string"
      ],
      "iso3Language": "string",
      "iso3Country": "string",
      "displayLanguage": "string",
      "displayScript": "string",
      "displayCountry": "string",
      "displayVariant": "string",
      "displayName": "string"
    },
    "classIntrospector": {},
    "typeFactory": {
      "classLoader": {
        "parent": {},
        "name": "string",
        "unnamedModule": {
          "layer": {},
          "name": "string",
          "descriptor": {
            "open": true,
            "automatic": true
          },
          "classLoader": {},
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "named": true,
          "packages": [
            "string"
          ]
        },
        "registeredAsParallelCapable": true,
        "definedPackages": [
          {
            "name": "string",
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "sealed": true,
            "specificationTitle": "string",
            "specificationVersion": "string",
            "specificationVendor": "string",
            "implementationTitle": "string",
            "implementationVersion": "string",
            "implementationVendor": "string"
          }
        ]
      }
    },
    "annotationProcessingEnabled": true,
    "dateFormat": {
      "calendar": "2019-08-24T14:15:22Z",
      "numberFormat": {
        "groupingUsed": true,
        "parseIntegerOnly": true,
        "maximumIntegerDigits": 0,
        "minimumIntegerDigits": 0,
        "maximumFractionDigits": 0,
        "minimumFractionDigits": 0,
        "currency": {
          "currencyCode": "string",
          "defaultFractionDigits": 0,
          "numericCode": 0,
          "displayName": "string",
          "symbol": "string",
          "numericCodeAsString": "string"
        },
        "roundingMode": "UP"
      },
      "lenient": true,
      "timeZone": {
        "id": "string",
        "displayName": "string",
        "dstsavings": 0,
        "rawOffset": 0
      }
    },
    "base64Variant": {
      "name": "string",
      "maxLineLength": 0,
      "paddingByte": "string",
      "paddingChar": "string"
    }
  },
  "parser": {
    "textLength": 0,
    "textCharacters": [
      "string"
    ],
    "text": "string",
    "schema": {
      "schemaType": "string"
    },
    "booleanValue": true,
    "byteValue": "string",
    "doubleValue": 0,
    "floatValue": 0,
    "shortValue": 0,
    "longValue": 0,
    "textOffset": 0,
    "closed": true,
    "currentValue": {},
    "numberType": "INT",
    "intValue": 0,
    "typeId": {},
    "valueAsLong": 0,
    "inputSource": {},
    "valueAsDouble": 0,
    "numberValue": {},
    "valueAsString": "string",
    "valueAsBoolean": true,
    "currentLocation": {
      "byteOffset": 0,
      "sourceRef": {},
      "lineNr": 0,
      "columnNr": 0,
      "charOffset": 0
    },
    "binaryValue": [
      "string"
    ],
    "valueAsInt": 0,
    "parsingContext": {
      "parent": {},
      "entryCount": 0,
      "currentValue": {},
      "typeDesc": "string",
      "currentIndex": 0,
      "currentName": "string"
    },
    "codec": {
      "factory": {
        "characterEscapes": {
          "escapeCodesForAscii": [
            0
          ]
        },
        "rootValueSeparator": "string",
        "formatName": "string",
        "outputDecorator": {},
        "inputDecorator": {},
        "codec": {}
      },
      "jsonFactory": {
        "characterEscapes": {
          "escapeCodesForAscii": [
            0
          ]
        },
        "rootValueSeparator": "string",
        "formatName": "string",
        "outputDecorator": {},
        "inputDecorator": {},
        "codec": {}
      }
    },
    "currentName": "string",
    "currentToken": "NOT_AVAILABLE",
    "tokenLocation": {
      "byteOffset": 0,
      "sourceRef": {},
      "lineNr": 0,
      "columnNr": 0,
      "charOffset": 0
    },
    "featureMask": 0,
    "bigIntegerValue": 0,
    "formatFeatures": 0,
    "decimalValue": 0,
    "embeddedObject": {},
    "objectId": {},
    "currentTokenId": 0,
    "expectedStartArrayToken": true,
    "expectedStartObjectToken": true,
    "lastClearedToken": "NOT_AVAILABLE"
  },
  "typeFactory": {
    "classLoader": {
      "parent": {},
      "name": "string",
      "unnamedModule": {
        "layer": {},
        "name": "string",
        "descriptor": {
          "open": true,
          "automatic": true
        },
        "classLoader": {},
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "named": true,
        "packages": [
          "string"
        ]
      },
      "registeredAsParallelCapable": true,
      "definedPackages": [
        {
          "name": "string",
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "sealed": true,
          "specificationTitle": "string",
          "specificationVersion": "string",
          "specificationVendor": "string",
          "implementationTitle": "string",
          "implementationVersion": "string",
          "implementationVendor": "string"
        }
      ]
    }
  },
  "deserializationFeatures": 0,
  "nodeFactory": {},
  "base64Variant": {
    "name": "string",
    "maxLineLength": 0,
    "paddingByte": "string",
    "paddingChar": "string"
  },
  "arrayBuilders": {
    "byteBuilder": {},
    "booleanBuilder": {},
    "doubleBuilder": {},
    "intBuilder": {},
    "floatBuilder": {},
    "shortBuilder": {},
    "longBuilder": {}
  },
  "contextualType": {
    "interface": true,
    "primitive": true,
    "interfaces": [
      {}
    ],
    "genericSignature": "string",
    "final": true,
    "abstract": true,
    "contentType": {},
    "bindings": {
      "empty": true,
      "typeParameters": [
        {}
      ]
    },
    "concrete": true,
    "referencedType": {},
    "enumType": true,
    "superClass": {},
    "throwable": true,
    "arrayType": true,
    "collectionLikeType": true,
    "contentValueHandler": {},
    "contentTypeHandler": {},
    "containerType": true,
    "valueHandler": {},
    "typeHandler": {},
    "keyType": {},
    "javaLangObject": true,
    "mapLikeType": true,
    "erasedSignature": "string",
    "typeName": "string",
    "referenceType": true
  }
}

Properties

Name Type Required Restrictions Description
annotationIntrospector AnnotationIntrospector false none none
factory DeserializerFactory false none none
timeZone TimeZone false none none
locale Locale false none none
config DeserializationConfig false none none
parser JsonParser false none none
typeFactory TypeFactory false none none
deserializationFeatures integer(int32) false none none
nodeFactory JsonNodeFactory false none none
base64Variant Base64Variant false none none
arrayBuilders ArrayBuilders false none none
contextualType JavaType false none none

DeserializerFactory

{}

Properties

None

DoubleBuilder

{}

Properties

None

Duration

{
  "seconds": 0,
  "nano": 0,
  "units": [
    {
      "duration": {
        "seconds": 0,
        "nano": 0,
        "units": [],
        "negative": true,
        "zero": true
      },
      "durationEstimated": true,
      "dateBased": true,
      "timeBased": true
    }
  ],
  "negative": true,
  "zero": true
}

Properties

Name Type Required Restrictions Description
seconds integer(int64) false none none
nano integer(int32) false none none
units [TemporalUnit] false none none
negative boolean false none none
zero boolean false none none

EmailEvent

{
  "id": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "type": "TARGET_STATUS_CHANGE",
  "subjectType": "TARGET",
  "integrationId": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "subjectId": "string",
  "mailFrom": "string",
  "mailTo": "string",
  "mailToMany": [
    "string"
  ],
  "mailSubject": "string",
  "mailBody": "string"
}

Properties

allOf - discriminator: IntegrationEvent.type

Name Type Required Restrictions Description
anonymous IntegrationEvent false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» mailFrom string false none none
» mailTo string false none none
» mailToMany [string] false none none
» mailSubject string false none none
» mailBody string false none none

EmailEventDTO

{
  "id": "string",
  "type": "TARGET_STATUS_CHANGE",
  "subjectName": "string",
  "subjectType": "TARGET",
  "integrationId": "string",
  "subjectId": "string",
  "mailFrom": "string",
  "mailTo": "string",
  "mailToMany": [
    "string"
  ],
  "mailSubject": "string",
  "mailBody": "string"
}

Properties

allOf - discriminator: IntegrationEventDTO.type

Name Type Required Restrictions Description
anonymous IntegrationEventDTO false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» mailFrom string false none none
» mailTo string false none none
» mailToMany [string] false none none
» mailSubject string false none none
» mailBody string false none none

Exercise

{
  "teamSettingsEnabled": true,
  "networkSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "CAMPAIGN",
  "definition": {
    "image": "string",
    "networkSegments": [
      {
        "name": "string",
        "description": "string",
        "colorHex": "string"
      }
    ],
    "name": "string",
    "type": "CAMPAIGN",
    "description": "string",
    "gitConfiguration": {
      "url": "string",
      "authenticationType": "CREDENTIALS",
      "branch": "string"
    },
    "blueTeamLdapGroup": "string",
    "externalId": "string",
    "campaignPhases": [
      {
        "name": "string",
        "description": "string",
        "startTime": 0
      }
    ],
    "externalSource": "VLM",
    "activeTimes": [
      {
        "startTime": 0,
        "endTime": 0
      }
    ],
    "difficulty": "EASY",
    "blueTeamName": "string",
    "targetGroups": [
      {
        "name": "string",
        "username": "string",
        "objectives": [
          {
            "name": "string",
            "category": "NETWORKING",
            "campaignPhaseName": "string",
            "scoreWeight": 0,
            "sequence": 0
          }
        ],
        "targets": [
          {
            "name": "string",
            "hostname": "string",
            "networkSegmentName": "string",
            "targetChecks": [
              {
                "name": "string",
                "description": "string",
                "type": "ICMP_RESPONDER_PING",
                "ipAddress": "string",
                "parameters": [
                  {
                    "name": "string",
                    "value": "string"
                  }
                ],
                "scoreWeight": 0,
                "objectives": [
                  {
                    "name": "string",
                    "category": "NETWORKING",
                    "campaignPhaseName": "string",
                    "scoreWeight": 0,
                    "sequence": 0
                  }
                ],
                "username": "string"
              }
            ],
            "scoreBreakdown": [
              {
                "name": "TOTAL",
                "value": 0
              }
            ]
          }
        ]
      }
    ],
    "numberOfTeams": 0,
    "gmaId": [
      "497f6eca-6276-4993-bfeb-53cbbbba6f08"
    ],
    "imageId": "string",
    "whiteTeamLdapGroup": "string",
    "isTeamSettingsEnabled": true,
    "isTargetManagementEnabled": true
  },
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "externalId": "string",
  "campaignPhases": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeams": [
    {
      "avatarFileId": "string",
      "ldapGroup": "string",
      "name": "string",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a",
      "targetGroups": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "username": "string",
          "objectives": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "category": "NETWORKING",
              "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
              "scoreWeight": 0,
              "sequence": 0
            }
          ],
          "targets": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "hostname": "string",
              "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
              "targetChecks": [
                {
                  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
                  "name": "string",
                  "status": "GOOD",
                  "username": "string"
                }
              ],
              "scoreBreakdown": [
                {
                  "name": "TOTAL",
                  "value": 0
                }
              ],
              "isDeployed": true
            }
          ]
        }
      ]
    }
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTargetManagementEnabled": true,
  "redTeamLdapGroup": "string",
  "gracePeriodInMinutes": 0,
  "pointsBudget": {
    "total": 0,
    "breakdown": [
      {
        "name": "TOTAL",
        "value": 0
      }
    ]
  },
  "expectedSituationReportsCount": 0,
  "attackFlagFileUnixPaths": [
    "string"
  ],
  "attackFlagFileWinPaths": [
    "string"
  ],
  "scoringBotUsername": "string",
  "scoringBotPassword": "string",
  "situationReportTemplate": "string",
  "incidentReportTemplate": "string",
  "disabledIncidentTypes": [
    "ONLINE"
  ],
  "isTargetCheckStatusHidden": true
}

Properties

allOf - discriminator: IExercise.type

Name Type Required Restrictions Description
anonymous IExercise false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» redTeamLdapGroup string false none none
» gracePeriodInMinutes integer(int32) false none none
» blueTeams [BlueTeam] false none none
» pointsBudget ExercisePointsBudget false none none
» expectedSituationReportsCount integer(int32) false none none
» attackFlagFileUnixPaths [string] false none none
» attackFlagFileWinPaths [string] false none none
» scoringBotUsername string false none none
» scoringBotPassword string false none none
» situationReportTemplate string false none none
» incidentReportTemplate string false none none
» disabledIncidentTypes [string] false none none
» isTargetCheckStatusHidden boolean false read-only none

ExerciseDefinition

{
  "image": "string",
  "networkSegments": [
    {
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "type": "CAMPAIGN",
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "blueTeamLdapGroup": "string",
  "externalId": "string",
  "campaignPhases": [
    {
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeamName": "string",
  "targetGroups": [
    {
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseName": "string",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "name": "string",
          "hostname": "string",
          "networkSegmentName": "string",
          "targetChecks": [
            {
              "name": "string",
              "description": "string",
              "type": "ICMP_RESPONDER_PING",
              "ipAddress": "string",
              "parameters": [
                {
                  "name": "string",
                  "value": "string"
                }
              ],
              "scoreWeight": 0,
              "objectives": [
                {
                  "name": "string",
                  "category": "NETWORKING",
                  "campaignPhaseName": "string",
                  "scoreWeight": 0,
                  "sequence": 0
                }
              ],
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ]
        }
      ]
    }
  ],
  "numberOfTeams": 0,
  "gmaId": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTeamSettingsEnabled": true,
  "isTargetManagementEnabled": true,
  "redTeamLdapGroup": "string",
  "gracePeriodInMinutes": 0,
  "pointsBudget": {
    "total": 0,
    "breakdown": [
      {
        "name": "TOTAL",
        "value": 0
      }
    ]
  },
  "expectedSituationReportsCount": 0,
  "attackFlagFileUnixPaths": [
    "string"
  ],
  "attackFlagFileWinPaths": [
    "string"
  ],
  "scoringBotUsername": "string",
  "scoringBotPassword": "string",
  "situationReportTemplate": "string",
  "incidentReportTemplate": "string",
  "disabledIncidentTypes": [
    "ONLINE"
  ],
  "isTargetCheckStatusHidden": true
}

Properties

allOf - discriminator: IExerciseDefinition.type

Name Type Required Restrictions Description
anonymous IExerciseDefinition false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» redTeamLdapGroup string false none none
» gracePeriodInMinutes integer(int32) false none none
» pointsBudget ExercisePointsBudget false none none
» expectedSituationReportsCount integer(int32) false none none
» attackFlagFileUnixPaths [string] false none none
» attackFlagFileWinPaths [string] false none none
» scoringBotUsername string false none none
» scoringBotPassword string false none none
» situationReportTemplate string false none none
» incidentReportTemplate string false none none
» disabledIncidentTypes [string] false none none
» isTargetCheckStatusHidden boolean false read-only none

ExerciseEndEvent

{
  "id": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "type": "TARGET_STATUS_CHANGE",
  "subjectType": "TARGET",
  "integrationId": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "subjectId": "string"
}

Properties

allOf - discriminator: IntegrationEvent.type

Name Type Required Restrictions Description
anonymous IntegrationEvent false none none

and

Name Type Required Restrictions Description
anonymous object false none none

ExerciseEndEventDTO

{
  "id": "string",
  "type": "TARGET_STATUS_CHANGE",
  "subjectName": "string",
  "subjectType": "TARGET",
  "integrationId": "string",
  "subjectId": "string"
}

Properties

allOf - discriminator: IntegrationEventDTO.type

Name Type Required Restrictions Description
anonymous IntegrationEventDTO false none none

and

Name Type Required Restrictions Description
anonymous object false none none

ExercisePointsBudget

{
  "total": 0,
  "breakdown": [
    {
      "name": "TOTAL",
      "value": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
total integer(int32) false none none
breakdown [ScoreBreakdown] false none none

ExerciseProgressUpdateEvent

{
  "id": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "type": "TARGET_STATUS_CHANGE",
  "subjectType": "TARGET",
  "integrationId": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "subjectId": "string"
}

Properties

allOf - discriminator: IntegrationEvent.type

Name Type Required Restrictions Description
anonymous IntegrationEvent false none none

and

Name Type Required Restrictions Description
anonymous object false none none

ExerciseProgressUpdateEventDTO

{
  "id": "string",
  "type": "TARGET_STATUS_CHANGE",
  "subjectName": "string",
  "subjectType": "TARGET",
  "integrationId": "string",
  "subjectId": "string"
}

Properties

allOf - discriminator: IntegrationEventDTO.type

Name Type Required Restrictions Description
anonymous IntegrationEventDTO false none none

and

Name Type Required Restrictions Description
anonymous object false none none

ExerciseStartEvent

{
  "id": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "type": "TARGET_STATUS_CHANGE",
  "subjectType": "TARGET",
  "integrationId": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "subjectId": "string"
}

Properties

allOf - discriminator: IntegrationEvent.type

Name Type Required Restrictions Description
anonymous IntegrationEvent false none none

and

Name Type Required Restrictions Description
anonymous object false none none

ExerciseStartEventDTO

{
  "id": "string",
  "type": "TARGET_STATUS_CHANGE",
  "subjectName": "string",
  "subjectType": "TARGET",
  "integrationId": "string",
  "subjectId": "string"
}

Properties

allOf - discriminator: IntegrationEventDTO.type

Name Type Required Restrictions Description
anonymous IntegrationEventDTO false none none

and

Name Type Required Restrictions Description
anonymous object false none none

ExerciseStatusLeaderDTO

{
  "name": "string",
  "score": 0,
  "tasksSolved": 0
}

Properties

Name Type Required Restrictions Description
name string false none none
score number(double) false none none
tasksSolved integer(int32) false none none

FilePermission

{
  "fileId": "string",
  "permissions": [
    "string"
  ],
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec"
}

Properties

Name Type Required Restrictions Description
fileId string false none none
permissions [string] false none none
exerciseId string(uuid) false none none
teamId string(uuid) false none none

FilterProvider

{}

Properties

None

FloatBuilder

{}

Properties

None

FormatSchema

{
  "schemaType": "string"
}

Properties

Name Type Required Restrictions Description
schemaType string false none none

GamenetSettingsDTO

{
  "soundOnTeamChangeEnabled": true,
  "selectedSoundId": "string",
  "ctfPodiumFirstPlaceSoundEnabled": true,
  "ctfPodiumFirstPlaceSoundId": "string",
  "ctfPodiumSecondThirdPlaceSoundEnabled": true,
  "ctfPodiumSecondThirdPlaceSoundId": "string",
  "exerciseRefreshInterval": 0,
  "scoringTimelineWidgetRefreshInterval": 0
}

Properties

Name Type Required Restrictions Description
soundOnTeamChangeEnabled boolean false none none
selectedSoundId string false none none
ctfPodiumFirstPlaceSoundEnabled boolean false none none
ctfPodiumFirstPlaceSoundId string false none none
ctfPodiumSecondThirdPlaceSoundEnabled boolean false none none
ctfPodiumSecondThirdPlaceSoundId string false none none
exerciseRefreshInterval integer(int64) false none none
scoringTimelineWidgetRefreshInterval integer(int64) false none none

GitCredentialsConfiguration

{
  "url": "string",
  "authenticationType": "CREDENTIALS",
  "branch": "string",
  "username": "string",
  "password": [
    "string"
  ]
}

Properties

allOf - discriminator: IGitConfiguration.authenticationType

Name Type Required Restrictions Description
anonymous IGitConfiguration false none none

and

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

GitSshConfiguration

{
  "url": "string",
  "authenticationType": "CREDENTIALS",
  "branch": "string",
  "sshKey": [
    "string"
  ]
}

Properties

allOf - discriminator: IGitConfiguration.authenticationType

Name Type Required Restrictions Description
anonymous IGitConfiguration false none none

and

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

GmaExerciseOverview

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "teams": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
teams [GmaTeamOverview] false none none

GmaOverview

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "ipAddress": "string",
  "registered": 0,
  "latestActivityTimestamp": 0,
  "exercises": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "teams": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string"
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
ipAddress string false none none
registered integer(int64) false none none
latestActivityTimestamp integer(int64) false none none
exercises [GmaExerciseOverview] false none none

GmaTeamOverview

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none

HandlerInstantiator

{}

Properties

None

HealthAggregatedData

{
  "timestamp": 0,
  "data": [
    {
      "type": "string",
      "name": "string",
      "description": "string",
      "checks": [
        {}
      ],
      "isUp": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
timestamp integer(int64) false none none
data [HealthAggregatedDataItem] false none none

HealthAggregatedDataItem

{
  "type": "string",
  "name": "string",
  "description": "string",
  "checks": [
    {
      "type": "string",
      "name": "string",
      "description": "string",
      "checks": [],
      "isUp": true
    }
  ],
  "isUp": true
}

Properties

Name Type Required Restrictions Description
type string false none none
name string false none none
description string false none none
checks [HealthAggregatedDataItem] false none none
isUp boolean false read-only none

HybridBlueTeam

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "ldapGroup": "string",
  "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a",
  "targetGroups": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "hostname": "string",
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD",
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ],
          "isDeployed": true
        }
      ]
    }
  ],
  "tasks": [
    {
      "niceIds": {
        "taskIds": [
          "string"
        ],
        "knowledgeIds": [
          "string"
        ],
        "skillIds": [
          "string"
        ],
        "abilityIds": [
          "string"
        ]
      },
      "type": "SINGLE_ANSWER",
      "description": "string",
      "requiredTaskIds": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "hostname": "string",
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD",
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ],
          "isDeployed": true
        }
      ],
      "question": "string",
      "title": "string",
      "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
      "category": "string",
      "hints": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "content": "string",
          "penalty": 0
        }
      ],
      "score": 0,
      "isLocked": true
    }
  ],
  "avatarFileId": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
ldapGroup string false none none
gmaId string(uuid) false none none
targetGroups [TargetGroup] false none none
tasks [ICTFTask] false none none
avatarFileId string false none none

HybridExercise

{
  "teamSettingsEnabled": true,
  "networkSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "CAMPAIGN",
  "definition": {
    "image": "string",
    "networkSegments": [
      {
        "name": "string",
        "description": "string",
        "colorHex": "string"
      }
    ],
    "name": "string",
    "type": "CAMPAIGN",
    "description": "string",
    "gitConfiguration": {
      "url": "string",
      "authenticationType": "CREDENTIALS",
      "branch": "string"
    },
    "blueTeamLdapGroup": "string",
    "externalId": "string",
    "campaignPhases": [
      {
        "name": "string",
        "description": "string",
        "startTime": 0
      }
    ],
    "externalSource": "VLM",
    "activeTimes": [
      {
        "startTime": 0,
        "endTime": 0
      }
    ],
    "difficulty": "EASY",
    "blueTeamName": "string",
    "targetGroups": [
      {
        "name": "string",
        "username": "string",
        "objectives": [
          {
            "name": "string",
            "category": "NETWORKING",
            "campaignPhaseName": "string",
            "scoreWeight": 0,
            "sequence": 0
          }
        ],
        "targets": [
          {
            "name": "string",
            "hostname": "string",
            "networkSegmentName": "string",
            "targetChecks": [
              {
                "name": "string",
                "description": "string",
                "type": "ICMP_RESPONDER_PING",
                "ipAddress": "string",
                "parameters": [
                  {
                    "name": "string",
                    "value": "string"
                  }
                ],
                "scoreWeight": 0,
                "objectives": [
                  {
                    "name": "string",
                    "category": "NETWORKING",
                    "campaignPhaseName": "string",
                    "scoreWeight": 0,
                    "sequence": 0
                  }
                ],
                "username": "string"
              }
            ],
            "scoreBreakdown": [
              {
                "name": "TOTAL",
                "value": 0
              }
            ]
          }
        ]
      }
    ],
    "numberOfTeams": 0,
    "gmaId": [
      "497f6eca-6276-4993-bfeb-53cbbbba6f08"
    ],
    "imageId": "string",
    "whiteTeamLdapGroup": "string",
    "isTeamSettingsEnabled": true,
    "isTargetManagementEnabled": true
  },
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "externalId": "string",
  "campaignPhases": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeams": [
    {
      "avatarFileId": "string",
      "ldapGroup": "string",
      "name": "string",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a",
      "targetGroups": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "username": "string",
          "objectives": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "category": "NETWORKING",
              "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
              "scoreWeight": 0,
              "sequence": 0
            }
          ],
          "targets": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "hostname": "string",
              "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
              "targetChecks": [
                {
                  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
                  "name": "string",
                  "status": "GOOD",
                  "username": "string"
                }
              ],
              "scoreBreakdown": [
                {
                  "name": "TOTAL",
                  "value": 0
                }
              ],
              "isDeployed": true
            }
          ]
        }
      ],
      "tasks": [
        {
          "niceIds": {
            "taskIds": [
              "string"
            ],
            "knowledgeIds": [
              "string"
            ],
            "skillIds": [
              "string"
            ],
            "abilityIds": [
              "string"
            ]
          },
          "type": "SINGLE_ANSWER",
          "description": "string",
          "requiredTaskIds": [
            "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          ],
          "targets": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "hostname": "string",
              "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
              "targetChecks": [
                {
                  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
                  "name": "string",
                  "status": "GOOD",
                  "username": "string"
                }
              ],
              "scoreBreakdown": [
                {
                  "name": "TOTAL",
                  "value": 0
                }
              ],
              "isDeployed": true
            }
          ],
          "question": "string",
          "title": "string",
          "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
          "category": "string",
          "hints": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "content": "string",
              "penalty": 0
            }
          ],
          "score": 0,
          "isLocked": true
        }
      ]
    }
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTargetManagementEnabled": true,
  "redTeamLdapGroup": "string",
  "gracePeriodInMinutes": 0,
  "pointsBudget": {
    "total": 0,
    "breakdown": [
      {
        "name": "TOTAL",
        "value": 0
      }
    ]
  },
  "expectedSituationReportsCount": 0,
  "attackFlagFileUnixPaths": [
    "string"
  ],
  "attackFlagFileWinPaths": [
    "string"
  ],
  "scoringBotUsername": "string",
  "scoringBotPassword": "string",
  "situationReportTemplate": "string",
  "incidentReportTemplate": "string",
  "disabledIncidentTypes": [
    "ONLINE"
  ],
  "durationPeriod": "string",
  "taskAbandonPenalty": 0,
  "openedTasksLimit": 0,
  "taskCategories": [
    {
      "code": "string",
      "name": "string",
      "icon": "string"
    }
  ],
  "individualAssessmentIdlePeriod": "string",
  "missionDurationPeriod": "string",
  "workRoleId": "string",
  "showTeamPosition": true,
  "isTargetCheckStatusHidden": true,
  "isNiceFrameworkSupported": true,
  "isIndividualAssessment": true
}

Properties

allOf - discriminator: IExercise.type

Name Type Required Restrictions Description
anonymous IExercise false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» blueTeams [HybridBlueTeam] false none none
» redTeamLdapGroup string false none none
» gracePeriodInMinutes integer(int32) false none none
» pointsBudget ExercisePointsBudget false none none
» expectedSituationReportsCount integer(int32) false none none
» attackFlagFileUnixPaths [string] false none none
» attackFlagFileWinPaths [string] false none none
» scoringBotUsername string false none none
» scoringBotPassword string false none none
» situationReportTemplate string false none none
» incidentReportTemplate string false none none
» disabledIncidentTypes [string] false none none
» durationPeriod string false none none
» taskAbandonPenalty number(double) false none none
» openedTasksLimit integer(int32) false none none
» taskCategories [CTFTaskCategory] false none none
» individualAssessmentIdlePeriod string false none none
» missionDurationPeriod string false none none
» workRoleId string false none none
» showTeamPosition boolean false none none
» isTargetCheckStatusHidden boolean false read-only none
» isNiceFrameworkSupported boolean false read-only none
» isIndividualAssessment boolean false read-only none

HybridExerciseDefinition

{
  "image": "string",
  "networkSegments": [
    {
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "type": "CAMPAIGN",
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "blueTeamLdapGroup": "string",
  "externalId": "string",
  "campaignPhases": [
    {
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeamName": "string",
  "targetGroups": [
    {
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseName": "string",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "name": "string",
          "hostname": "string",
          "networkSegmentName": "string",
          "targetChecks": [
            {
              "name": "string",
              "description": "string",
              "type": "ICMP_RESPONDER_PING",
              "ipAddress": "string",
              "parameters": [
                {
                  "name": "string",
                  "value": "string"
                }
              ],
              "scoreWeight": 0,
              "objectives": [
                {
                  "name": "string",
                  "category": "NETWORKING",
                  "campaignPhaseName": "string",
                  "scoreWeight": 0,
                  "sequence": 0
                }
              ],
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ]
        }
      ]
    }
  ],
  "numberOfTeams": 0,
  "gmaId": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTeamSettingsEnabled": true,
  "isTargetManagementEnabled": true,
  "redTeamLdapGroup": "string",
  "gracePeriodInMinutes": 0,
  "pointsBudget": {
    "total": 0,
    "breakdown": [
      {
        "name": "TOTAL",
        "value": 0
      }
    ]
  },
  "expectedSituationReportsCount": 0,
  "attackFlagFileUnixPaths": [
    "string"
  ],
  "attackFlagFileWinPaths": [
    "string"
  ],
  "scoringBotUsername": "string",
  "scoringBotPassword": "string",
  "situationReportTemplate": "string",
  "incidentReportTemplate": "string",
  "disabledIncidentTypes": [
    "ONLINE"
  ],
  "tasks": [
    {
      "niceIds": {
        "taskIds": [
          "string"
        ],
        "knowledgeIds": [
          "string"
        ],
        "skillIds": [
          "string"
        ],
        "abilityIds": [
          "string"
        ]
      },
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "type": "SINGLE_ANSWER",
      "description": "string",
      "targetNamePatterns": [
        "string"
      ],
      "requiredTaskIds": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "question": "string",
      "title": "string",
      "category": "string",
      "hints": [
        {
          "content": "string",
          "penalty": 0
        }
      ],
      "score": 0,
      "isLocked": true
    }
  ],
  "durationPeriod": "string",
  "taskAbandonPenalty": 0,
  "openedTasksLimit": 0,
  "individualAssessmentIdlePeriod": "string",
  "missionDurationPeriod": "string",
  "taskCategories": [
    {
      "code": "string",
      "name": "string",
      "icon": "string"
    }
  ],
  "workRoleId": "string",
  "showTeamPosition": true,
  "isTargetCheckStatusHidden": true,
  "isNiceFrameworkSupported": true,
  "isIndividualAssessment": true
}

Properties

allOf - discriminator: IExerciseDefinition.type

Name Type Required Restrictions Description
anonymous IExerciseDefinition false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» redTeamLdapGroup string false none none
» gracePeriodInMinutes integer(int32) false none none
» pointsBudget ExercisePointsBudget false none none
» expectedSituationReportsCount integer(int32) false none none
» attackFlagFileUnixPaths [string] false none none
» attackFlagFileWinPaths [string] false none none
» scoringBotUsername string false none none
» scoringBotPassword string false none none
» situationReportTemplate string false none none
» incidentReportTemplate string false none none
» disabledIncidentTypes [string] false none none
» tasks [ICTFTaskDefinition] false none none
» durationPeriod string false none none
» taskAbandonPenalty number(double) false none none
» openedTasksLimit integer(int32) false none none
» individualAssessmentIdlePeriod string false none none
» missionDurationPeriod string false none none
» taskCategories [CTFTaskCategory] false none none
» workRoleId string false none none
» showTeamPosition boolean false none none
» isTargetCheckStatusHidden boolean false read-only none
» isNiceFrameworkSupported boolean false read-only none
» isIndividualAssessment boolean false read-only none

IBlueTeam

{
  "avatarFileId": "string",
  "ldapGroup": "string",
  "name": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a"
}

Properties

Name Type Required Restrictions Description
avatarFileId string false none none
ldapGroup string false none none
name string false none none
id string(uuid) false none none
gmaId string(uuid) false none none

ICTFTask

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "type": "SINGLE_ANSWER",
  "description": "string",
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "targets": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "hostname": "string",
      "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
      "targetChecks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "status": "GOOD",
          "username": "string"
        }
      ],
      "scoreBreakdown": [
        {
          "name": "TOTAL",
          "value": 0
        }
      ],
      "isDeployed": true
    }
  ],
  "question": "string",
  "title": "string",
  "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
  "category": "string",
  "hints": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true
}

Properties

Name Type Required Restrictions Description
niceIds NiceIds false none none
type string false none none
description string false none none
requiredTaskIds [string] false none none
targets [Target] false none none
question string false none none
title string false none none
definitionId string(uuid) false none none
category string false none none
hints [CTFHint] false none none
score integer(int32) false none none
isLocked boolean false read-only none

Enumerated Values

Property Value
type SINGLE_ANSWER
type GMA_VALIDATION
type FREE_FORM

ICTFTaskDefinition

{
  "niceIds": {
    "taskIds": [
      "string"
    ],
    "knowledgeIds": [
      "string"
    ],
    "skillIds": [
      "string"
    ],
    "abilityIds": [
      "string"
    ]
  },
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "SINGLE_ANSWER",
  "description": "string",
  "targetNamePatterns": [
    "string"
  ],
  "requiredTaskIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "question": "string",
  "title": "string",
  "category": "string",
  "hints": [
    {
      "content": "string",
      "penalty": 0
    }
  ],
  "score": 0,
  "isLocked": true
}

Properties

Name Type Required Restrictions Description
niceIds NiceIds false none none
id string(uuid) false none none
type string false none none
description string false none none
targetNamePatterns [string] false none none
requiredTaskIds [string] false none none
question string false none none
title string false none none
category string false none none
hints [CTFHintDefinition] false none none
score integer(int32) false none none
isLocked boolean false read-only none

Enumerated Values

Property Value
type SINGLE_ANSWER
type GMA_VALIDATION
type FREE_FORM

IExercise

{
  "teamSettingsEnabled": true,
  "networkSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "CAMPAIGN",
  "definition": {
    "image": "string",
    "networkSegments": [
      {
        "name": "string",
        "description": "string",
        "colorHex": "string"
      }
    ],
    "name": "string",
    "type": "CAMPAIGN",
    "description": "string",
    "gitConfiguration": {
      "url": "string",
      "authenticationType": "CREDENTIALS",
      "branch": "string"
    },
    "blueTeamLdapGroup": "string",
    "externalId": "string",
    "campaignPhases": [
      {
        "name": "string",
        "description": "string",
        "startTime": 0
      }
    ],
    "externalSource": "VLM",
    "activeTimes": [
      {
        "startTime": 0,
        "endTime": 0
      }
    ],
    "difficulty": "EASY",
    "blueTeamName": "string",
    "targetGroups": [
      {
        "name": "string",
        "username": "string",
        "objectives": [
          {
            "name": "string",
            "category": "NETWORKING",
            "campaignPhaseName": "string",
            "scoreWeight": 0,
            "sequence": 0
          }
        ],
        "targets": [
          {
            "name": "string",
            "hostname": "string",
            "networkSegmentName": "string",
            "targetChecks": [
              {
                "name": "string",
                "description": "string",
                "type": "ICMP_RESPONDER_PING",
                "ipAddress": "string",
                "parameters": [
                  {
                    "name": "string",
                    "value": "string"
                  }
                ],
                "scoreWeight": 0,
                "objectives": [
                  {
                    "name": "string",
                    "category": "NETWORKING",
                    "campaignPhaseName": "string",
                    "scoreWeight": 0,
                    "sequence": 0
                  }
                ],
                "username": "string"
              }
            ],
            "scoreBreakdown": [
              {
                "name": "TOTAL",
                "value": 0
              }
            ]
          }
        ]
      }
    ],
    "numberOfTeams": 0,
    "gmaId": [
      "497f6eca-6276-4993-bfeb-53cbbbba6f08"
    ],
    "imageId": "string",
    "whiteTeamLdapGroup": "string",
    "isTeamSettingsEnabled": true,
    "isTargetManagementEnabled": true
  },
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "externalId": "string",
  "campaignPhases": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeams": [
    {
      "avatarFileId": "string",
      "ldapGroup": "string",
      "name": "string",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a"
    }
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTargetManagementEnabled": true
}

Properties

Name Type Required Restrictions Description
teamSettingsEnabled boolean false none none
networkSegments [NetworkSegment] false none none
name string false none none
id string(uuid) false none none
type string false none none
definition IExerciseDefinition false none none
description string false none none
gitConfiguration IGitConfiguration false none none
externalId string false none none
campaignPhases [CampaignPhase] false none none
externalSource string false none none
activeTimes [ActiveTime] false none none
difficulty string false none none
blueTeams [IBlueTeam] false none none
imageId string false none none
whiteTeamLdapGroup string false none none
isTargetManagementEnabled boolean false read-only none

Enumerated Values

Property Value
type CAMPAIGN
type CTF
type HYBRID
type UNPUBLISHED
externalSource VLM
externalSource OTHER
difficulty EASY
difficulty MEDIUM
difficulty HARD

IExerciseDefinition

{
  "image": "string",
  "networkSegments": [
    {
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "type": "CAMPAIGN",
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "blueTeamLdapGroup": "string",
  "externalId": "string",
  "campaignPhases": [
    {
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeamName": "string",
  "targetGroups": [
    {
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseName": "string",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "name": "string",
          "hostname": "string",
          "networkSegmentName": "string",
          "targetChecks": [
            {
              "name": "string",
              "description": "string",
              "type": "ICMP_RESPONDER_PING",
              "ipAddress": "string",
              "parameters": [
                {
                  "name": "string",
                  "value": "string"
                }
              ],
              "scoreWeight": 0,
              "objectives": [
                {
                  "name": "string",
                  "category": "NETWORKING",
                  "campaignPhaseName": "string",
                  "scoreWeight": 0,
                  "sequence": 0
                }
              ],
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ]
        }
      ]
    }
  ],
  "numberOfTeams": 0,
  "gmaId": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTeamSettingsEnabled": true,
  "isTargetManagementEnabled": true
}

Properties

Name Type Required Restrictions Description
image string false none none
networkSegments [NetworkSegmentDefinition] false none none
name string false none none
type string false none none
description string false none none
gitConfiguration IGitConfiguration false none none
blueTeamLdapGroup string false none none
externalId string false none none
campaignPhases [CampaignPhaseDefinition] false none none
externalSource string false none none
activeTimes [ActiveTime] false none none
difficulty string false none none
blueTeamName string false none none
targetGroups [TargetGroupDefinition] false none none
numberOfTeams integer(int32) false none none
gmaId [string] false none none
imageId string false none none
whiteTeamLdapGroup string false none none
isTeamSettingsEnabled boolean false read-only none
isTargetManagementEnabled boolean false read-only none

Enumerated Values

Property Value
type CAMPAIGN
type CTF
type HYBRID
type UNPUBLISHED
externalSource VLM
externalSource OTHER
difficulty EASY
difficulty MEDIUM
difficulty HARD

IExerciseListDTO

{
  "name": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "CAMPAIGN",
  "description": "string",
  "status": "NOT_STARTED",
  "imageId": "string",
  "isTeamSettingsEnabled": true
}

Properties

Name Type Required Restrictions Description
name string false none none
id string(uuid) false none none
type string false none none
description string false none none
status string false none none
imageId string false none none
isTeamSettingsEnabled boolean false read-only none

Enumerated Values

Property Value
type CAMPAIGN
type CTF
type HYBRID
type UNPUBLISHED
status NOT_STARTED
status RUNNING
status STOPPED
status UNPUBLISHED

IGitConfiguration

{
  "url": "string",
  "authenticationType": "CREDENTIALS",
  "branch": "string"
}

Properties

Name Type Required Restrictions Description
url string false none none
authenticationType string false none none
branch string false none none

Enumerated Values

Property Value
authenticationType CREDENTIALS
authenticationType SSH

IncidentReport

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "username": "string",
  "timestamp": 0,
  "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
  "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
  "targetCheckId": "e6bd6631-9fae-481a-af78-b92fff1729e4",
  "incidentType": "ONLINE",
  "details": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
teamId string(uuid) false none none
exerciseId string(uuid) false none none
username string false none none
timestamp integer(int64) false none none
networkSegmentId string(uuid) false none none
targetId string(uuid) false none none
targetCheckId string(uuid) false none none
incidentType string false none none
details string false none none

Enumerated Values

Property Value
incidentType ONLINE
incidentType OFFLINE
incidentType COMPROMISED
incidentType NOT_COMPROMISED

IncidentReportsWidgetData

{
  "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "status": "PENDING_CONFIRMATION",
  "whiteTeamMember": "string",
  "timestamp": 0,
  "feedback": "string",
  "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
  "targetName": "string",
  "targetCheckId": "e6bd6631-9fae-481a-af78-b92fff1729e4",
  "targetCheckName": "string",
  "incidentType": "ONLINE",
  "blueTeamMember": "string",
  "details": "string"
}

Properties

Name Type Required Restrictions Description
reportId string(uuid) false none none
teamId string(uuid) false none none
teamName string false none none
status string false none none
whiteTeamMember string false none none
timestamp integer(int64) false none none
feedback string false none none
targetId string(uuid) false none none
targetName string false none none
targetCheckId string(uuid) false none none
targetCheckName string false none none
incidentType string false none none
blueTeamMember string false none none
details string false none none

Enumerated Values

Property Value
status PENDING_CONFIRMATION
status CONFIRMED
status DENIED
incidentType ONLINE
incidentType OFFLINE
incidentType COMPROMISED
incidentType NOT_COMPROMISED

IndividualStartStop

{
  "start": 0,
  "stop": 0
}

Properties

Name Type Required Restrictions Description
start integer(int64) false none none
stop integer(int64) false none none

InjectableValues

{}

Properties

None

InputDecorator

{}

Properties

None

IntBuilder

{}

Properties

None

IntegrationAuthentication

{
  "type": "SESSION_TOKEN"
}

Properties

Name Type Required Restrictions Description
type string false none none

Enumerated Values

Property Value
type SESSION_TOKEN
type API_KEY
type ACTIVEMQ
type NOOP

IntegrationConfiguration

{
  "integrationType": "REST"
}

Properties

Name Type Required Restrictions Description
integrationType string false none none

Enumerated Values

Property Value
integrationType REST
integrationType SENDGRID
integrationType SLACK_WEBHOOK
integrationType DELRAP

IntegrationEvent

{
  "id": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "type": "TARGET_STATUS_CHANGE",
  "subjectType": "TARGET",
  "integrationId": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "subjectId": "string"
}

Properties

Name Type Required Restrictions Description
id ObjectId false none none
type string false none none
subjectType string false none none
integrationId ObjectId false none none
subjectId string false none none

Enumerated Values

Property Value
type TARGET_STATUS_CHANGE
type EMAIL
type EXERCISE_START
type EXERCISE_END
type EXERCISE_PROGRESS_UPDATE
subjectType TARGET
subjectType EMAIL
subjectType EXERCISE

IntegrationEventDTO

{
  "id": "string",
  "type": "TARGET_STATUS_CHANGE",
  "subjectName": "string",
  "subjectType": "TARGET",
  "integrationId": "string",
  "subjectId": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
type string false none none
subjectName string false none none
subjectType string false none none
integrationId string false none none
subjectId string false none none

Enumerated Values

Property Value
type TARGET_STATUS_CHANGE
type EMAIL
type EXERCISE_START
type EXERCISE_END
type EXERCISE_PROGRESS_UPDATE
subjectType TARGET
subjectType EMAIL
subjectType EXERCISE

IntegrationListItemDTO

{
  "id": "string",
  "name": "string",
  "type": "REST",
  "eventTypes": [
    "TARGET_STATUS_CHANGE"
  ],
  "baseUrl": "string",
  "events": [
    {
      "id": {
        "timestamp": 0,
        "date": "2019-08-24T14:15:22Z"
      },
      "type": "TARGET_STATUS_CHANGE",
      "subjectType": "TARGET",
      "integrationId": {
        "timestamp": 0,
        "date": "2019-08-24T14:15:22Z"
      },
      "subjectId": "string"
    }
  ],
  "authentication": {
    "type": "SESSION_TOKEN"
  },
  "configuration": {
    "integrationType": "REST"
  }
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
type string false none none
eventTypes [string] false none none
baseUrl string false none none
events [IntegrationEvent] false none none
authentication IntegrationAuthentication false none none
configuration IntegrationConfiguration false none none

Enumerated Values

Property Value
type REST
type SENDGRID
type SLACK_WEBHOOK
type DELRAP

IsaFile

{
  "id": "string",
  "name": "string",
  "extension": "string",
  "size": 0,
  "type": "AUDIO",
  "contents": [
    "string"
  ],
  "uniqueSubjectId": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
extension string false none none
size integer(int32) false none none
type string false none none
contents [string] false none none
uniqueSubjectId string false none none

Enumerated Values

Property Value
type AUDIO
type IMAGE
type VIDEO

IsaFileMetaData

{
  "id": "string",
  "name": "string",
  "size": 0
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
size integer(int32) false none none

JavaType

{
  "interface": true,
  "primitive": true,
  "interfaces": [
    {
      "interface": true,
      "primitive": true,
      "interfaces": [],
      "genericSignature": "string",
      "final": true,
      "abstract": true,
      "contentType": {},
      "bindings": {
        "empty": true,
        "typeParameters": [
          {}
        ]
      },
      "concrete": true,
      "referencedType": {},
      "enumType": true,
      "superClass": {},
      "throwable": true,
      "arrayType": true,
      "collectionLikeType": true,
      "contentValueHandler": {},
      "contentTypeHandler": {},
      "containerType": true,
      "valueHandler": {},
      "typeHandler": {},
      "keyType": {},
      "javaLangObject": true,
      "mapLikeType": true,
      "erasedSignature": "string",
      "typeName": "string",
      "referenceType": true
    }
  ],
  "genericSignature": "string",
  "final": true,
  "abstract": true,
  "contentType": {
    "interface": true,
    "primitive": true,
    "interfaces": [
      {}
    ],
    "genericSignature": "string",
    "final": true,
    "abstract": true,
    "contentType": {},
    "bindings": {
      "empty": true,
      "typeParameters": [
        {}
      ]
    },
    "concrete": true,
    "referencedType": {},
    "enumType": true,
    "superClass": {},
    "throwable": true,
    "arrayType": true,
    "collectionLikeType": true,
    "contentValueHandler": {},
    "contentTypeHandler": {},
    "containerType": true,
    "valueHandler": {},
    "typeHandler": {},
    "keyType": {},
    "javaLangObject": true,
    "mapLikeType": true,
    "erasedSignature": "string",
    "typeName": "string",
    "referenceType": true
  },
  "bindings": {
    "empty": true,
    "typeParameters": [
      {
        "interface": true,
        "primitive": true,
        "interfaces": [
          {}
        ],
        "genericSignature": "string",
        "final": true,
        "abstract": true,
        "contentType": {},
        "bindings": {},
        "concrete": true,
        "referencedType": {},
        "enumType": true,
        "superClass": {},
        "throwable": true,
        "arrayType": true,
        "collectionLikeType": true,
        "contentValueHandler": {},
        "contentTypeHandler": {},
        "containerType": true,
        "valueHandler": {},
        "typeHandler": {},
        "keyType": {},
        "javaLangObject": true,
        "mapLikeType": true,
        "erasedSignature": "string",
        "typeName": "string",
        "referenceType": true
      }
    ]
  },
  "concrete": true,
  "referencedType": {
    "interface": true,
    "primitive": true,
    "interfaces": [
      {}
    ],
    "genericSignature": "string",
    "final": true,
    "abstract": true,
    "contentType": {},
    "bindings": {
      "empty": true,
      "typeParameters": [
        {}
      ]
    },
    "concrete": true,
    "referencedType": {},
    "enumType": true,
    "superClass": {},
    "throwable": true,
    "arrayType": true,
    "collectionLikeType": true,
    "contentValueHandler": {},
    "contentTypeHandler": {},
    "containerType": true,
    "valueHandler": {},
    "typeHandler": {},
    "keyType": {},
    "javaLangObject": true,
    "mapLikeType": true,
    "erasedSignature": "string",
    "typeName": "string",
    "referenceType": true
  },
  "enumType": true,
  "superClass": {
    "interface": true,
    "primitive": true,
    "interfaces": [
      {}
    ],
    "genericSignature": "string",
    "final": true,
    "abstract": true,
    "contentType": {},
    "bindings": {
      "empty": true,
      "typeParameters": [
        {}
      ]
    },
    "concrete": true,
    "referencedType": {},
    "enumType": true,
    "superClass": {},
    "throwable": true,
    "arrayType": true,
    "collectionLikeType": true,
    "contentValueHandler": {},
    "contentTypeHandler": {},
    "containerType": true,
    "valueHandler": {},
    "typeHandler": {},
    "keyType": {},
    "javaLangObject": true,
    "mapLikeType": true,
    "erasedSignature": "string",
    "typeName": "string",
    "referenceType": true
  },
  "throwable": true,
  "arrayType": true,
  "collectionLikeType": true,
  "contentValueHandler": {},
  "contentTypeHandler": {},
  "containerType": true,
  "valueHandler": {},
  "typeHandler": {},
  "keyType": {
    "interface": true,
    "primitive": true,
    "interfaces": [
      {}
    ],
    "genericSignature": "string",
    "final": true,
    "abstract": true,
    "contentType": {},
    "bindings": {
      "empty": true,
      "typeParameters": [
        {}
      ]
    },
    "concrete": true,
    "referencedType": {},
    "enumType": true,
    "superClass": {},
    "throwable": true,
    "arrayType": true,
    "collectionLikeType": true,
    "contentValueHandler": {},
    "contentTypeHandler": {},
    "containerType": true,
    "valueHandler": {},
    "typeHandler": {},
    "keyType": {},
    "javaLangObject": true,
    "mapLikeType": true,
    "erasedSignature": "string",
    "typeName": "string",
    "referenceType": true
  },
  "javaLangObject": true,
  "mapLikeType": true,
  "erasedSignature": "string",
  "typeName": "string",
  "referenceType": true
}

Properties

Name Type Required Restrictions Description
interface boolean false none none
primitive boolean false none none
interfaces [JavaType] false none none
genericSignature string false none none
final boolean false none none
abstract boolean false none none
contentType JavaType false none none
bindings TypeBindings false none none
concrete boolean false none none
referencedType JavaType false none none
enumType boolean false none none
superClass JavaType false none none
throwable boolean false none none
arrayType boolean false none none
collectionLikeType boolean false none none
contentValueHandler object false none none
contentTypeHandler object false none none
containerType boolean false none none
valueHandler object false none none
typeHandler object false none none
keyType JavaType false none none
javaLangObject boolean false none none
mapLikeType boolean false none none
erasedSignature string false none none
typeName string false none none
referenceType boolean false none none

JsonFactory

{
  "characterEscapes": {
    "escapeCodesForAscii": [
      0
    ]
  },
  "rootValueSeparator": "string",
  "formatName": "string",
  "outputDecorator": {},
  "inputDecorator": {},
  "codec": {
    "factory": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "rootValueSeparator": "string",
      "formatName": "string",
      "outputDecorator": {},
      "inputDecorator": {},
      "codec": {}
    },
    "jsonFactory": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "rootValueSeparator": "string",
      "formatName": "string",
      "outputDecorator": {},
      "inputDecorator": {},
      "codec": {}
    }
  }
}

Properties

Name Type Required Restrictions Description
characterEscapes CharacterEscapes false none none
rootValueSeparator string false none none
formatName string false none none
outputDecorator OutputDecorator false none none
inputDecorator InputDecorator false none none
codec ObjectCodec false none none

JsonGenerator

{
  "characterEscapes": {
    "escapeCodesForAscii": [
      0
    ]
  },
  "schema": {
    "schemaType": "string"
  },
  "closed": true,
  "currentValue": {},
  "codec": {
    "factory": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "rootValueSeparator": "string",
      "formatName": "string",
      "outputDecorator": {},
      "inputDecorator": {},
      "codec": {}
    },
    "jsonFactory": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "rootValueSeparator": "string",
      "formatName": "string",
      "outputDecorator": {},
      "inputDecorator": {},
      "codec": {}
    }
  },
  "prettyPrinter": {},
  "featureMask": 0,
  "formatFeatures": 0,
  "outputTarget": {},
  "outputBuffered": 0,
  "outputContext": {
    "parent": {},
    "entryCount": 0,
    "currentValue": {},
    "typeDesc": "string",
    "currentIndex": 0,
    "currentName": "string"
  },
  "highestEscapedChar": 0
}

Properties

Name Type Required Restrictions Description
characterEscapes CharacterEscapes false none none
schema FormatSchema false none none
closed boolean false none none
currentValue object false none none
codec ObjectCodec false none none
prettyPrinter PrettyPrinter false none none
featureMask integer(int32) false none none
formatFeatures integer(int32) false none none
outputTarget object false none none
outputBuffered integer(int32) false none none
outputContext JsonStreamContext false none none
highestEscapedChar integer(int32) false none none

JsonLocation

{
  "byteOffset": 0,
  "sourceRef": {},
  "lineNr": 0,
  "columnNr": 0,
  "charOffset": 0
}

Properties

Name Type Required Restrictions Description
byteOffset integer(int64) false none none
sourceRef object false none none
lineNr integer(int32) false none none
columnNr integer(int32) false none none
charOffset integer(int64) false none none

JsonNodeFactory

{}

Properties

None

JsonParser

{
  "textLength": 0,
  "textCharacters": [
    "string"
  ],
  "text": "string",
  "schema": {
    "schemaType": "string"
  },
  "booleanValue": true,
  "byteValue": "string",
  "doubleValue": 0,
  "floatValue": 0,
  "shortValue": 0,
  "longValue": 0,
  "textOffset": 0,
  "closed": true,
  "currentValue": {},
  "numberType": "INT",
  "intValue": 0,
  "typeId": {},
  "valueAsLong": 0,
  "inputSource": {},
  "valueAsDouble": 0,
  "numberValue": {},
  "valueAsString": "string",
  "valueAsBoolean": true,
  "currentLocation": {
    "byteOffset": 0,
    "sourceRef": {},
    "lineNr": 0,
    "columnNr": 0,
    "charOffset": 0
  },
  "binaryValue": [
    "string"
  ],
  "valueAsInt": 0,
  "parsingContext": {
    "parent": {},
    "entryCount": 0,
    "currentValue": {},
    "typeDesc": "string",
    "currentIndex": 0,
    "currentName": "string"
  },
  "codec": {
    "factory": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "rootValueSeparator": "string",
      "formatName": "string",
      "outputDecorator": {},
      "inputDecorator": {},
      "codec": {}
    },
    "jsonFactory": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "rootValueSeparator": "string",
      "formatName": "string",
      "outputDecorator": {},
      "inputDecorator": {},
      "codec": {}
    }
  },
  "currentName": "string",
  "currentToken": "NOT_AVAILABLE",
  "tokenLocation": {
    "byteOffset": 0,
    "sourceRef": {},
    "lineNr": 0,
    "columnNr": 0,
    "charOffset": 0
  },
  "featureMask": 0,
  "bigIntegerValue": 0,
  "formatFeatures": 0,
  "decimalValue": 0,
  "embeddedObject": {},
  "objectId": {},
  "currentTokenId": 0,
  "expectedStartArrayToken": true,
  "expectedStartObjectToken": true,
  "lastClearedToken": "NOT_AVAILABLE"
}

Properties

Name Type Required Restrictions Description
textLength integer(int32) false none none
textCharacters [string] false none none
text string false none none
schema FormatSchema false none none
booleanValue boolean false none none
byteValue string(byte) false none none
doubleValue number(double) false none none
floatValue number(float) false none none
shortValue integer(int32) false none none
longValue integer(int64) false none none
textOffset integer(int32) false none none
closed boolean false none none
currentValue object false none none
numberType string false none none
intValue integer(int32) false none none
typeId object false none none
valueAsLong integer(int64) false none none
inputSource object false none none
valueAsDouble number(double) false none none
numberValue Number false none none
valueAsString string false none none
valueAsBoolean boolean false none none
currentLocation JsonLocation false none none
binaryValue [string] false none none
valueAsInt integer(int32) false none none
parsingContext JsonStreamContext false none none
codec ObjectCodec false none none
currentName string false none none
currentToken string false none none
tokenLocation JsonLocation false none none
featureMask integer(int32) false none none
bigIntegerValue integer false none none
formatFeatures integer(int32) false none none
decimalValue number false none none
embeddedObject object false none none
objectId object false none none
currentTokenId integer(int32) false none none
expectedStartArrayToken boolean false none none
expectedStartObjectToken boolean false none none
lastClearedToken string false none none

Enumerated Values

Property Value
numberType INT
numberType LONG
numberType BIG_INTEGER
numberType FLOAT
numberType DOUBLE
numberType BIG_DECIMAL
currentToken NOT_AVAILABLE
currentToken START_OBJECT
currentToken END_OBJECT
currentToken START_ARRAY
currentToken END_ARRAY
currentToken FIELD_NAME
currentToken VALUE_EMBEDDED_OBJECT
currentToken VALUE_STRING
currentToken VALUE_NUMBER_INT
currentToken VALUE_NUMBER_FLOAT
currentToken VALUE_TRUE
currentToken VALUE_FALSE
currentToken VALUE_NULL
lastClearedToken NOT_AVAILABLE
lastClearedToken START_OBJECT
lastClearedToken END_OBJECT
lastClearedToken START_ARRAY
lastClearedToken END_ARRAY
lastClearedToken FIELD_NAME
lastClearedToken VALUE_EMBEDDED_OBJECT
lastClearedToken VALUE_STRING
lastClearedToken VALUE_NUMBER_INT
lastClearedToken VALUE_NUMBER_FLOAT
lastClearedToken VALUE_TRUE
lastClearedToken VALUE_FALSE
lastClearedToken VALUE_NULL

JsonSerializer

{
  "unwrappingSerializer": true
}

Properties

Name Type Required Restrictions Description
unwrappingSerializer boolean false none none

JsonSerializerObject

{
  "delegatee": {
    "delegatee": {},
    "unwrappingSerializer": true
  },
  "unwrappingSerializer": true
}

Properties

Name Type Required Restrictions Description
delegatee JsonSerializerObject false none none
unwrappingSerializer boolean false none none

JsonStreamContext

{
  "parent": {
    "parent": {},
    "entryCount": 0,
    "currentValue": {},
    "typeDesc": "string",
    "currentIndex": 0,
    "currentName": "string"
  },
  "entryCount": 0,
  "currentValue": {},
  "typeDesc": "string",
  "currentIndex": 0,
  "currentName": "string"
}

Properties

Name Type Required Restrictions Description
parent JsonStreamContext false none none
entryCount integer(int32) false none none
currentValue object false none none
typeDesc string false none none
currentIndex integer(int32) false none none
currentName string false none none

JsonValue

{
  "valueType": "ARRAY"
}

Properties

Name Type Required Restrictions Description
valueType string false none none

Enumerated Values

Property Value
valueType ARRAY
valueType OBJECT
valueType STRING
valueType NUMBER
valueType TRUE
valueType FALSE
valueType NULL

LdapGroupMappingDTO

{
  "role": "string",
  "distinguishedName": "string"
}

Properties

Name Type Required Restrictions Description
role string false none none
distinguishedName string false none none

LdapSettingsDTO

{
  "principal": "string",
  "searchBase": "string",
  "principalSuffix": "string",
  "urls": [
    "string"
  ],
  "groupMappings": [
    {
      "role": "string",
      "distinguishedName": "string"
    }
  ],
  "useSavedPassword": true
}

Properties

Name Type Required Restrictions Description
principal string false none none
searchBase string false none none
principalSuffix string false none none
urls [string] false none none
groupMappings [LdapGroupMappingDTO] false none none
useSavedPassword boolean false none none

LeaderboardHints

{
  "used": 0,
  "total": 0
}

Properties

Name Type Required Restrictions Description
used integer(int32) false none none
total integer(int32) false none none

LeaderboardTasks

{
  "total": 0,
  "solved": 0,
  "inProgress": 0,
  "abandoned": 0,
  "wrongSubmissions": 0
}

Properties

Name Type Required Restrictions Description
total integer(int32) false none none
solved integer(int32) false none none
inProgress integer(int32) false none none
abandoned integer(int32) false none none
wrongSubmissions integer(int32) false none none

LeaderboardTeamDTO

{
  "teamName": "string",
  "score": 0,
  "tasks": {
    "total": 0,
    "solved": 0,
    "inProgress": 0,
    "abandoned": 0,
    "wrongSubmissions": 0
  },
  "progressByCategory": {
    "property1": 0,
    "property2": 0
  },
  "totalProgress": 0,
  "hints": {
    "used": 0,
    "total": 0
  }
}

Properties

Name Type Required Restrictions Description
teamName string false none none
score number(double) false none none
tasks LeaderboardTasks false none none
progressByCategory object false none none
» additionalProperties integer(int32) false none none
totalProgress integer(int32) false none none
hints LeaderboardHints false none none

LinkedNode

{}

Properties

None

LinkedNodeDeserializationProblemHandler

{}

Properties

None

Locale

{
  "language": "string",
  "script": "string",
  "country": "string",
  "variant": "string",
  "extensionKeys": [
    "string"
  ],
  "unicodeLocaleAttributes": [
    "string"
  ],
  "unicodeLocaleKeys": [
    "string"
  ],
  "iso3Language": "string",
  "iso3Country": "string",
  "displayLanguage": "string",
  "displayScript": "string",
  "displayCountry": "string",
  "displayVariant": "string",
  "displayName": "string"
}

Properties

Name Type Required Restrictions Description
language string false none none
script string false none none
country string false none none
variant string false none none
extensionKeys [string] false none none
unicodeLocaleAttributes [string] false none none
unicodeLocaleKeys [string] false none none
iso3Language string false none none
iso3Country string false none none
displayLanguage string false none none
displayScript string false none none
displayCountry string false none none
displayVariant string false none none
displayName string false none none

LongBuilder

{}

Properties

None

MediaMetaInfo

{
  "id": "string",
  "name": "string",
  "fileType": "AUDIO"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
fileType string false none none

Enumerated Values

Property Value
fileType AUDIO
fileType IMAGE
fileType VIDEO

MediaType

{
  "type": "string",
  "subtype": "string",
  "parameters": {
    "property1": "string",
    "property2": "string"
  },
  "wildcardType": true,
  "wildcardSubtype": true
}

Properties

Name Type Required Restrictions Description
type string false none none
subtype string false none none
parameters object false none none
» additionalProperties string false none none
wildcardType boolean false none none
wildcardSubtype boolean false none none

MetaData

{
  "offset": 0,
  "limit": 0,
  "totalCount": 0,
  "timestamp": 0
}

Properties

Name Type Required Restrictions Description
offset integer(int32) false none none
limit integer(int32) false none none
totalCount integer(int64) false none none
timestamp integer(int64) false none none

MitrePatternDTO

{
  "id": "string",
  "name": "string",
  "description": "string",
  "subTechniques": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "subTechniques": [],
      "externalReferences": [
        {
          "externalId": "string",
          "sourceName": "string",
          "url": "string"
        }
      ],
      "tacticReferences": [
        {
          "phaseName": "string"
        }
      ],
      "type": "MITRE_TACTIC",
      "isDeprecated": true,
      "isSubTechnique": true
    }
  ],
  "externalReferences": [
    {
      "externalId": "string",
      "sourceName": "string",
      "url": "string"
    }
  ],
  "tacticReferences": [
    {
      "phaseName": "string"
    }
  ],
  "type": "MITRE_TACTIC",
  "isDeprecated": true,
  "isSubTechnique": true
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
description string false none none
subTechniques [MitrePatternDTO] false none none
externalReferences [MitreReferenceDTO] false none none
tacticReferences [MitreTacticReferenceDTO] false none none
type string false none none
isDeprecated boolean false read-only none
isSubTechnique boolean false read-only none

Enumerated Values

Property Value
type MITRE_TACTIC
type MITRE_PATTERN
type MITRE_RELATIONSHIP

MitreReferenceDTO

{
  "externalId": "string",
  "sourceName": "string",
  "url": "string"
}

Properties

Name Type Required Restrictions Description
externalId string false none none
sourceName string false none none
url string false none none

MitreTacticDTO

{
  "id": "string",
  "name": "string",
  "techniques": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "subTechniques": [
        {}
      ],
      "externalReferences": [
        {
          "externalId": "string",
          "sourceName": "string",
          "url": "string"
        }
      ],
      "tacticReferences": [
        {
          "phaseName": "string"
        }
      ],
      "type": "MITRE_TACTIC",
      "isDeprecated": true,
      "isSubTechnique": true
    }
  ],
  "shortName": "string",
  "type": "MITRE_TACTIC",
  "isDeprecated": true
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
techniques [MitrePatternDTO] false none none
shortName string false none none
type string false none none
isDeprecated boolean false read-only none

Enumerated Values

Property Value
type MITRE_TACTIC
type MITRE_PATTERN
type MITRE_RELATIONSHIP

MitreTacticReferenceDTO

{
  "phaseName": "string"
}

Properties

Name Type Required Restrictions Description
phaseName string false none none

Module

{
  "layer": {},
  "name": "string",
  "descriptor": {
    "open": true,
    "automatic": true
  },
  "classLoader": {
    "parent": {},
    "name": "string",
    "unnamedModule": {
      "layer": {},
      "name": "string",
      "descriptor": {
        "open": true,
        "automatic": true
      },
      "classLoader": {},
      "annotations": [
        {}
      ],
      "declaredAnnotations": [
        {}
      ],
      "named": true,
      "packages": [
        "string"
      ]
    },
    "registeredAsParallelCapable": true,
    "definedPackages": [
      {
        "name": "string",
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "sealed": true,
        "specificationTitle": "string",
        "specificationVersion": "string",
        "specificationVendor": "string",
        "implementationTitle": "string",
        "implementationVersion": "string",
        "implementationVendor": "string"
      }
    ]
  },
  "annotations": [
    {}
  ],
  "declaredAnnotations": [
    {}
  ],
  "named": true,
  "packages": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
layer ModuleLayer false none none
name string false none none
descriptor ModuleDescriptor false none none
classLoader ClassLoader false none none
annotations [Annotation] false none none
declaredAnnotations [Annotation] false none none
named boolean false none none
packages [string] false none none

ModuleDescriptor

{
  "open": true,
  "automatic": true
}

Properties

Name Type Required Restrictions Description
open boolean false none none
automatic boolean false none none

ModuleLayer

{}

Properties

None

NetworkSegment

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "description": "string",
  "colorHex": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
description string false none none
colorHex string false none none

NetworkSegmentDefinition

{
  "name": "string",
  "description": "string",
  "colorHex": "string"
}

Properties

Name Type Required Restrictions Description
name string false none none
description string false none none
colorHex string false none none

NewsInjectData

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "title": "string",
  "description": "string",
  "timestamp": 0,
  "mediaId": "string",
  "thumbnailId": "string",
  "fileType": "AUDIO",
  "status": "PUBLISHED",
  "teams": [
    {
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "injectStatus": "PUBLISHED",
      "injectPublicationId": "string",
      "injectPublicationTimestamp": 0
    }
  ],
  "isNew": true
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
exerciseId string(uuid) false none none
title string false none none
description string false none none
timestamp integer(int64) false none none
mediaId string false none none
thumbnailId string false none none
fileType string false none none
status string false none none
teams [NewsInjectTeam] false none none
isNew boolean false read-only none

Enumerated Values

Property Value
fileType AUDIO
fileType IMAGE
fileType VIDEO
status PUBLISHED
status UNPUBLISHED

NewsInjectTeam

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "injectStatus": "PUBLISHED",
  "injectPublicationId": "string",
  "injectPublicationTimestamp": 0
}

Properties

Name Type Required Restrictions Description
teamId string(uuid) false none none
teamName string false none none
injectStatus string false none none
injectPublicationId string false none none
injectPublicationTimestamp integer(int64) false none none

Enumerated Values

Property Value
injectStatus PUBLISHED
injectStatus UNPUBLISHED

NiceIds

{
  "taskIds": [
    "string"
  ],
  "knowledgeIds": [
    "string"
  ],
  "skillIds": [
    "string"
  ],
  "abilityIds": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
taskIds [string] false none none
knowledgeIds [string] false none none
skillIds [string] false none none
abilityIds [string] false none none

NoopAuthentication

{
  "type": "SESSION_TOKEN"
}

Properties

allOf - discriminator: IntegrationAuthentication.type

Name Type Required Restrictions Description
anonymous IntegrationAuthentication false none none

and

Name Type Required Restrictions Description
anonymous object false none none

Number

{}

Properties

None

NumberFormat

{
  "groupingUsed": true,
  "parseIntegerOnly": true,
  "maximumIntegerDigits": 0,
  "minimumIntegerDigits": 0,
  "maximumFractionDigits": 0,
  "minimumFractionDigits": 0,
  "currency": {
    "currencyCode": "string",
    "defaultFractionDigits": 0,
    "numericCode": 0,
    "displayName": "string",
    "symbol": "string",
    "numericCodeAsString": "string"
  },
  "roundingMode": "UP"
}

Properties

Name Type Required Restrictions Description
groupingUsed boolean false none none
parseIntegerOnly boolean false none none
maximumIntegerDigits integer(int32) false none none
minimumIntegerDigits integer(int32) false none none
maximumFractionDigits integer(int32) false none none
minimumFractionDigits integer(int32) false none none
currency Currency false none none
roundingMode string false none none

Enumerated Values

Property Value
roundingMode UP
roundingMode DOWN
roundingMode CEILING
roundingMode FLOOR
roundingMode HALF_UP
roundingMode HALF_DOWN
roundingMode HALF_EVEN
roundingMode UNNECESSARY

ObjectCodec

{
  "factory": {
    "characterEscapes": {
      "escapeCodesForAscii": [
        0
      ]
    },
    "rootValueSeparator": "string",
    "formatName": "string",
    "outputDecorator": {},
    "inputDecorator": {},
    "codec": {
      "factory": {},
      "jsonFactory": {}
    }
  },
  "jsonFactory": {
    "characterEscapes": {
      "escapeCodesForAscii": [
        0
      ]
    },
    "rootValueSeparator": "string",
    "formatName": "string",
    "outputDecorator": {},
    "inputDecorator": {},
    "codec": {
      "factory": {},
      "jsonFactory": {}
    }
  }
}

Properties

Name Type Required Restrictions Description
factory JsonFactory false none none
jsonFactory JsonFactory false none none

ObjectId

{
  "timestamp": 0,
  "date": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
timestamp integer(int32) false none none
date string(date-time) false none none

ObjectMapper

{
  "serializerProvider": {
    "defaultNullValueSerializer": {
      "delegatee": {},
      "unwrappingSerializer": true
    },
    "annotationIntrospector": {},
    "defaultNullKeySerializer": {
      "delegatee": {},
      "unwrappingSerializer": true
    },
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    },
    "locale": {
      "language": "string",
      "script": "string",
      "country": "string",
      "variant": "string",
      "extensionKeys": [
        "string"
      ],
      "unicodeLocaleAttributes": [
        "string"
      ],
      "unicodeLocaleKeys": [
        "string"
      ],
      "iso3Language": "string",
      "iso3Country": "string",
      "displayLanguage": "string",
      "displayScript": "string",
      "displayCountry": "string",
      "displayVariant": "string",
      "displayName": "string"
    },
    "config": {
      "defaultPropertyInclusion": {
        "valueInclusion": "ALWAYS",
        "contentInclusion": "ALWAYS"
      },
      "annotationIntrospector": {},
      "defaultPrettyPrinter": {},
      "serializationInclusion": "ALWAYS",
      "serializationFeatures": 0,
      "filterProvider": {},
      "defaultVisibilityChecker": {},
      "attributes": {},
      "rootName": "string",
      "subtypeResolver": {},
      "fullRootName": {
        "empty": true,
        "simpleName": "string",
        "namespace": "string"
      },
      "handlerInstantiator": {},
      "propertyNamingStrategy": {},
      "timeZone": {
        "id": "string",
        "displayName": "string",
        "dstsavings": 0,
        "rawOffset": 0
      },
      "locale": {
        "language": "string",
        "script": "string",
        "country": "string",
        "variant": "string",
        "extensionKeys": [
          "string"
        ],
        "unicodeLocaleAttributes": [
          "string"
        ],
        "unicodeLocaleKeys": [
          "string"
        ],
        "iso3Language": "string",
        "iso3Country": "string",
        "displayLanguage": "string",
        "displayScript": "string",
        "displayCountry": "string",
        "displayVariant": "string",
        "displayName": "string"
      },
      "classIntrospector": {},
      "typeFactory": {
        "classLoader": {
          "parent": {},
          "name": "string",
          "unnamedModule": {
            "layer": {},
            "name": "string",
            "descriptor": {
              "open": true,
              "automatic": true
            },
            "classLoader": {},
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "named": true,
            "packages": [
              "string"
            ]
          },
          "registeredAsParallelCapable": true,
          "definedPackages": [
            {
              "name": "string",
              "annotations": [
                {}
              ],
              "declaredAnnotations": [
                {}
              ],
              "sealed": true,
              "specificationTitle": "string",
              "specificationVersion": "string",
              "specificationVendor": "string",
              "implementationTitle": "string",
              "implementationVersion": "string",
              "implementationVendor": "string"
            }
          ]
        }
      },
      "annotationProcessingEnabled": true,
      "dateFormat": {
        "calendar": "2019-08-24T14:15:22Z",
        "numberFormat": {
          "groupingUsed": true,
          "parseIntegerOnly": true,
          "maximumIntegerDigits": 0,
          "minimumIntegerDigits": 0,
          "maximumFractionDigits": 0,
          "minimumFractionDigits": 0,
          "currency": {
            "currencyCode": "string",
            "defaultFractionDigits": 0,
            "numericCode": 0,
            "displayName": "string",
            "symbol": "string",
            "numericCodeAsString": "string"
          },
          "roundingMode": "UP"
        },
        "lenient": true,
        "timeZone": {
          "id": "string",
          "displayName": "string",
          "dstsavings": 0,
          "rawOffset": 0
        }
      },
      "base64Variant": {
        "name": "string",
        "maxLineLength": 0,
        "paddingByte": "string",
        "paddingChar": "string"
      }
    },
    "typeFactory": {
      "classLoader": {
        "parent": {},
        "name": "string",
        "unnamedModule": {
          "layer": {},
          "name": "string",
          "descriptor": {
            "open": true,
            "automatic": true
          },
          "classLoader": {},
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "named": true,
          "packages": [
            "string"
          ]
        },
        "registeredAsParallelCapable": true,
        "definedPackages": [
          {
            "name": "string",
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "sealed": true,
            "specificationTitle": "string",
            "specificationVersion": "string",
            "specificationVendor": "string",
            "implementationTitle": "string",
            "implementationVersion": "string",
            "implementationVendor": "string"
          }
        ]
      }
    },
    "generator": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "schema": {
        "schemaType": "string"
      },
      "closed": true,
      "currentValue": {},
      "codec": {
        "factory": {
          "characterEscapes": {
            "escapeCodesForAscii": [
              0
            ]
          },
          "rootValueSeparator": "string",
          "formatName": "string",
          "outputDecorator": {},
          "inputDecorator": {},
          "codec": {}
        },
        "jsonFactory": {
          "characterEscapes": {
            "escapeCodesForAscii": [
              0
            ]
          },
          "rootValueSeparator": "string",
          "formatName": "string",
          "outputDecorator": {},
          "inputDecorator": {},
          "codec": {}
        }
      },
      "prettyPrinter": {},
      "featureMask": 0,
      "formatFeatures": 0,
      "outputTarget": {},
      "outputBuffered": 0,
      "outputContext": {
        "parent": {},
        "entryCount": 0,
        "currentValue": {},
        "typeDesc": "string",
        "currentIndex": 0,
        "currentName": "string"
      },
      "highestEscapedChar": 0
    },
    "filterProvider": {}
  },
  "serializerFactory": {},
  "injectableValues": {},
  "propertyNamingStrategy": {},
  "serializationConfig": {
    "defaultPropertyInclusion": {
      "valueInclusion": "ALWAYS",
      "contentInclusion": "ALWAYS"
    },
    "annotationIntrospector": {},
    "defaultPrettyPrinter": {},
    "serializationInclusion": "ALWAYS",
    "serializationFeatures": 0,
    "filterProvider": {},
    "defaultVisibilityChecker": {},
    "attributes": {},
    "rootName": "string",
    "subtypeResolver": {},
    "fullRootName": {
      "empty": true,
      "simpleName": "string",
      "namespace": "string"
    },
    "handlerInstantiator": {},
    "propertyNamingStrategy": {},
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    },
    "locale": {
      "language": "string",
      "script": "string",
      "country": "string",
      "variant": "string",
      "extensionKeys": [
        "string"
      ],
      "unicodeLocaleAttributes": [
        "string"
      ],
      "unicodeLocaleKeys": [
        "string"
      ],
      "iso3Language": "string",
      "iso3Country": "string",
      "displayLanguage": "string",
      "displayScript": "string",
      "displayCountry": "string",
      "displayVariant": "string",
      "displayName": "string"
    },
    "classIntrospector": {},
    "typeFactory": {
      "classLoader": {
        "parent": {},
        "name": "string",
        "unnamedModule": {
          "layer": {},
          "name": "string",
          "descriptor": {
            "open": true,
            "automatic": true
          },
          "classLoader": {},
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "named": true,
          "packages": [
            "string"
          ]
        },
        "registeredAsParallelCapable": true,
        "definedPackages": [
          {
            "name": "string",
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "sealed": true,
            "specificationTitle": "string",
            "specificationVersion": "string",
            "specificationVendor": "string",
            "implementationTitle": "string",
            "implementationVersion": "string",
            "implementationVendor": "string"
          }
        ]
      }
    },
    "annotationProcessingEnabled": true,
    "dateFormat": {
      "calendar": "2019-08-24T14:15:22Z",
      "numberFormat": {
        "groupingUsed": true,
        "parseIntegerOnly": true,
        "maximumIntegerDigits": 0,
        "minimumIntegerDigits": 0,
        "maximumFractionDigits": 0,
        "minimumFractionDigits": 0,
        "currency": {
          "currencyCode": "string",
          "defaultFractionDigits": 0,
          "numericCode": 0,
          "displayName": "string",
          "symbol": "string",
          "numericCodeAsString": "string"
        },
        "roundingMode": "UP"
      },
      "lenient": true,
      "timeZone": {
        "id": "string",
        "displayName": "string",
        "dstsavings": 0,
        "rawOffset": 0
      }
    },
    "base64Variant": {
      "name": "string",
      "maxLineLength": 0,
      "paddingByte": "string",
      "paddingChar": "string"
    }
  },
  "serializerProviderInstance": {
    "defaultNullValueSerializer": {
      "delegatee": {},
      "unwrappingSerializer": true
    },
    "annotationIntrospector": {},
    "defaultNullKeySerializer": {
      "delegatee": {},
      "unwrappingSerializer": true
    },
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    },
    "locale": {
      "language": "string",
      "script": "string",
      "country": "string",
      "variant": "string",
      "extensionKeys": [
        "string"
      ],
      "unicodeLocaleAttributes": [
        "string"
      ],
      "unicodeLocaleKeys": [
        "string"
      ],
      "iso3Language": "string",
      "iso3Country": "string",
      "displayLanguage": "string",
      "displayScript": "string",
      "displayCountry": "string",
      "displayVariant": "string",
      "displayName": "string"
    },
    "config": {
      "defaultPropertyInclusion": {
        "valueInclusion": "ALWAYS",
        "contentInclusion": "ALWAYS"
      },
      "annotationIntrospector": {},
      "defaultPrettyPrinter": {},
      "serializationInclusion": "ALWAYS",
      "serializationFeatures": 0,
      "filterProvider": {},
      "defaultVisibilityChecker": {},
      "attributes": {},
      "rootName": "string",
      "subtypeResolver": {},
      "fullRootName": {
        "empty": true,
        "simpleName": "string",
        "namespace": "string"
      },
      "handlerInstantiator": {},
      "propertyNamingStrategy": {},
      "timeZone": {
        "id": "string",
        "displayName": "string",
        "dstsavings": 0,
        "rawOffset": 0
      },
      "locale": {
        "language": "string",
        "script": "string",
        "country": "string",
        "variant": "string",
        "extensionKeys": [
          "string"
        ],
        "unicodeLocaleAttributes": [
          "string"
        ],
        "unicodeLocaleKeys": [
          "string"
        ],
        "iso3Language": "string",
        "iso3Country": "string",
        "displayLanguage": "string",
        "displayScript": "string",
        "displayCountry": "string",
        "displayVariant": "string",
        "displayName": "string"
      },
      "classIntrospector": {},
      "typeFactory": {
        "classLoader": {
          "parent": {},
          "name": "string",
          "unnamedModule": {
            "layer": {},
            "name": "string",
            "descriptor": {
              "open": true,
              "automatic": true
            },
            "classLoader": {},
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "named": true,
            "packages": [
              "string"
            ]
          },
          "registeredAsParallelCapable": true,
          "definedPackages": [
            {
              "name": "string",
              "annotations": [
                {}
              ],
              "declaredAnnotations": [
                {}
              ],
              "sealed": true,
              "specificationTitle": "string",
              "specificationVersion": "string",
              "specificationVendor": "string",
              "implementationTitle": "string",
              "implementationVersion": "string",
              "implementationVendor": "string"
            }
          ]
        }
      },
      "annotationProcessingEnabled": true,
      "dateFormat": {
        "calendar": "2019-08-24T14:15:22Z",
        "numberFormat": {
          "groupingUsed": true,
          "parseIntegerOnly": true,
          "maximumIntegerDigits": 0,
          "minimumIntegerDigits": 0,
          "maximumFractionDigits": 0,
          "minimumFractionDigits": 0,
          "currency": {
            "currencyCode": "string",
            "defaultFractionDigits": 0,
            "numericCode": 0,
            "displayName": "string",
            "symbol": "string",
            "numericCodeAsString": "string"
          },
          "roundingMode": "UP"
        },
        "lenient": true,
        "timeZone": {
          "id": "string",
          "displayName": "string",
          "dstsavings": 0,
          "rawOffset": 0
        }
      },
      "base64Variant": {
        "name": "string",
        "maxLineLength": 0,
        "paddingByte": "string",
        "paddingChar": "string"
      }
    },
    "typeFactory": {
      "classLoader": {
        "parent": {},
        "name": "string",
        "unnamedModule": {
          "layer": {},
          "name": "string",
          "descriptor": {
            "open": true,
            "automatic": true
          },
          "classLoader": {},
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "named": true,
          "packages": [
            "string"
          ]
        },
        "registeredAsParallelCapable": true,
        "definedPackages": [
          {
            "name": "string",
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "sealed": true,
            "specificationTitle": "string",
            "specificationVersion": "string",
            "specificationVendor": "string",
            "implementationTitle": "string",
            "implementationVersion": "string",
            "implementationVendor": "string"
          }
        ]
      }
    },
    "generator": {
      "characterEscapes": {
        "escapeCodesForAscii": [
          0
        ]
      },
      "schema": {
        "schemaType": "string"
      },
      "closed": true,
      "currentValue": {},
      "codec": {
        "factory": {
          "characterEscapes": {
            "escapeCodesForAscii": [
              0
            ]
          },
          "rootValueSeparator": "string",
          "formatName": "string",
          "outputDecorator": {},
          "inputDecorator": {},
          "codec": {}
        },
        "jsonFactory": {
          "characterEscapes": {
            "escapeCodesForAscii": [
              0
            ]
          },
          "rootValueSeparator": "string",
          "formatName": "string",
          "outputDecorator": {},
          "inputDecorator": {},
          "codec": {}
        }
      },
      "prettyPrinter": {},
      "featureMask": 0,
      "formatFeatures": 0,
      "outputTarget": {},
      "outputBuffered": 0,
      "outputContext": {
        "parent": {},
        "entryCount": 0,
        "currentValue": {},
        "typeDesc": "string",
        "currentIndex": 0,
        "currentName": "string"
      },
      "highestEscapedChar": 0
    },
    "filterProvider": {}
  },
  "deserializationConfig": {
    "defaultPropertyInclusion": {
      "valueInclusion": "ALWAYS",
      "contentInclusion": "ALWAYS"
    },
    "annotationIntrospector": {},
    "deserializationFeatures": 0,
    "nodeFactory": {},
    "problemHandlers": {},
    "defaultVisibilityChecker": {},
    "attributes": {},
    "rootName": "string",
    "subtypeResolver": {},
    "fullRootName": {
      "empty": true,
      "simpleName": "string",
      "namespace": "string"
    },
    "handlerInstantiator": {},
    "propertyNamingStrategy": {},
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    },
    "locale": {
      "language": "string",
      "script": "string",
      "country": "string",
      "variant": "string",
      "extensionKeys": [
        "string"
      ],
      "unicodeLocaleAttributes": [
        "string"
      ],
      "unicodeLocaleKeys": [
        "string"
      ],
      "iso3Language": "string",
      "iso3Country": "string",
      "displayLanguage": "string",
      "displayScript": "string",
      "displayCountry": "string",
      "displayVariant": "string",
      "displayName": "string"
    },
    "classIntrospector": {},
    "typeFactory": {
      "classLoader": {
        "parent": {},
        "name": "string",
        "unnamedModule": {
          "layer": {},
          "name": "string",
          "descriptor": {
            "open": true,
            "automatic": true
          },
          "classLoader": {},
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "named": true,
          "packages": [
            "string"
          ]
        },
        "registeredAsParallelCapable": true,
        "definedPackages": [
          {
            "name": "string",
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "sealed": true,
            "specificationTitle": "string",
            "specificationVersion": "string",
            "specificationVendor": "string",
            "implementationTitle": "string",
            "implementationVersion": "string",
            "implementationVendor": "string"
          }
        ]
      }
    },
    "annotationProcessingEnabled": true,
    "dateFormat": {
      "calendar": "2019-08-24T14:15:22Z",
      "numberFormat": {
        "groupingUsed": true,
        "parseIntegerOnly": true,
        "maximumIntegerDigits": 0,
        "minimumIntegerDigits": 0,
        "maximumFractionDigits": 0,
        "minimumFractionDigits": 0,
        "currency": {
          "currencyCode": "string",
          "defaultFractionDigits": 0,
          "numericCode": 0,
          "displayName": "string",
          "symbol": "string",
          "numericCodeAsString": "string"
        },
        "roundingMode": "UP"
      },
      "lenient": true,
      "timeZone": {
        "id": "string",
        "displayName": "string",
        "dstsavings": 0,
        "rawOffset": 0
      }
    },
    "base64Variant": {
      "name": "string",
      "maxLineLength": 0,
      "paddingByte": "string",
      "paddingChar": "string"
    }
  },
  "deserializationContext": {
    "annotationIntrospector": {},
    "factory": {},
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    },
    "locale": {
      "language": "string",
      "script": "string",
      "country": "string",
      "variant": "string",
      "extensionKeys": [
        "string"
      ],
      "unicodeLocaleAttributes": [
        "string"
      ],
      "unicodeLocaleKeys": [
        "string"
      ],
      "iso3Language": "string",
      "iso3Country": "string",
      "displayLanguage": "string",
      "displayScript": "string",
      "displayCountry": "string",
      "displayVariant": "string",
      "displayName": "string"
    },
    "config": {
      "defaultPropertyInclusion": {
        "valueInclusion": "ALWAYS",
        "contentInclusion": "ALWAYS"
      },
      "annotationIntrospector": {},
      "deserializationFeatures": 0,
      "nodeFactory": {},
      "problemHandlers": {},
      "defaultVisibilityChecker": {},
      "attributes": {},
      "rootName": "string",
      "subtypeResolver": {},
      "fullRootName": {
        "empty": true,
        "simpleName": "string",
        "namespace": "string"
      },
      "handlerInstantiator": {},
      "propertyNamingStrategy": {},
      "timeZone": {
        "id": "string",
        "displayName": "string",
        "dstsavings": 0,
        "rawOffset": 0
      },
      "locale": {
        "language": "string",
        "script": "string",
        "country": "string",
        "variant": "string",
        "extensionKeys": [
          "string"
        ],
        "unicodeLocaleAttributes": [
          "string"
        ],
        "unicodeLocaleKeys": [
          "string"
        ],
        "iso3Language": "string",
        "iso3Country": "string",
        "displayLanguage": "string",
        "displayScript": "string",
        "displayCountry": "string",
        "displayVariant": "string",
        "displayName": "string"
      },
      "classIntrospector": {},
      "typeFactory": {
        "classLoader": {
          "parent": {},
          "name": "string",
          "unnamedModule": {
            "layer": {},
            "name": "string",
            "descriptor": {
              "open": true,
              "automatic": true
            },
            "classLoader": {},
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "named": true,
            "packages": [
              "string"
            ]
          },
          "registeredAsParallelCapable": true,
          "definedPackages": [
            {
              "name": "string",
              "annotations": [
                {}
              ],
              "declaredAnnotations": [
                {}
              ],
              "sealed": true,
              "specificationTitle": "string",
              "specificationVersion": "string",
              "specificationVendor": "string",
              "implementationTitle": "string",
              "implementationVersion": "string",
              "implementationVendor": "string"
            }
          ]
        }
      },
      "annotationProcessingEnabled": true,
      "dateFormat": {
        "calendar": "2019-08-24T14:15:22Z",
        "numberFormat": {
          "groupingUsed": true,
          "parseIntegerOnly": true,
          "maximumIntegerDigits": 0,
          "minimumIntegerDigits": 0,
          "maximumFractionDigits": 0,
          "minimumFractionDigits": 0,
          "currency": {
            "currencyCode": "string",
            "defaultFractionDigits": 0,
            "numericCode": 0,
            "displayName": "string",
            "symbol": "string",
            "numericCodeAsString": "string"
          },
          "roundingMode": "UP"
        },
        "lenient": true,
        "timeZone": {
          "id": "string",
          "displayName": "string",
          "dstsavings": 0,
          "rawOffset": 0
        }
      },
      "base64Variant": {
        "name": "string",
        "maxLineLength": 0,
        "paddingByte": "string",
        "paddingChar": "string"
      }
    },
    "parser": {
      "textLength": 0,
      "textCharacters": [
        "string"
      ],
      "text": "string",
      "schema": {
        "schemaType": "string"
      },
      "booleanValue": true,
      "byteValue": "string",
      "doubleValue": 0,
      "floatValue": 0,
      "shortValue": 0,
      "longValue": 0,
      "textOffset": 0,
      "closed": true,
      "currentValue": {},
      "numberType": "INT",
      "intValue": 0,
      "typeId": {},
      "valueAsLong": 0,
      "inputSource": {},
      "valueAsDouble": 0,
      "numberValue": {},
      "valueAsString": "string",
      "valueAsBoolean": true,
      "currentLocation": {
        "byteOffset": 0,
        "sourceRef": {},
        "lineNr": 0,
        "columnNr": 0,
        "charOffset": 0
      },
      "binaryValue": [
        "string"
      ],
      "valueAsInt": 0,
      "parsingContext": {
        "parent": {},
        "entryCount": 0,
        "currentValue": {},
        "typeDesc": "string",
        "currentIndex": 0,
        "currentName": "string"
      },
      "codec": {
        "factory": {
          "characterEscapes": {
            "escapeCodesForAscii": [
              0
            ]
          },
          "rootValueSeparator": "string",
          "formatName": "string",
          "outputDecorator": {},
          "inputDecorator": {},
          "codec": {}
        },
        "jsonFactory": {
          "characterEscapes": {
            "escapeCodesForAscii": [
              0
            ]
          },
          "rootValueSeparator": "string",
          "formatName": "string",
          "outputDecorator": {},
          "inputDecorator": {},
          "codec": {}
        }
      },
      "currentName": "string",
      "currentToken": "NOT_AVAILABLE",
      "tokenLocation": {
        "byteOffset": 0,
        "sourceRef": {},
        "lineNr": 0,
        "columnNr": 0,
        "charOffset": 0
      },
      "featureMask": 0,
      "bigIntegerValue": 0,
      "formatFeatures": 0,
      "decimalValue": 0,
      "embeddedObject": {},
      "objectId": {},
      "currentTokenId": 0,
      "expectedStartArrayToken": true,
      "expectedStartObjectToken": true,
      "lastClearedToken": "NOT_AVAILABLE"
    },
    "typeFactory": {
      "classLoader": {
        "parent": {},
        "name": "string",
        "unnamedModule": {
          "layer": {},
          "name": "string",
          "descriptor": {
            "open": true,
            "automatic": true
          },
          "classLoader": {},
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "named": true,
          "packages": [
            "string"
          ]
        },
        "registeredAsParallelCapable": true,
        "definedPackages": [
          {
            "name": "string",
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "sealed": true,
            "specificationTitle": "string",
            "specificationVersion": "string",
            "specificationVendor": "string",
            "implementationTitle": "string",
            "implementationVersion": "string",
            "implementationVendor": "string"
          }
        ]
      }
    },
    "deserializationFeatures": 0,
    "nodeFactory": {},
    "base64Variant": {
      "name": "string",
      "maxLineLength": 0,
      "paddingByte": "string",
      "paddingChar": "string"
    },
    "arrayBuilders": {
      "byteBuilder": {},
      "booleanBuilder": {},
      "doubleBuilder": {},
      "intBuilder": {},
      "floatBuilder": {},
      "shortBuilder": {},
      "longBuilder": {}
    },
    "contextualType": {
      "interface": true,
      "primitive": true,
      "interfaces": [
        {}
      ],
      "genericSignature": "string",
      "final": true,
      "abstract": true,
      "contentType": {},
      "bindings": {
        "empty": true,
        "typeParameters": [
          {}
        ]
      },
      "concrete": true,
      "referencedType": {},
      "enumType": true,
      "superClass": {},
      "throwable": true,
      "arrayType": true,
      "collectionLikeType": true,
      "contentValueHandler": {},
      "contentTypeHandler": {},
      "containerType": true,
      "valueHandler": {},
      "typeHandler": {},
      "keyType": {},
      "javaLangObject": true,
      "mapLikeType": true,
      "erasedSignature": "string",
      "typeName": "string",
      "referenceType": true
    }
  },
  "factory": {
    "characterEscapes": {
      "escapeCodesForAscii": [
        0
      ]
    },
    "rootValueSeparator": "string",
    "formatName": "string",
    "outputDecorator": {},
    "inputDecorator": {},
    "codec": {
      "factory": {},
      "jsonFactory": {}
    }
  },
  "visibilityChecker": {},
  "typeFactory": {
    "classLoader": {
      "parent": {},
      "name": "string",
      "unnamedModule": {
        "layer": {},
        "name": "string",
        "descriptor": {
          "open": true,
          "automatic": true
        },
        "classLoader": {},
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "named": true,
        "packages": [
          "string"
        ]
      },
      "registeredAsParallelCapable": true,
      "definedPackages": [
        {
          "name": "string",
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "sealed": true,
          "specificationTitle": "string",
          "specificationVersion": "string",
          "specificationVendor": "string",
          "implementationTitle": "string",
          "implementationVersion": "string",
          "implementationVendor": "string"
        }
      ]
    }
  },
  "subtypeResolver": {},
  "nodeFactory": {},
  "dateFormat": {
    "calendar": "2019-08-24T14:15:22Z",
    "numberFormat": {
      "groupingUsed": true,
      "parseIntegerOnly": true,
      "maximumIntegerDigits": 0,
      "minimumIntegerDigits": 0,
      "maximumFractionDigits": 0,
      "minimumFractionDigits": 0,
      "currency": {
        "currencyCode": "string",
        "defaultFractionDigits": 0,
        "numericCode": 0,
        "displayName": "string",
        "symbol": "string",
        "numericCodeAsString": "string"
      },
      "roundingMode": "UP"
    },
    "lenient": true,
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    }
  },
  "jsonFactory": {
    "characterEscapes": {
      "escapeCodesForAscii": [
        0
      ]
    },
    "rootValueSeparator": "string",
    "formatName": "string",
    "outputDecorator": {},
    "inputDecorator": {},
    "codec": {
      "factory": {},
      "jsonFactory": {}
    }
  }
}

Properties

Name Type Required Restrictions Description
serializerProvider SerializerProvider false none none
serializerFactory SerializerFactory false none none
injectableValues InjectableValues false none none
propertyNamingStrategy PropertyNamingStrategy false none none
serializationConfig SerializationConfig false none none
serializerProviderInstance SerializerProvider false none none
deserializationConfig DeserializationConfig false none none
deserializationContext DeserializationContext false none none
factory JsonFactory false none none
visibilityChecker VisibilityCheckerObject false none none
typeFactory TypeFactory false none none
subtypeResolver SubtypeResolver false none none
nodeFactory JsonNodeFactory false none none
dateFormat DateFormat false none none
jsonFactory JsonFactory false none none

Objective

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "category": "NETWORKING",
  "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
  "scoreWeight": 0,
  "sequence": 0
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
category string false none none
campaignPhaseId string(uuid) false none none
scoreWeight integer(int32) false none none
sequence integer(int32) false none none

Enumerated Values

Property Value
category NETWORKING
category CLIENT_SIDE
category WEB

ObjectiveAttacks

{
  "successfulAttackReportCount": 0,
  "failedAttackReportCount": 0
}

Properties

Name Type Required Restrictions Description
successfulAttackReportCount integer(int32) false none none
failedAttackReportCount integer(int32) false none none

ObjectiveDefinition

{
  "name": "string",
  "category": "NETWORKING",
  "campaignPhaseName": "string",
  "scoreWeight": 0,
  "sequence": 0
}

Properties

Name Type Required Restrictions Description
name string false none none
category string false none none
campaignPhaseName string false none none
scoreWeight integer(int32) false none none
sequence integer(int32) false none none

Enumerated Values

Property Value
category NETWORKING
category CLIENT_SIDE
category WEB

ObserverSettingsDTO

{
  "key": "string",
  "enabledViews": [
    "CAMPAIGN_LIVE"
  ],
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47"
}

Properties

Name Type Required Restrictions Description
key string false none none
enabledViews [string] false none none
exerciseId string(uuid) false none none

OutputDecorator

{}

Properties

None

OverviewCategoryDTO

{
  "category": "string",
  "tasks": [
    {
      "status": "ABANDONED",
      "title": "string",
      "score": 0,
      "usedHints": 0,
      "maxHints": 0,
      "timeSpentMs": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
category string false none none
tasks [OverviewTaskDTO] false none none

OverviewTaskDTO

{
  "status": "ABANDONED",
  "title": "string",
  "score": 0,
  "usedHints": 0,
  "maxHints": 0,
  "timeSpentMs": 0
}

Properties

Name Type Required Restrictions Description
status string false none none
title string false none none
score integer(int32) false none none
usedHints integer(int32) false none none
maxHints integer(int32) false none none
timeSpentMs integer(int64) false none none

Enumerated Values

Property Value
status ABANDONED
status IN_PROGRESS
status NOT_STARTED
status DEPENDENCIES_UNSOLVED
status VALIDATING
status SOLVED
status LOCKED

Package

{
  "name": "string",
  "annotations": [
    {}
  ],
  "declaredAnnotations": [
    {}
  ],
  "sealed": true,
  "specificationTitle": "string",
  "specificationVersion": "string",
  "specificationVendor": "string",
  "implementationTitle": "string",
  "implementationVersion": "string",
  "implementationVendor": "string"
}

Properties

Name Type Required Restrictions Description
name string false none none
annotations [Annotation] false none none
declaredAnnotations [Annotation] false none none
sealed boolean false none none
specificationTitle string false none none
specificationVersion string false none none
specificationVendor string false none none
implementationTitle string false none none
implementationVersion string false none none
implementationVendor string false none none

PodiumTeamDTO

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "score": 0,
  "tasksOverview": {
    "teamName": "string",
    "position": 0,
    "categories": [
      {
        "category": "string",
        "tasks": [
          {
            "status": "ABANDONED",
            "title": "string",
            "score": 0,
            "usedHints": 0,
            "maxHints": 0,
            "timeSpentMs": 0
          }
        ]
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
teamId string(uuid) false none none
score number(double) false none none
tasksOverview CTFTeamOverviewDTO false none none

PreferencesDTO

{
  "defaultExerciseId": "string",
  "defaultTeamId": "string",
  "dateFormat": "string",
  "defaultListSize": 0,
  "isLightTheme": true
}

Properties

Name Type Required Restrictions Description
defaultExerciseId string false none none
defaultTeamId string false none none
dateFormat string false none none
defaultListSize integer(int32) false none none
isLightTheme boolean false read-only none

PrettyPrinter

{}

Properties

None

ProductKeyDetailsDTO

{
  "key": "string",
  "licensedTo": "string",
  "validUntil": "string",
  "numberOfUsers": 0
}

Properties

Name Type Required Restrictions Description
key string false none none
licensedTo string false none none
validUntil string false none none
numberOfUsers integer(int32) false none none

PropertyName

{
  "empty": true,
  "simpleName": "string",
  "namespace": "string"
}

Properties

Name Type Required Restrictions Description
empty boolean false none none
simpleName string false none none
namespace string false none none

PropertyNamingStrategy

{}

Properties

None

QueueResponse

{
  "position": 0,
  "hasSlotReserved": true,
  "estimatedWaitTime": {
    "seconds": 0,
    "nano": 0,
    "units": [
      {
        "duration": {},
        "durationEstimated": true,
        "dateBased": true,
        "timeBased": true
      }
    ],
    "negative": true,
    "zero": true
  }
}

Properties

Name Type Required Restrictions Description
position integer(int32) false none none
hasSlotReserved boolean false none none
estimatedWaitTime Duration false none none

ReportFilteringResult

{
  "totalCount": 0,
  "filteredCount": 0,
  "reports": [
    {
      "timestamp": 0,
      "status": "PENDING_CONFIRMATION",
      "feedback": "string",
      "whiteTeamMember": "string",
      "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalCount integer(int32) false none none
filteredCount integer(int32) false none none
reports [ReportsWidgetData] false none none

ReportFilteringResultAttackReportsWidgetData

{
  "totalCount": 0,
  "filteredCount": 0,
  "reports": [
    {
      "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "status": "PENDING_CONFIRMATION",
      "whiteTeamMember": "string",
      "timestamp": 0,
      "feedback": "string",
      "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
      "objectiveContainerName": "string",
      "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
      "objectiveName": "string",
      "campaignPhaseName": "string",
      "objectiveStatus": "NOT_COMPROMISED",
      "objectiveReportsCount": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalCount integer(int32) false none none
filteredCount integer(int32) false none none
reports [AttackReportsWidgetData] false none none

ReportFilteringResultIncidentReportsWidgetData

{
  "totalCount": 0,
  "filteredCount": 0,
  "reports": [
    {
      "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "status": "PENDING_CONFIRMATION",
      "whiteTeamMember": "string",
      "timestamp": 0,
      "feedback": "string",
      "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
      "targetName": "string",
      "targetCheckId": "e6bd6631-9fae-481a-af78-b92fff1729e4",
      "targetCheckName": "string",
      "incidentType": "ONLINE",
      "blueTeamMember": "string",
      "details": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalCount integer(int32) false none none
filteredCount integer(int32) false none none
reports [IncidentReportsWidgetData] false none none

ReportFilteringResultSituationReportsWidgetData

{
  "totalCount": 0,
  "filteredCount": 0,
  "reports": [
    {
      "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "status": "PENDING_CONFIRMATION",
      "timestamp": 0,
      "whiteTeamMember": "string",
      "feedback": "string",
      "blueTeamMember": "string",
      "grade": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalCount integer(int32) false none none
filteredCount integer(int32) false none none
reports [SituationReportsWidgetData] false none none

ReportFilteringResultTaskReportsWidgetData

{
  "totalCount": 0,
  "filteredCount": 0,
  "reports": [
    {
      "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "timestamp": 0,
      "status": "PENDING_CONFIRMATION",
      "whiteTeamMember": "string",
      "feedback": "string",
      "taskId": "e6e9d88a-9b63-468a-aec3-b7a11de27af8",
      "title": "string",
      "category": "string",
      "createdBy": "string",
      "validatedOn": 0,
      "initialScore": 0,
      "score": 0,
      "scorePercentage": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
totalCount integer(int32) false none none
filteredCount integer(int32) false none none
reports [TaskReportsWidgetData] false none none

ReportingStatusObjective

{
  "type": "TARGET_CHECK",
  "name": "string",
  "category": "NETWORKING",
  "teams": [
    {
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
      "objectiveStatus": "NOT_STARTED",
      "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
      "incidentReports": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
          "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
          "username": "string",
          "timestamp": 0,
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
          "targetCheckId": "e6bd6631-9fae-481a-af78-b92fff1729e4",
          "incidentType": "ONLINE",
          "details": "string"
        }
      ],
      "incidentReportCount": 0,
      "objectiveAttacks": {
        "successfulAttackReportCount": 0,
        "failedAttackReportCount": 0
      }
    }
  ]
}

Properties

Name Type Required Restrictions Description
type string false none none
name string false none none
category string false none none
teams [ReportingStatusObjectiveTeam] false none none

Enumerated Values

Property Value
type TARGET_CHECK
type TARGET_GROUP
category NETWORKING
category CLIENT_SIDE
category WEB

ReportingStatusObjectiveTeam

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
  "objectiveStatus": "NOT_STARTED",
  "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
  "incidentReports": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
      "username": "string",
      "timestamp": 0,
      "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
      "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
      "targetCheckId": "e6bd6631-9fae-481a-af78-b92fff1729e4",
      "incidentType": "ONLINE",
      "details": "string"
    }
  ],
  "incidentReportCount": 0,
  "objectiveAttacks": {
    "successfulAttackReportCount": 0,
    "failedAttackReportCount": 0
  }
}

Properties

Name Type Required Restrictions Description
teamId string(uuid) false none none
teamName string false none none
objectiveContainerId string(uuid) false none none
objectiveStatus string false none none
objectiveId string(uuid) false none none
incidentReports [IncidentReport] false none none
incidentReportCount integer(int32) false none none
objectiveAttacks ObjectiveAttacks false none none

Enumerated Values

Property Value
objectiveStatus NOT_STARTED
objectiveStatus SUCCESSFUL
objectiveStatus FAILED
objectiveStatus IN_PROGRESS

ReportingStatusWidgetData

{
  "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
  "campaignPhaseName": "string",
  "objectives": [
    {
      "type": "TARGET_CHECK",
      "name": "string",
      "category": "NETWORKING",
      "teams": [
        {
          "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
          "teamName": "string",
          "objectiveContainerId": "19719b61-3636-4c2c-9f9e-15e15bf34e46",
          "objectiveStatus": "NOT_STARTED",
          "objectiveId": "1ac8be30-2b34-409a-be6d-40652b73c978",
          "incidentReports": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
              "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
              "username": "string",
              "timestamp": 0,
              "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
              "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
              "targetCheckId": "e6bd6631-9fae-481a-af78-b92fff1729e4",
              "incidentType": "ONLINE",
              "details": "string"
            }
          ],
          "incidentReportCount": 0,
          "objectiveAttacks": {
            "successfulAttackReportCount": 0,
            "failedAttackReportCount": 0
          }
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
campaignPhaseId string(uuid) false none none
campaignPhaseName string false none none
objectives [ReportingStatusObjective] false none none

ReportsWidgetData

{
  "timestamp": 0,
  "status": "PENDING_CONFIRMATION",
  "feedback": "string",
  "whiteTeamMember": "string",
  "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string"
}

Properties

Name Type Required Restrictions Description
timestamp integer(int64) false none none
status string false none none
feedback string false none none
whiteTeamMember string false none none
reportId string(uuid) false none none
teamId string(uuid) false none none
teamName string false none none

Enumerated Values

Property Value
status PENDING_CONFIRMATION
status CONFIRMED
status DENIED

RequiredTask

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "title": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
title string false none none

RestConfiguration

{
  "integrationType": "REST",
  "baseUrl": "string"
}

Properties

allOf - discriminator: IntegrationConfiguration.integrationType

Name Type Required Restrictions Description
anonymous IntegrationConfiguration false none none

and

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

RoleListItem

{
  "code": "string",
  "description": "string",
  "domains": [
    "GN_EXERCISE"
  ]
}

Properties

Name Type Required Restrictions Description
code string false none none
description string false none none
domains [string] false none none

ScoreBreakdown

{
  "name": "TOTAL",
  "value": 0
}

Properties

Name Type Required Restrictions Description
name string false none none
value integer(int32) false none none

Enumerated Values

Property Value
name TOTAL
name SPECIAL
name ATTACK_REPORTS
name AVAILABILITY
name INCIDENT_REPORTS
name SITUATION_REPORTS
name RESTORE_FROM_BACKUP
name USE_HINT
name ABANDON_TASK
name SOLVE_TASK

ScoreEvent

{
  "type": "ANSWER",
  "taskCategory": "string",
  "source": "TASK_EVENT",
  "eventScore": 0,
  "totalScore": 0,
  "timestamp": 0,
  "taskName": "string"
}

Properties

Name Type Required Restrictions Description
type string false none none
taskCategory string false none none
source string false none none
eventScore integer(int32) false none none
totalScore integer(int32) false none none
timestamp integer(int64) false none none
taskName string false none none

Enumerated Values

Property Value
type ANSWER
type ASSIGNMENT
type CONFIRMATION
type UNASSIGNMENT
type HINT_USAGE
type GMA_VALIDATION
type LOCK
type UNLOCK
source TASK_EVENT
source SPECIAL

ScoreReport

{
  "scoreByCategory": {
    "property1": 0,
    "property2": 0
  },
  "scoreEvents": [
    {
      "type": "ANSWER",
      "taskCategory": "string",
      "source": "TASK_EVENT",
      "eventScore": 0,
      "totalScore": 0,
      "timestamp": 0,
      "taskName": "string"
    }
  ],
  "totalScore": 0
}

Properties

Name Type Required Restrictions Description
scoreByCategory object false none none
» additionalProperties integer(int32) false none none
scoreEvents [ScoreEvent] false none none
totalScore integer(int32) false none none

ScoringLogMessageData

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "category": "TOTAL",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "score": 0,
  "timestamp": 0
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
category string false none none
teamId string(uuid) false none none
teamName string false none none
score number(double) false none none
timestamp integer(int64) false none none

Enumerated Values

Property Value
category TOTAL
category SPECIAL
category ATTACK_REPORTS
category AVAILABILITY
category INCIDENT_REPORTS
category SITUATION_REPORTS
category RESTORE_FROM_BACKUP
category USE_HINT
category ABANDON_TASK
category SOLVE_TASK

ScoringLogSpecialMessageDetailsDTO

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "details": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
details string false none none

ScoringLogWidgetDataDTO

{
  "meta": {
    "offset": 0,
    "limit": 0,
    "totalCount": 0,
    "timestamp": 0
  },
  "data": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "category": "TOTAL",
      "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
      "teamName": "string",
      "score": 0,
      "timestamp": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
meta MetaData false none none
data [ScoringLogMessageData] false none none

ScriptConfiguration

{
  "script": "string",
  "args": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
script string false none none
args [string] false none none

SegmentStatusWidgetData

{
  "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
  "networkSegmentName": "string",
  "states": {
    "good": 0,
    "compromised": 0,
    "notAvailable": 0
  }
}

Properties

Name Type Required Restrictions Description
networkSegmentId string(uuid) false none none
networkSegmentName string false none none
states TargetCheckStates false none none

SendGridConfiguration

{
  "integrationType": "REST",
  "from": "string",
  "to": "string",
  "toMany": [
    "string"
  ]
}

Properties

allOf - discriminator: IntegrationConfiguration.integrationType

Name Type Required Restrictions Description
anonymous IntegrationConfiguration false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» from string false none none
» to string false none none
» toMany [string] false none none

SerializationConfig

{
  "defaultPropertyInclusion": {
    "valueInclusion": "ALWAYS",
    "contentInclusion": "ALWAYS"
  },
  "annotationIntrospector": {},
  "defaultPrettyPrinter": {},
  "serializationInclusion": "ALWAYS",
  "serializationFeatures": 0,
  "filterProvider": {},
  "defaultVisibilityChecker": {},
  "attributes": {},
  "rootName": "string",
  "subtypeResolver": {},
  "fullRootName": {
    "empty": true,
    "simpleName": "string",
    "namespace": "string"
  },
  "handlerInstantiator": {},
  "propertyNamingStrategy": {},
  "timeZone": {
    "id": "string",
    "displayName": "string",
    "dstsavings": 0,
    "rawOffset": 0
  },
  "locale": {
    "language": "string",
    "script": "string",
    "country": "string",
    "variant": "string",
    "extensionKeys": [
      "string"
    ],
    "unicodeLocaleAttributes": [
      "string"
    ],
    "unicodeLocaleKeys": [
      "string"
    ],
    "iso3Language": "string",
    "iso3Country": "string",
    "displayLanguage": "string",
    "displayScript": "string",
    "displayCountry": "string",
    "displayVariant": "string",
    "displayName": "string"
  },
  "classIntrospector": {},
  "typeFactory": {
    "classLoader": {
      "parent": {},
      "name": "string",
      "unnamedModule": {
        "layer": {},
        "name": "string",
        "descriptor": {
          "open": true,
          "automatic": true
        },
        "classLoader": {},
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "named": true,
        "packages": [
          "string"
        ]
      },
      "registeredAsParallelCapable": true,
      "definedPackages": [
        {
          "name": "string",
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "sealed": true,
          "specificationTitle": "string",
          "specificationVersion": "string",
          "specificationVendor": "string",
          "implementationTitle": "string",
          "implementationVersion": "string",
          "implementationVendor": "string"
        }
      ]
    }
  },
  "annotationProcessingEnabled": true,
  "dateFormat": {
    "calendar": "2019-08-24T14:15:22Z",
    "numberFormat": {
      "groupingUsed": true,
      "parseIntegerOnly": true,
      "maximumIntegerDigits": 0,
      "minimumIntegerDigits": 0,
      "maximumFractionDigits": 0,
      "minimumFractionDigits": 0,
      "currency": {
        "currencyCode": "string",
        "defaultFractionDigits": 0,
        "numericCode": 0,
        "displayName": "string",
        "symbol": "string",
        "numericCodeAsString": "string"
      },
      "roundingMode": "UP"
    },
    "lenient": true,
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    }
  },
  "base64Variant": {
    "name": "string",
    "maxLineLength": 0,
    "paddingByte": "string",
    "paddingChar": "string"
  }
}

Properties

Name Type Required Restrictions Description
defaultPropertyInclusion Value false none none
annotationIntrospector AnnotationIntrospector false none none
defaultPrettyPrinter PrettyPrinter false none none
serializationInclusion string false none none
serializationFeatures integer(int32) false none none
filterProvider FilterProvider false none none
defaultVisibilityChecker VisibilityCheckerObject false none none
attributes ContextAttributes false none none
rootName string false none none
subtypeResolver SubtypeResolver false none none
fullRootName PropertyName false none none
handlerInstantiator HandlerInstantiator false none none
propertyNamingStrategy PropertyNamingStrategy false none none
timeZone TimeZone false none none
locale Locale false none none
classIntrospector ClassIntrospector false none none
typeFactory TypeFactory false none none
annotationProcessingEnabled boolean false none none
dateFormat DateFormat false none none
base64Variant Base64Variant false none none

Enumerated Values

Property Value
serializationInclusion ALWAYS
serializationInclusion NON_NULL
serializationInclusion NON_ABSENT
serializationInclusion NON_EMPTY
serializationInclusion NON_DEFAULT
serializationInclusion USE_DEFAULTS

SerializerFactory

{}

Properties

None

SerializerProvider

{
  "defaultNullValueSerializer": {
    "delegatee": {},
    "unwrappingSerializer": true
  },
  "annotationIntrospector": {},
  "defaultNullKeySerializer": {
    "delegatee": {},
    "unwrappingSerializer": true
  },
  "timeZone": {
    "id": "string",
    "displayName": "string",
    "dstsavings": 0,
    "rawOffset": 0
  },
  "locale": {
    "language": "string",
    "script": "string",
    "country": "string",
    "variant": "string",
    "extensionKeys": [
      "string"
    ],
    "unicodeLocaleAttributes": [
      "string"
    ],
    "unicodeLocaleKeys": [
      "string"
    ],
    "iso3Language": "string",
    "iso3Country": "string",
    "displayLanguage": "string",
    "displayScript": "string",
    "displayCountry": "string",
    "displayVariant": "string",
    "displayName": "string"
  },
  "config": {
    "defaultPropertyInclusion": {
      "valueInclusion": "ALWAYS",
      "contentInclusion": "ALWAYS"
    },
    "annotationIntrospector": {},
    "defaultPrettyPrinter": {},
    "serializationInclusion": "ALWAYS",
    "serializationFeatures": 0,
    "filterProvider": {},
    "defaultVisibilityChecker": {},
    "attributes": {},
    "rootName": "string",
    "subtypeResolver": {},
    "fullRootName": {
      "empty": true,
      "simpleName": "string",
      "namespace": "string"
    },
    "handlerInstantiator": {},
    "propertyNamingStrategy": {},
    "timeZone": {
      "id": "string",
      "displayName": "string",
      "dstsavings": 0,
      "rawOffset": 0
    },
    "locale": {
      "language": "string",
      "script": "string",
      "country": "string",
      "variant": "string",
      "extensionKeys": [
        "string"
      ],
      "unicodeLocaleAttributes": [
        "string"
      ],
      "unicodeLocaleKeys": [
        "string"
      ],
      "iso3Language": "string",
      "iso3Country": "string",
      "displayLanguage": "string",
      "displayScript": "string",
      "displayCountry": "string",
      "displayVariant": "string",
      "displayName": "string"
    },
    "classIntrospector": {},
    "typeFactory": {
      "classLoader": {
        "parent": {},
        "name": "string",
        "unnamedModule": {
          "layer": {},
          "name": "string",
          "descriptor": {
            "open": true,
            "automatic": true
          },
          "classLoader": {},
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "named": true,
          "packages": [
            "string"
          ]
        },
        "registeredAsParallelCapable": true,
        "definedPackages": [
          {
            "name": "string",
            "annotations": [
              {}
            ],
            "declaredAnnotations": [
              {}
            ],
            "sealed": true,
            "specificationTitle": "string",
            "specificationVersion": "string",
            "specificationVendor": "string",
            "implementationTitle": "string",
            "implementationVersion": "string",
            "implementationVendor": "string"
          }
        ]
      }
    },
    "annotationProcessingEnabled": true,
    "dateFormat": {
      "calendar": "2019-08-24T14:15:22Z",
      "numberFormat": {
        "groupingUsed": true,
        "parseIntegerOnly": true,
        "maximumIntegerDigits": 0,
        "minimumIntegerDigits": 0,
        "maximumFractionDigits": 0,
        "minimumFractionDigits": 0,
        "currency": {
          "currencyCode": "string",
          "defaultFractionDigits": 0,
          "numericCode": 0,
          "displayName": "string",
          "symbol": "string",
          "numericCodeAsString": "string"
        },
        "roundingMode": "UP"
      },
      "lenient": true,
      "timeZone": {
        "id": "string",
        "displayName": "string",
        "dstsavings": 0,
        "rawOffset": 0
      }
    },
    "base64Variant": {
      "name": "string",
      "maxLineLength": 0,
      "paddingByte": "string",
      "paddingChar": "string"
    }
  },
  "typeFactory": {
    "classLoader": {
      "parent": {},
      "name": "string",
      "unnamedModule": {
        "layer": {},
        "name": "string",
        "descriptor": {
          "open": true,
          "automatic": true
        },
        "classLoader": {},
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "named": true,
        "packages": [
          "string"
        ]
      },
      "registeredAsParallelCapable": true,
      "definedPackages": [
        {
          "name": "string",
          "annotations": [
            {}
          ],
          "declaredAnnotations": [
            {}
          ],
          "sealed": true,
          "specificationTitle": "string",
          "specificationVersion": "string",
          "specificationVendor": "string",
          "implementationTitle": "string",
          "implementationVersion": "string",
          "implementationVendor": "string"
        }
      ]
    }
  },
  "generator": {
    "characterEscapes": {
      "escapeCodesForAscii": [
        0
      ]
    },
    "schema": {
      "schemaType": "string"
    },
    "closed": true,
    "currentValue": {},
    "codec": {
      "factory": {
        "characterEscapes": {
          "escapeCodesForAscii": [
            0
          ]
        },
        "rootValueSeparator": "string",
        "formatName": "string",
        "outputDecorator": {},
        "inputDecorator": {},
        "codec": {}
      },
      "jsonFactory": {
        "characterEscapes": {
          "escapeCodesForAscii": [
            0
          ]
        },
        "rootValueSeparator": "string",
        "formatName": "string",
        "outputDecorator": {},
        "inputDecorator": {},
        "codec": {}
      }
    },
    "prettyPrinter": {},
    "featureMask": 0,
    "formatFeatures": 0,
    "outputTarget": {},
    "outputBuffered": 0,
    "outputContext": {
      "parent": {},
      "entryCount": 0,
      "currentValue": {},
      "typeDesc": "string",
      "currentIndex": 0,
      "currentName": "string"
    },
    "highestEscapedChar": 0
  },
  "filterProvider": {}
}

Properties

Name Type Required Restrictions Description
defaultNullValueSerializer JsonSerializerObject false none none
annotationIntrospector AnnotationIntrospector false none none
defaultNullKeySerializer JsonSerializerObject false none none
timeZone TimeZone false none none
locale Locale false none none
config SerializationConfig false none none
typeFactory TypeFactory false none none
generator JsonGenerator false none none
filterProvider FilterProvider false none none

SessionTokenAuthentication

{
  "type": "SESSION_TOKEN",
  "url": "string",
  "username": "string",
  "password": "string"
}

Properties

allOf - discriminator: IntegrationAuthentication.type

Name Type Required Restrictions Description
anonymous IntegrationAuthentication false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» url string false none none
» username string false none none
» password string false none none

SettingsDTO

{
  "gamenetEnabled": true,
  "pentestEnabled": true,
  "vulnerabilityScanEnabled": true,
  "ldapEnabled": true,
  "observerEnabled": true,
  "vlmEnabled": true,
  "gamenetSettings": {
    "soundOnTeamChangeEnabled": true,
    "selectedSoundId": "string",
    "ctfPodiumFirstPlaceSoundEnabled": true,
    "ctfPodiumFirstPlaceSoundId": "string",
    "ctfPodiumSecondThirdPlaceSoundEnabled": true,
    "ctfPodiumSecondThirdPlaceSoundId": "string",
    "exerciseRefreshInterval": 0,
    "scoringTimelineWidgetRefreshInterval": 0
  },
  "ldapSettings": {
    "principal": "string",
    "searchBase": "string",
    "principalSuffix": "string",
    "urls": [
      "string"
    ],
    "groupMappings": [
      {
        "role": "string",
        "distinguishedName": "string"
      }
    ],
    "useSavedPassword": true
  },
  "vlmSettings": {
    "url": "string",
    "serviceKey": "string",
    "localWebConsoleProxyEnabled": true
  },
  "observerSettings": {
    "key": "string",
    "enabledViews": [
      "CAMPAIGN_LIVE"
    ],
    "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47"
  },
  "apiTokens": [
    {
      "name": "string",
      "value": "string",
      "timestamp": 0,
      "signingKey": {
        "value": "string",
        "timestamp": 0
      }
    }
  ],
  "widgetRefreshInterval": 0,
  "timestamp": 0,
  "applicationUrl": "string",
  "customLogoImageId": "string",
  "isLightTheme": true
}

Properties

Name Type Required Restrictions Description
gamenetEnabled boolean false none none
pentestEnabled boolean false none none
vulnerabilityScanEnabled boolean false none none
ldapEnabled boolean false none none
observerEnabled boolean false none none
vlmEnabled boolean false none none
gamenetSettings GamenetSettingsDTO false none none
ldapSettings LdapSettingsDTO false none none
vlmSettings VlmSettingsDTO false none none
observerSettings ObserverSettingsDTO false none none
apiTokens [ApiToken] false none none
widgetRefreshInterval integer(int64) false none none
timestamp integer(int64) false none none
applicationUrl string false none none
customLogoImageId string false none none
isLightTheme boolean false read-only none

ShortBuilder

{}

Properties

None

SigningKey

{
  "value": "string",
  "timestamp": 0
}

Properties

Name Type Required Restrictions Description
value string false none none
timestamp integer(int64) false none none

SituationReport

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "username": "string",
  "timestamp": 0,
  "reportText": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
teamId string(uuid) false none none
exerciseId string(uuid) false none none
username string false none none
timestamp integer(int64) false none none
reportText string false none none

SituationReportsWidgetData

{
  "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "status": "PENDING_CONFIRMATION",
  "timestamp": 0,
  "whiteTeamMember": "string",
  "feedback": "string",
  "blueTeamMember": "string",
  "grade": 0
}

Properties

Name Type Required Restrictions Description
reportId string(uuid) false none none
teamId string(uuid) false none none
teamName string false none none
status string false none none
timestamp integer(int64) false none none
whiteTeamMember string false none none
feedback string false none none
blueTeamMember string false none none
grade integer(int32) false none none

Enumerated Values

Property Value
status PENDING_CONFIRMATION
status CONFIRMED
status DENIED

SlackConfiguration

{
  "integrationType": "REST",
  "webhookUrl": "string"
}

Properties

allOf - discriminator: IntegrationConfiguration.integrationType

Name Type Required Restrictions Description
anonymous IntegrationConfiguration false none none

and

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

SpecialScoringMessage

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "exerciseId": "71ba10b8-c6bd-49fd-9742-f8dbc8ccdb47",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
  "description": "string",
  "username": "string",
  "score": 0,
  "timestamp": 0,
  "created": 0,
  "scoreType": "TOTAL"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
exerciseId string(uuid) false none none
teamId string(uuid) false none none
networkSegmentId string(uuid) false none none
description string false none none
username string false none none
score number(double) false none none
timestamp integer(int64) false none none
created integer(int64) false none none
scoreType string false none none

Enumerated Values

Property Value
scoreType TOTAL
scoreType SPECIAL
scoreType ATTACK_REPORTS
scoreType AVAILABILITY
scoreType INCIDENT_REPORTS
scoreType SITUATION_REPORTS
scoreType RESTORE_FROM_BACKUP
scoreType USE_HINT
scoreType ABANDON_TASK
scoreType SOLVE_TASK

Sse

{}

Properties

None

SseBroadcaster

{}

Properties

None

StartexAndEndex

{
  "startex": 0,
  "endex": 0
}

Properties

Name Type Required Restrictions Description
startex integer(int64) false none none
endex integer(int64) false none none

SubtypeResolver

{}

Properties

None

Target

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "hostname": "string",
  "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
  "targetChecks": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "status": "GOOD",
      "username": "string"
    }
  ],
  "scoreBreakdown": [
    {
      "name": "TOTAL",
      "value": 0
    }
  ],
  "isDeployed": true
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
hostname string false none none
networkSegmentId string(uuid) false none none
targetChecks [TargetCheck] false none none
scoreBreakdown [ScoreBreakdown] false none none
isDeployed boolean false read-only none

TargetCheck

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "status": "GOOD",
  "username": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
status string false none none
username string false none none

Enumerated Values

Property Value
status GOOD
status COMPROMISED
status NOT_AVAILABLE

TargetCheckAvailabilityService

{}

Properties

None

TargetCheckDefinition

{
  "name": "string",
  "description": "string",
  "type": "ICMP_RESPONDER_PING",
  "ipAddress": "string",
  "parameters": [
    {
      "name": "string",
      "value": "string"
    }
  ],
  "scoreWeight": 0,
  "objectives": [
    {
      "name": "string",
      "category": "NETWORKING",
      "campaignPhaseName": "string",
      "scoreWeight": 0,
      "sequence": 0
    }
  ],
  "username": "string"
}

Properties

Name Type Required Restrictions Description
name string false none none
description string false none none
type string false none none
ipAddress string false none none
parameters [TargetCheckParameter] false none none
scoreWeight integer(int32) false none none
objectives [ObjectiveDefinition] false none none
username string false none none

Enumerated Values

Property Value
type ICMP_RESPONDER_PING
type TCP_RESPONDER_SOCKET
type EXTERNAL_SCRIPT

TargetCheckParameter

{
  "name": "string",
  "value": "string"
}

Properties

Name Type Required Restrictions Description
name string false none none
value string false none none

TargetCheckStates

{
  "good": 0,
  "compromised": 0,
  "notAvailable": 0
}

Properties

Name Type Required Restrictions Description
good integer(int32) false none none
compromised integer(int32) false none none
notAvailable integer(int32) false none none

TargetData

{
  "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
  "targetName": "string",
  "vmId": "f1446e55-23f6-4461-a5de-ba794da4dde9",
  "powerState": "POWERED_OFF"
}

Properties

Name Type Required Restrictions Description
targetId string(uuid) false none none
targetName string false none none
vmId string(uuid) false none none
powerState string false none none

Enumerated Values

Property Value
powerState POWERED_OFF
powerState POWERED_ON
powerState SUSPENDED
powerState UNKNOWN

TargetDefinition

{
  "name": "string",
  "hostname": "string",
  "networkSegmentName": "string",
  "targetChecks": [
    {
      "name": "string",
      "description": "string",
      "type": "ICMP_RESPONDER_PING",
      "ipAddress": "string",
      "parameters": [
        {
          "name": "string",
          "value": "string"
        }
      ],
      "scoreWeight": 0,
      "objectives": [
        {
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseName": "string",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "username": "string"
    }
  ],
  "scoreBreakdown": [
    {
      "name": "TOTAL",
      "value": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
name string false none none
hostname string false none none
networkSegmentName string false none none
targetChecks [TargetCheckDefinition] false none none
scoreBreakdown [ScoreBreakdown] false none none

TargetGroup

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "username": "string",
  "objectives": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "category": "NETWORKING",
      "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
      "scoreWeight": 0,
      "sequence": 0
    }
  ],
  "targets": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "hostname": "string",
      "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
      "targetChecks": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "status": "GOOD",
          "username": "string"
        }
      ],
      "scoreBreakdown": [
        {
          "name": "TOTAL",
          "value": 0
        }
      ],
      "isDeployed": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
username string false none none
objectives [Objective] false none none
targets [Target] false none none

TargetGroupDefinition

{
  "name": "string",
  "username": "string",
  "objectives": [
    {
      "name": "string",
      "category": "NETWORKING",
      "campaignPhaseName": "string",
      "scoreWeight": 0,
      "sequence": 0
    }
  ],
  "targets": [
    {
      "name": "string",
      "hostname": "string",
      "networkSegmentName": "string",
      "targetChecks": [
        {
          "name": "string",
          "description": "string",
          "type": "ICMP_RESPONDER_PING",
          "ipAddress": "string",
          "parameters": [
            {
              "name": "string",
              "value": "string"
            }
          ],
          "scoreWeight": 0,
          "objectives": [
            {
              "name": "string",
              "category": "NETWORKING",
              "campaignPhaseName": "string",
              "scoreWeight": 0,
              "sequence": 0
            }
          ],
          "username": "string"
        }
      ],
      "scoreBreakdown": [
        {
          "name": "TOTAL",
          "value": 0
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
name string false none none
username string false none none
objectives [ObjectiveDefinition] false none none
targets [TargetDefinition] false none none

TargetListItem

{
  "id": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none

TargetStatusChangeIntegrationEvent

{
  "id": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "type": "TARGET_STATUS_CHANGE",
  "subjectType": "TARGET",
  "integrationId": {
    "timestamp": 0,
    "date": "2019-08-24T14:15:22Z"
  },
  "subjectId": "string",
  "url": "string",
  "body": "string",
  "statusMapping": {
    "property1": "string",
    "property2": "string"
  }
}

Properties

allOf - discriminator: IntegrationEvent.type

Name Type Required Restrictions Description
anonymous IntegrationEvent false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» url string false none none
» body string false none none
» statusMapping object false none none
»» additionalProperties string false none none

TargetStatusChangeIntegrationEventDTO

{
  "id": "string",
  "type": "TARGET_STATUS_CHANGE",
  "subjectName": "string",
  "subjectType": "TARGET",
  "integrationId": "string",
  "subjectId": "string",
  "url": "string",
  "body": "string",
  "statusMapping": {
    "property1": "string",
    "property2": "string"
  }
}

Properties

allOf - discriminator: IntegrationEventDTO.type

Name Type Required Restrictions Description
anonymous IntegrationEventDTO false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» url string false none none
» body string false none none
» statusMapping object false none none
»» additionalProperties string false none none

TargetStatusWidgetData

{
  "targetId": "cbca1126-180e-4334-9df8-cf82289d378b",
  "targetName": "string",
  "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
  "networkSegmentName": "string",
  "targetChecks": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "status": "GOOD",
      "username": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
targetId string(uuid) false none none
targetName string false none none
networkSegmentId string(uuid) false none none
networkSegmentName string false none none
targetChecks [TargetCheck] false none none

TargetsDTO

{
  "targets": [
    {
      "id": "string",
      "name": "string"
    }
  ],
  "parentDomain": "GN_EXERCISE",
  "parentTargetId": "string",
  "parentTargetName": "string"
}

Properties

Name Type Required Restrictions Description
targets [TargetListItem] false none none
parentDomain string false none none
parentTargetId string false none none
parentTargetName string false none none

Enumerated Values

Property Value
parentDomain GN_EXERCISE
parentDomain GN_BLUE_TEAM
parentDomain ADMIN
parentDomain SUPER_ADMIN

TaskReportsWidgetData

{
  "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "timestamp": 0,
  "status": "PENDING_CONFIRMATION",
  "whiteTeamMember": "string",
  "feedback": "string",
  "taskId": "e6e9d88a-9b63-468a-aec3-b7a11de27af8",
  "title": "string",
  "category": "string",
  "createdBy": "string",
  "validatedOn": 0,
  "initialScore": 0,
  "score": 0,
  "scorePercentage": 0
}

Properties

Name Type Required Restrictions Description
reportId string(uuid) false none none
teamId string(uuid) false none none
teamName string false none none
timestamp integer(int64) false none none
status string false none none
whiteTeamMember string false none none
feedback string false none none
taskId string(uuid) false none none
title string false none none
category string false none none
createdBy string false none none
validatedOn integer(int64) false none none
initialScore integer(int32) false none none
score integer(int32) false none none
scorePercentage number(double) false none none

Enumerated Values

Property Value
status PENDING_CONFIRMATION
status CONFIRMED
status DENIED

TeamSettingsDTO

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string"
}

Properties

Name Type Required Restrictions Description
teamId string(uuid) false none none
teamName string false none none

TeamStatusLeaderDTO

{
  "score": 0,
  "tasksSolved": 0
}

Properties

Name Type Required Restrictions Description
score number(double) false none none
tasksSolved integer(int32) false none none

TeamStatusWidgetData

{
  "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
  "teamName": "string",
  "states": {
    "good": 0,
    "compromised": 0,
    "notAvailable": 0
  }
}

Properties

Name Type Required Restrictions Description
teamId string(uuid) false none none
teamName string false none none
states TargetCheckStates false none none

TemporalUnit

{
  "duration": {
    "seconds": 0,
    "nano": 0,
    "units": [
      {
        "duration": {},
        "durationEstimated": true,
        "dateBased": true,
        "timeBased": true
      }
    ],
    "negative": true,
    "zero": true
  },
  "durationEstimated": true,
  "dateBased": true,
  "timeBased": true
}

Properties

Name Type Required Restrictions Description
duration Duration false none none
durationEstimated boolean false none none
dateBased boolean false none none
timeBased boolean false none none

TimeZone

{
  "id": "string",
  "displayName": "string",
  "dstsavings": 0,
  "rawOffset": 0
}

Properties

Name Type Required Restrictions Description
id string false none none
displayName string false none none
dstsavings integer(int32) false none none
rawOffset integer(int32) false none none

TypeBindings

{
  "empty": true,
  "typeParameters": [
    {
      "interface": true,
      "primitive": true,
      "interfaces": [
        {}
      ],
      "genericSignature": "string",
      "final": true,
      "abstract": true,
      "contentType": {},
      "bindings": {
        "empty": true,
        "typeParameters": []
      },
      "concrete": true,
      "referencedType": {},
      "enumType": true,
      "superClass": {},
      "throwable": true,
      "arrayType": true,
      "collectionLikeType": true,
      "contentValueHandler": {},
      "contentTypeHandler": {},
      "containerType": true,
      "valueHandler": {},
      "typeHandler": {},
      "keyType": {},
      "javaLangObject": true,
      "mapLikeType": true,
      "erasedSignature": "string",
      "typeName": "string",
      "referenceType": true
    }
  ]
}

Properties

Name Type Required Restrictions Description
empty boolean false none none
typeParameters [JavaType] false none none

TypeFactory

{
  "classLoader": {
    "parent": {},
    "name": "string",
    "unnamedModule": {
      "layer": {},
      "name": "string",
      "descriptor": {
        "open": true,
        "automatic": true
      },
      "classLoader": {},
      "annotations": [
        {}
      ],
      "declaredAnnotations": [
        {}
      ],
      "named": true,
      "packages": [
        "string"
      ]
    },
    "registeredAsParallelCapable": true,
    "definedPackages": [
      {
        "name": "string",
        "annotations": [
          {}
        ],
        "declaredAnnotations": [
          {}
        ],
        "sealed": true,
        "specificationTitle": "string",
        "specificationVersion": "string",
        "specificationVendor": "string",
        "implementationTitle": "string",
        "implementationVersion": "string",
        "implementationVendor": "string"
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
classLoader ClassLoader false none none

UnpublishedExercise

{
  "teamSettingsEnabled": true,
  "networkSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "type": "CAMPAIGN",
  "definition": {
    "image": "string",
    "networkSegments": [
      {
        "name": "string",
        "description": "string",
        "colorHex": "string"
      }
    ],
    "name": "string",
    "type": "CAMPAIGN",
    "description": "string",
    "gitConfiguration": {
      "url": "string",
      "authenticationType": "CREDENTIALS",
      "branch": "string"
    },
    "blueTeamLdapGroup": "string",
    "externalId": "string",
    "campaignPhases": [
      {
        "name": "string",
        "description": "string",
        "startTime": 0
      }
    ],
    "externalSource": "VLM",
    "activeTimes": [
      {
        "startTime": 0,
        "endTime": 0
      }
    ],
    "difficulty": "EASY",
    "blueTeamName": "string",
    "targetGroups": [
      {
        "name": "string",
        "username": "string",
        "objectives": [
          {
            "name": "string",
            "category": "NETWORKING",
            "campaignPhaseName": "string",
            "scoreWeight": 0,
            "sequence": 0
          }
        ],
        "targets": [
          {
            "name": "string",
            "hostname": "string",
            "networkSegmentName": "string",
            "targetChecks": [
              {
                "name": "string",
                "description": "string",
                "type": "ICMP_RESPONDER_PING",
                "ipAddress": "string",
                "parameters": [
                  {
                    "name": "string",
                    "value": "string"
                  }
                ],
                "scoreWeight": 0,
                "objectives": [
                  {
                    "name": "string",
                    "category": "NETWORKING",
                    "campaignPhaseName": "string",
                    "scoreWeight": 0,
                    "sequence": 0
                  }
                ],
                "username": "string"
              }
            ],
            "scoreBreakdown": [
              {
                "name": "TOTAL",
                "value": 0
              }
            ]
          }
        ]
      }
    ],
    "numberOfTeams": 0,
    "gmaId": [
      "497f6eca-6276-4993-bfeb-53cbbbba6f08"
    ],
    "imageId": "string",
    "whiteTeamLdapGroup": "string",
    "isTeamSettingsEnabled": true,
    "isTargetManagementEnabled": true
  },
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "externalId": "string",
  "campaignPhases": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeams": [
    {
      "avatarFileId": "string",
      "ldapGroup": "string",
      "name": "string",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a",
      "targetGroups": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "username": "string",
          "objectives": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "category": "NETWORKING",
              "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
              "scoreWeight": 0,
              "sequence": 0
            }
          ],
          "targets": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "hostname": "string",
              "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
              "targetChecks": [
                {
                  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
                  "name": "string",
                  "status": "GOOD",
                  "username": "string"
                }
              ],
              "scoreBreakdown": [
                {
                  "name": "TOTAL",
                  "value": 0
                }
              ],
              "isDeployed": true
            }
          ]
        }
      ],
      "tasks": [
        {
          "niceIds": {
            "taskIds": [
              "string"
            ],
            "knowledgeIds": [
              "string"
            ],
            "skillIds": [
              "string"
            ],
            "abilityIds": [
              "string"
            ]
          },
          "type": "SINGLE_ANSWER",
          "description": "string",
          "requiredTaskIds": [
            "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          ],
          "targets": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "hostname": "string",
              "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
              "targetChecks": [
                {
                  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
                  "name": "string",
                  "status": "GOOD",
                  "username": "string"
                }
              ],
              "scoreBreakdown": [
                {
                  "name": "TOTAL",
                  "value": 0
                }
              ],
              "isDeployed": true
            }
          ],
          "question": "string",
          "title": "string",
          "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
          "category": "string",
          "hints": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "content": "string",
              "penalty": 0
            }
          ],
          "score": 0,
          "isLocked": true
        }
      ]
    }
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTargetManagementEnabled": true,
  "redTeamLdapGroup": "string",
  "gracePeriodInMinutes": 0,
  "pointsBudget": {
    "total": 0,
    "breakdown": [
      {
        "name": "TOTAL",
        "value": 0
      }
    ]
  },
  "expectedSituationReportsCount": 0,
  "attackFlagFileUnixPaths": [
    "string"
  ],
  "attackFlagFileWinPaths": [
    "string"
  ],
  "scoringBotUsername": "string",
  "scoringBotPassword": "string",
  "situationReportTemplate": "string",
  "incidentReportTemplate": "string",
  "disabledIncidentTypes": [
    "ONLINE"
  ],
  "durationPeriod": "string",
  "taskAbandonPenalty": 0,
  "openedTasksLimit": 0,
  "taskCategories": [
    {
      "code": "string",
      "name": "string",
      "icon": "string"
    }
  ],
  "individualAssessmentIdlePeriod": "string",
  "missionDurationPeriod": "string",
  "workRoleId": "string",
  "showTeamPosition": true,
  "isTargetCheckStatusHidden": true,
  "isNiceFrameworkSupported": true,
  "isIndividualAssessment": true
}

Properties

allOf - discriminator: IExercise.type

Name Type Required Restrictions Description
anonymous IExercise false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» blueTeams [UnpublishedExerciseBlueTeam] false none none
» redTeamLdapGroup string false none none
» gracePeriodInMinutes integer(int32) false none none
» pointsBudget ExercisePointsBudget false none none
» expectedSituationReportsCount integer(int32) false none none
» attackFlagFileUnixPaths [string] false none none
» attackFlagFileWinPaths [string] false none none
» scoringBotUsername string false none none
» scoringBotPassword string false none none
» situationReportTemplate string false none none
» incidentReportTemplate string false none none
» disabledIncidentTypes [string] false none none
» durationPeriod string false none none
» taskAbandonPenalty number(double) false none none
» openedTasksLimit integer(int32) false none none
» taskCategories [CTFTaskCategory] false none none
» individualAssessmentIdlePeriod string false none none
» missionDurationPeriod string false none none
» workRoleId string false none none
» showTeamPosition boolean false none none
» isTargetCheckStatusHidden boolean false read-only none
» isNiceFrameworkSupported boolean false read-only none
» isIndividualAssessment boolean false read-only none

UnpublishedExerciseBlueTeam

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "ldapGroup": "string",
  "gmaId": "38986f0b-d3bf-44a4-9955-8376fb08408a",
  "targetGroups": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseId": "ec1a6f36-e0b2-4e93-85b6-db68c75b7edc",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "hostname": "string",
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD",
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ],
          "isDeployed": true
        }
      ]
    }
  ],
  "tasks": [
    {
      "niceIds": {
        "taskIds": [
          "string"
        ],
        "knowledgeIds": [
          "string"
        ],
        "skillIds": [
          "string"
        ],
        "abilityIds": [
          "string"
        ]
      },
      "type": "SINGLE_ANSWER",
      "description": "string",
      "requiredTaskIds": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "targets": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "hostname": "string",
          "networkSegmentId": "da59500c-a661-45ab-94a0-11930236ec3b",
          "targetChecks": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "name": "string",
              "status": "GOOD",
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ],
          "isDeployed": true
        }
      ],
      "question": "string",
      "title": "string",
      "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a",
      "category": "string",
      "hints": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "content": "string",
          "penalty": 0
        }
      ],
      "score": 0,
      "isLocked": true
    }
  ],
  "avatarFileId": "string"
}

Properties

Name Type Required Restrictions Description
id string(uuid) false none none
name string false none none
ldapGroup string false none none
gmaId string(uuid) false none none
targetGroups [TargetGroup] false none none
tasks [ICTFTask] false none none
avatarFileId string false none none

UnpublishedExerciseDefinition

{
  "image": "string",
  "networkSegments": [
    {
      "name": "string",
      "description": "string",
      "colorHex": "string"
    }
  ],
  "name": "string",
  "type": "CAMPAIGN",
  "description": "string",
  "gitConfiguration": {
    "url": "string",
    "authenticationType": "CREDENTIALS",
    "branch": "string"
  },
  "blueTeamLdapGroup": "string",
  "externalId": "string",
  "campaignPhases": [
    {
      "name": "string",
      "description": "string",
      "startTime": 0
    }
  ],
  "externalSource": "VLM",
  "activeTimes": [
    {
      "startTime": 0,
      "endTime": 0
    }
  ],
  "difficulty": "EASY",
  "blueTeamName": "string",
  "targetGroups": [
    {
      "name": "string",
      "username": "string",
      "objectives": [
        {
          "name": "string",
          "category": "NETWORKING",
          "campaignPhaseName": "string",
          "scoreWeight": 0,
          "sequence": 0
        }
      ],
      "targets": [
        {
          "name": "string",
          "hostname": "string",
          "networkSegmentName": "string",
          "targetChecks": [
            {
              "name": "string",
              "description": "string",
              "type": "ICMP_RESPONDER_PING",
              "ipAddress": "string",
              "parameters": [
                {
                  "name": "string",
                  "value": "string"
                }
              ],
              "scoreWeight": 0,
              "objectives": [
                {
                  "name": "string",
                  "category": "NETWORKING",
                  "campaignPhaseName": "string",
                  "scoreWeight": 0,
                  "sequence": 0
                }
              ],
              "username": "string"
            }
          ],
          "scoreBreakdown": [
            {
              "name": "TOTAL",
              "value": 0
            }
          ]
        }
      ]
    }
  ],
  "numberOfTeams": 0,
  "gmaId": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "imageId": "string",
  "whiteTeamLdapGroup": "string",
  "isTeamSettingsEnabled": true,
  "isTargetManagementEnabled": true,
  "redTeamLdapGroup": "string",
  "gracePeriodInMinutes": 0,
  "pointsBudget": {
    "total": 0,
    "breakdown": [
      {
        "name": "TOTAL",
        "value": 0
      }
    ]
  },
  "expectedSituationReportsCount": 0,
  "attackFlagFileUnixPaths": [
    "string"
  ],
  "attackFlagFileWinPaths": [
    "string"
  ],
  "scoringBotUsername": "string",
  "scoringBotPassword": "string",
  "situationReportTemplate": "string",
  "incidentReportTemplate": "string",
  "disabledIncidentTypes": [
    "ONLINE"
  ],
  "tasks": [
    {
      "niceIds": {
        "taskIds": [
          "string"
        ],
        "knowledgeIds": [
          "string"
        ],
        "skillIds": [
          "string"
        ],
        "abilityIds": [
          "string"
        ]
      },
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "type": "SINGLE_ANSWER",
      "description": "string",
      "targetNamePatterns": [
        "string"
      ],
      "requiredTaskIds": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "question": "string",
      "title": "string",
      "category": "string",
      "hints": [
        {
          "content": "string",
          "penalty": 0
        }
      ],
      "score": 0,
      "isLocked": true
    }
  ],
  "durationPeriod": "string",
  "taskAbandonPenalty": 0,
  "openedTasksLimit": 0,
  "individualAssessmentIdlePeriod": "string",
  "missionDurationPeriod": "string",
  "taskCategories": [
    {
      "code": "string",
      "name": "string",
      "icon": "string"
    }
  ],
  "workRoleId": "string",
  "showTeamPosition": true,
  "isTargetCheckStatusHidden": true,
  "isNiceFrameworkSupported": true,
  "isIndividualAssessment": true
}

Properties

allOf - discriminator: IExerciseDefinition.type

Name Type Required Restrictions Description
anonymous IExerciseDefinition false none none

and

Name Type Required Restrictions Description
anonymous object false none none
» redTeamLdapGroup string false none none
» gracePeriodInMinutes integer(int32) false none none
» pointsBudget ExercisePointsBudget false none none
» expectedSituationReportsCount integer(int32) false none none
» attackFlagFileUnixPaths [string] false none none
» attackFlagFileWinPaths [string] false none none
» scoringBotUsername string false none none
» scoringBotPassword string false none none
» situationReportTemplate string false none none
» incidentReportTemplate string false none none
» disabledIncidentTypes [string] false none none
» tasks [ICTFTaskDefinition] false none none
» durationPeriod string false none none
» taskAbandonPenalty number(double) false none none
» openedTasksLimit integer(int32) false none none
» individualAssessmentIdlePeriod string false none none
» missionDurationPeriod string false none none
» taskCategories [CTFTaskCategory] false none none
» workRoleId string false none none
» showTeamPosition boolean false none none
» isTargetCheckStatusHidden boolean false read-only none
» isNiceFrameworkSupported boolean false read-only none
» isIndividualAssessment boolean false read-only none

UserDetailDTO

{
  "username": "string",
  "fullName": "string",
  "roles": [
    {
      "code": "string",
      "description": "string",
      "targetsByDomain": {
        "property1": [
          "string"
        ],
        "property2": [
          "string"
        ]
      }
    }
  ]
}

Properties

Name Type Required Restrictions Description
username string false none none
fullName string false none none
roles [UserRoleDTO] false none none

UserListDTO

{
  "username": "string",
  "fullName": "string",
  "origin": "LDAP"
}

Properties

Name Type Required Restrictions Description
username string false none none
fullName string false none none
origin string false none none

Enumerated Values

Property Value
origin LDAP
origin LOCAL
origin OBSERVER
origin UNKNOWN
origin EXTERNAL

UserRoleDTO

{
  "code": "string",
  "description": "string",
  "targetsByDomain": {
    "property1": [
      "string"
    ],
    "property2": [
      "string"
    ]
  }
}

Properties

Name Type Required Restrictions Description
code string false none none
description string false none none
targetsByDomain object false none none
» additionalProperties [string] false none none

Value

{
  "valueInclusion": "ALWAYS",
  "contentInclusion": "ALWAYS"
}

Properties

Name Type Required Restrictions Description
valueInclusion string false none none
contentInclusion string false none none

Enumerated Values

Property Value
valueInclusion ALWAYS
valueInclusion NON_NULL
valueInclusion NON_ABSENT
valueInclusion NON_EMPTY
valueInclusion NON_DEFAULT
valueInclusion USE_DEFAULTS
contentInclusion ALWAYS
contentInclusion NON_NULL
contentInclusion NON_ABSENT
contentInclusion NON_EMPTY
contentInclusion NON_DEFAULT
contentInclusion USE_DEFAULTS

VisibilityChecker

{}

Properties

None

VisibilityCheckerObject

{}

Properties

None

VlmSettingsDTO

{
  "url": "string",
  "serviceKey": "string",
  "localWebConsoleProxyEnabled": true
}

Properties

Name Type Required Restrictions Description
url string false none none
serviceKey string false none none
localWebConsoleProxyEnabled boolean false none none