curl --request PUT \
--url https://api.wirespeed.co/v1/group \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"chatOpsEnabled": true,
"containmentEnabled": true,
"sourceSystemUpdates": true,
"alwaysNotify": true
}
'import requests
url = "https://api.wirespeed.co/v1/group"
payload = {
"name": "<string>",
"description": "<string>",
"chatOpsEnabled": True,
"containmentEnabled": True,
"sourceSystemUpdates": True,
"alwaysNotify": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
chatOpsEnabled: true,
containmentEnabled: true,
sourceSystemUpdates: true,
alwaysNotify: true
})
};
fetch('https://api.wirespeed.co/v1/group', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wirespeed.co/v1/group",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'chatOpsEnabled' => true,
'containmentEnabled' => true,
'sourceSystemUpdates' => true,
'alwaysNotify' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.wirespeed.co/v1/group"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"chatOpsEnabled\": true,\n \"containmentEnabled\": true,\n \"sourceSystemUpdates\": true,\n \"alwaysNotify\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.wirespeed.co/v1/group")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"chatOpsEnabled\": true,\n \"containmentEnabled\": true,\n \"sourceSystemUpdates\": true,\n \"alwaysNotify\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wirespeed.co/v1/group")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"chatOpsEnabled\": true,\n \"containmentEnabled\": true,\n \"sourceSystemUpdates\": true,\n \"alwaysNotify\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"teamId": "<string>",
"name": "<string>",
"slug": "<string>",
"isSystem": true,
"entityType": "user",
"chatOpsEnabled": true,
"containmentEnabled": true,
"sourceSystemUpdates": true,
"alwaysNotify": true,
"createdAt": "<string>",
"description": "<string>",
"color": "gray"
}{
"message": "<string>",
"statusCode": 123
}Create a custom group
curl --request PUT \
--url https://api.wirespeed.co/v1/group \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"chatOpsEnabled": true,
"containmentEnabled": true,
"sourceSystemUpdates": true,
"alwaysNotify": true
}
'import requests
url = "https://api.wirespeed.co/v1/group"
payload = {
"name": "<string>",
"description": "<string>",
"chatOpsEnabled": True,
"containmentEnabled": True,
"sourceSystemUpdates": True,
"alwaysNotify": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
chatOpsEnabled: true,
containmentEnabled: true,
sourceSystemUpdates: true,
alwaysNotify: true
})
};
fetch('https://api.wirespeed.co/v1/group', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wirespeed.co/v1/group",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'chatOpsEnabled' => true,
'containmentEnabled' => true,
'sourceSystemUpdates' => true,
'alwaysNotify' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.wirespeed.co/v1/group"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"chatOpsEnabled\": true,\n \"containmentEnabled\": true,\n \"sourceSystemUpdates\": true,\n \"alwaysNotify\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.wirespeed.co/v1/group")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"chatOpsEnabled\": true,\n \"containmentEnabled\": true,\n \"sourceSystemUpdates\": true,\n \"alwaysNotify\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wirespeed.co/v1/group")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"chatOpsEnabled\": true,\n \"containmentEnabled\": true,\n \"sourceSystemUpdates\": true,\n \"alwaysNotify\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"teamId": "<string>",
"name": "<string>",
"slug": "<string>",
"isSystem": true,
"entityType": "user",
"chatOpsEnabled": true,
"containmentEnabled": true,
"sourceSystemUpdates": true,
"alwaysNotify": true,
"createdAt": "<string>",
"description": "<string>",
"color": "gray"
}{
"message": "<string>",
"statusCode": 123
}Authorizations
Team API key sent as a Bearer token. Create a key in Wirespeed under Settings → Team. See https://docs.wirespeed.co/api-reference/authentication.
Body
Display name for the group
Which asset type this group accepts (immutable after creation)
user, endpoint, any Optional description for the group
Group color
gray, red, orange, amber, green, teal, blue, indigo, purple, pink Whether chat ops is enabled for this group
Whether containment is enabled for this group
When false, outbound updates to the source security product are skipped for detections linked to assets in this group
When true, detections involving assets in this group are always escalated for notification, even when the verdict rule would resolve or only run chat ops
Response
user, endpoint, any When false, outbound updates to the source security product are skipped for detections linked to assets in this group
When true, detections involving assets in this group are always escalated for notification, even when the verdict rule would resolve or only run chat ops
gray, red, orange, amber, green, teal, blue, indigo, purple, pink 
