Create team memory
curl --request POST \
--url https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"architecture": "<string>",
"asset_owners": "<string>",
"company": "<string>",
"custom": {},
"threat_models": "<string>"
}
'import requests
url = "https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}"
payload = {
"architecture": "<string>",
"asset_owners": "<string>",
"company": "<string>",
"custom": {},
"threat_models": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
architecture: '<string>',
asset_owners: '<string>',
company: '<string>',
custom: {},
threat_models: '<string>'
})
};
fetch('https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_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://neo.api.projectdiscovery.io/api/v1/memory/team/{team_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 => json_encode([
'architecture' => '<string>',
'asset_owners' => '<string>',
'company' => '<string>',
'custom' => [
],
'threat_models' => '<string>'
]),
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://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}"
payload := strings.NewReader("{\n \"architecture\": \"<string>\",\n \"asset_owners\": \"<string>\",\n \"company\": \"<string>\",\n \"custom\": {},\n \"threat_models\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"architecture\": \"<string>\",\n \"asset_owners\": \"<string>\",\n \"company\": \"<string>\",\n \"custom\": {},\n \"threat_models\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"architecture\": \"<string>\",\n \"asset_owners\": \"<string>\",\n \"company\": \"<string>\",\n \"custom\": {},\n \"threat_models\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"scope": "team",
"success": true,
"team_id": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}Memory
Create team memory
Create shared team memory. Returns 409 if it already exists for this team. You may send any subset of sections. Any accepted team member may create it.
POST
/
api
/
v1
/
memory
/
team
/
{team_id}
Create team memory
curl --request POST \
--url https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"architecture": "<string>",
"asset_owners": "<string>",
"company": "<string>",
"custom": {},
"threat_models": "<string>"
}
'import requests
url = "https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}"
payload = {
"architecture": "<string>",
"asset_owners": "<string>",
"company": "<string>",
"custom": {},
"threat_models": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
architecture: '<string>',
asset_owners: '<string>',
company: '<string>',
custom: {},
threat_models: '<string>'
})
};
fetch('https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_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://neo.api.projectdiscovery.io/api/v1/memory/team/{team_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 => json_encode([
'architecture' => '<string>',
'asset_owners' => '<string>',
'company' => '<string>',
'custom' => [
],
'threat_models' => '<string>'
]),
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://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}"
payload := strings.NewReader("{\n \"architecture\": \"<string>\",\n \"asset_owners\": \"<string>\",\n \"company\": \"<string>\",\n \"custom\": {},\n \"threat_models\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"architecture\": \"<string>\",\n \"asset_owners\": \"<string>\",\n \"company\": \"<string>\",\n \"custom\": {},\n \"threat_models\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://neo.api.projectdiscovery.io/api/v1/memory/team/{team_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"architecture\": \"<string>\",\n \"asset_owners\": \"<string>\",\n \"company\": \"<string>\",\n \"custom\": {},\n \"threat_models\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"scope": "team",
"success": true,
"team_id": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}Authorizations
BearerAuthApiKeyAuth
JWT authentication token
Path Parameters
Team ID
Body
application/json
Update team memory. Each field you send fully replaces that section's Markdown. Omit a field to leave it unchanged. team_info is managed by the system and is ignored if supplied.
Maximum string length:
20000Maximum string length:
20000Maximum string length:
20000User-defined team-memory components (name -> Markdown). Names are normalized to snake_case server-side; a name not yet present creates a new component, an existing key edits it. Names that collide with a predefined component are rejected.
Show child attributes
Show child attributes
Maximum string length:
20000⌘I

