Brainstorm chat (AI)
curl --request POST \
--url http://localhost:8080/api/v1/tap/brainstorm \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"messages": [
{
"content": "<string>"
}
],
"currentDescription": "<string>",
"tapType": "structured"
}
'import requests
url = "http://localhost:8080/api/v1/tap/brainstorm"
payload = {
"messages": [{ "content": "<string>" }],
"currentDescription": "<string>",
"tapType": "structured"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [{content: '<string>'}],
currentDescription: '<string>',
tapType: 'structured'
})
};
fetch('http://localhost:8080/api/v1/tap/brainstorm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v1/tap/brainstorm",
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([
'messages' => [
[
'content' => '<string>'
]
],
'currentDescription' => '<string>',
'tapType' => 'structured'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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 := "http://localhost:8080/api/v1/tap/brainstorm"
payload := strings.NewReader("{\n \"messages\": [\n {\n \"content\": \"<string>\"\n }\n ],\n \"currentDescription\": \"<string>\",\n \"tapType\": \"structured\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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("http://localhost:8080/api/v1/tap/brainstorm")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"messages\": [\n {\n \"content\": \"<string>\"\n }\n ],\n \"currentDescription\": \"<string>\",\n \"tapType\": \"structured\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/tap/brainstorm")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"messages\": [\n {\n \"content\": \"<string>\"\n }\n ],\n \"currentDescription\": \"<string>\",\n \"tapType\": \"structured\"\n}"
response = http.request(request)
puts response.read_body{
"reply": "<string>",
"description": "<string>",
"suggestedEnvVars": [
"<string>"
]
}Taps
Brainstorm chat (AI)
Multi-turn conversational endpoint that helps refine a vague tap idea into a clear instruction. The AI asks one focused clarifying question at a time, suggests data sources, recognizes Datris platform tables, and returns an updated instruction draft on every turn.
POST
/
api
/
v1
/
tap
/
brainstorm
Brainstorm chat (AI)
curl --request POST \
--url http://localhost:8080/api/v1/tap/brainstorm \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"messages": [
{
"content": "<string>"
}
],
"currentDescription": "<string>",
"tapType": "structured"
}
'import requests
url = "http://localhost:8080/api/v1/tap/brainstorm"
payload = {
"messages": [{ "content": "<string>" }],
"currentDescription": "<string>",
"tapType": "structured"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [{content: '<string>'}],
currentDescription: '<string>',
tapType: 'structured'
})
};
fetch('http://localhost:8080/api/v1/tap/brainstorm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v1/tap/brainstorm",
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([
'messages' => [
[
'content' => '<string>'
]
],
'currentDescription' => '<string>',
'tapType' => 'structured'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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 := "http://localhost:8080/api/v1/tap/brainstorm"
payload := strings.NewReader("{\n \"messages\": [\n {\n \"content\": \"<string>\"\n }\n ],\n \"currentDescription\": \"<string>\",\n \"tapType\": \"structured\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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("http://localhost:8080/api/v1/tap/brainstorm")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"messages\": [\n {\n \"content\": \"<string>\"\n }\n ],\n \"currentDescription\": \"<string>\",\n \"tapType\": \"structured\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/tap/brainstorm")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"messages\": [\n {\n \"content\": \"<string>\"\n }\n ],\n \"currentDescription\": \"<string>\",\n \"tapType\": \"structured\"\n}"
response = http.request(request)
puts response.read_body{
"reply": "<string>",
"description": "<string>",
"suggestedEnvVars": [
"<string>"
]
}Authorizations
Optional API key for authentication (enabled via application.yaml)
Body
application/json
Show child attributes
Show child attributes
Current draft instruction (optional context for the AI)
Selects the system prompt. document keeps the brainstorm focused on document discovery (where files live, how to enumerate) and stops it asking about chunking, embedding, or vector-store choices.
Available options:
structured, document Response
200 - application/json
Updated chat reply, instruction draft, and suggested env vars
