Ingest extension list
curl --request POST \
--url https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id} \
--header 'Content-Type: text/plain' \
--header 'x-api-key: <api-key>' \
--data 'abcdef1234567890abcdef1234567890
fedcba0987654321fedcba0987654321
'import requests
url = "https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}"
payload = "abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n"
headers = {
"x-api-key": "<api-key>",
"Content-Type": "text/plain"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'text/plain'},
body: 'abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n'
};
fetch('https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}', 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.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n",
CURLOPT_HTTPHEADER => [
"Content-Type: text/plain",
"x-api-key: <api-key>"
],
]);
$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.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}"
payload := strings.NewReader("abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "text/plain")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "text/plain")
.body("abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'text/plain'
request.body = "abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n"
response = http.request(request)
puts response.read_body{
"organization_id": "org123",
"integration_id": "integration_abc123",
"processed": 3,
"added": 2,
"result": [
{
"extension_id": "abcdef1234567890abcdef1234567890",
"status": "added",
"action": "none"
},
{
"extension_id": "fedcba0987654321fedcba0987654321",
"status": "present",
"action": "disable"
},
{
"extension_id": "invalid123",
"status": "error",
"action": "none",
"message": "Invalid extension ID format"
}
]
}Monitoring
Ingest extension list
Ingest a list of extension IDs to create monitoring rules automatically. This endpoint processes extension IDs from various formats (text, JSON, browser data, code) and creates watch rules for the organization. Supports automatic verdict checking for malicious/suspicious extensions. Only available on paid plans.
POST
/
organization
/
{organization_id}
/
ingest
/
{integration_id}
Ingest extension list
curl --request POST \
--url https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id} \
--header 'Content-Type: text/plain' \
--header 'x-api-key: <api-key>' \
--data 'abcdef1234567890abcdef1234567890
fedcba0987654321fedcba0987654321
'import requests
url = "https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}"
payload = "abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n"
headers = {
"x-api-key": "<api-key>",
"Content-Type": "text/plain"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'text/plain'},
body: 'abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n'
};
fetch('https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}', 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.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n",
CURLOPT_HTTPHEADER => [
"Content-Type: text/plain",
"x-api-key: <api-key>"
],
]);
$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.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}"
payload := strings.NewReader("abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "text/plain")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "text/plain")
.body("abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.secureannex.com/v0/organization/{organization_id}/ingest/{integration_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'text/plain'
request.body = "abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n"
response = http.request(request)
puts response.read_body{
"organization_id": "org123",
"integration_id": "integration_abc123",
"processed": 3,
"added": 2,
"result": [
{
"extension_id": "abcdef1234567890abcdef1234567890",
"status": "added",
"action": "none"
},
{
"extension_id": "fedcba0987654321fedcba0987654321",
"status": "present",
"action": "disable"
},
{
"extension_id": "invalid123",
"status": "error",
"action": "none",
"message": "Invalid extension ID format"
}
]
}Authorizations
API key for authentication
Path Parameters
Organization ID
Integration identifier
Body
text/plainapplication/json
Request body can be in multiple formats:
- Text format: Plain text list of extension IDs separated by newlines, spaces, or commas
- JSON format: JSON object with extension_ids array or custom JSONPath
- Browser format: JSON with extensions array containing extension_id and version
- Code format: JSON with platform and extensions array
The body is of type string.
Example:
"abcdef1234567890abcdef1234567890\nfedcba0987654321fedcba0987654321\n"
