curl --request POST \
--url https://api.brussle.com/v1/namespaces/{ns} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"upsert": [
{
"id": "t_123",
"attributes": {
"plan": "pro"
},
"state": {
"subject": "..."
}
}
],
"patch": [
{
"id": "t_124",
"attributes": {
"plan": "enterprise"
},
"state": {
"status": "closed"
}
}
],
"append": [
{
"id": "t_123",
"path": "state.messages",
"values": [
{
"role": "agent",
"text": "..."
}
]
}
],
"delete": [
"t_125"
],
"wait_for": [
"needs_escalation"
],
"wait_timeout_ms": 5000
}
'import requests
url = "https://api.brussle.com/v1/namespaces/{ns}"
payload = {
"upsert": [
{
"id": "t_123",
"attributes": { "plan": "pro" },
"state": { "subject": "..." }
}
],
"patch": [
{
"id": "t_124",
"attributes": { "plan": "enterprise" },
"state": { "status": "closed" }
}
],
"append": [
{
"id": "t_123",
"path": "state.messages",
"values": [
{
"role": "agent",
"text": "..."
}
]
}
],
"delete": ["t_125"],
"wait_for": ["needs_escalation"],
"wait_timeout_ms": 5000
}
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({
upsert: [{id: 't_123', attributes: {plan: 'pro'}, state: {subject: '...'}}],
patch: [{id: 't_124', attributes: {plan: 'enterprise'}, state: {status: 'closed'}}],
append: [{id: 't_123', path: 'state.messages', values: [{role: 'agent', text: '...'}]}],
delete: ['t_125'],
wait_for: ['needs_escalation'],
wait_timeout_ms: 5000
})
};
fetch('https://api.brussle.com/v1/namespaces/{ns}', 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.brussle.com/v1/namespaces/{ns}",
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([
'upsert' => [
[
'id' => 't_123',
'attributes' => [
'plan' => 'pro'
],
'state' => [
'subject' => '...'
]
]
],
'patch' => [
[
'id' => 't_124',
'attributes' => [
'plan' => 'enterprise'
],
'state' => [
'status' => 'closed'
]
]
],
'append' => [
[
'id' => 't_123',
'path' => 'state.messages',
'values' => [
[
'role' => 'agent',
'text' => '...'
]
]
]
],
'delete' => [
't_125'
],
'wait_for' => [
'needs_escalation'
],
'wait_timeout_ms' => 5000
]),
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.brussle.com/v1/namespaces/{ns}"
payload := strings.NewReader("{\n \"upsert\": [\n {\n \"id\": \"t_123\",\n \"attributes\": {\n \"plan\": \"pro\"\n },\n \"state\": {\n \"subject\": \"...\"\n }\n }\n ],\n \"patch\": [\n {\n \"id\": \"t_124\",\n \"attributes\": {\n \"plan\": \"enterprise\"\n },\n \"state\": {\n \"status\": \"closed\"\n }\n }\n ],\n \"append\": [\n {\n \"id\": \"t_123\",\n \"path\": \"state.messages\",\n \"values\": [\n {\n \"role\": \"agent\",\n \"text\": \"...\"\n }\n ]\n }\n ],\n \"delete\": [\n \"t_125\"\n ],\n \"wait_for\": [\n \"needs_escalation\"\n ],\n \"wait_timeout_ms\": 5000\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://api.brussle.com/v1/namespaces/{ns}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"upsert\": [\n {\n \"id\": \"t_123\",\n \"attributes\": {\n \"plan\": \"pro\"\n },\n \"state\": {\n \"subject\": \"...\"\n }\n }\n ],\n \"patch\": [\n {\n \"id\": \"t_124\",\n \"attributes\": {\n \"plan\": \"enterprise\"\n },\n \"state\": {\n \"status\": \"closed\"\n }\n }\n ],\n \"append\": [\n {\n \"id\": \"t_123\",\n \"path\": \"state.messages\",\n \"values\": [\n {\n \"role\": \"agent\",\n \"text\": \"...\"\n }\n ]\n }\n ],\n \"delete\": [\n \"t_125\"\n ],\n \"wait_for\": [\n \"needs_escalation\"\n ],\n \"wait_timeout_ms\": 5000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brussle.com/v1/namespaces/{ns}")
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 \"upsert\": [\n {\n \"id\": \"t_123\",\n \"attributes\": {\n \"plan\": \"pro\"\n },\n \"state\": {\n \"subject\": \"...\"\n }\n }\n ],\n \"patch\": [\n {\n \"id\": \"t_124\",\n \"attributes\": {\n \"plan\": \"enterprise\"\n },\n \"state\": {\n \"status\": \"closed\"\n }\n }\n ],\n \"append\": [\n {\n \"id\": \"t_123\",\n \"path\": \"state.messages\",\n \"values\": [\n {\n \"role\": \"agent\",\n \"text\": \"...\"\n }\n ]\n }\n ],\n \"delete\": [\n \"t_125\"\n ],\n \"wait_for\": [\n \"needs_escalation\"\n ],\n \"wait_timeout_ms\": 5000\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"id": "<string>",
"revision": 1,
"incarnation": 1,
"answers": {}
}
],
"usage": {
"bytes_written": 1,
"bytes_scanned": 1,
"judgment_units": 1,
"tokens_evaluated": 1
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}Write documents (upsert, patch, append, delete)
Operations apply in the order upsert, patch, append, delete and commit atomically for the namespace. A request is never split across two commits. The namespace is created by its first write.
A first write under a template prefix whose judgments your plan no
longer includes (templates need Team or above) is plan_required, and
creates nothing: a frozen template applies to no new namespace.
Namespaces that exist keep writing and answering.
curl --request POST \
--url https://api.brussle.com/v1/namespaces/{ns} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"upsert": [
{
"id": "t_123",
"attributes": {
"plan": "pro"
},
"state": {
"subject": "..."
}
}
],
"patch": [
{
"id": "t_124",
"attributes": {
"plan": "enterprise"
},
"state": {
"status": "closed"
}
}
],
"append": [
{
"id": "t_123",
"path": "state.messages",
"values": [
{
"role": "agent",
"text": "..."
}
]
}
],
"delete": [
"t_125"
],
"wait_for": [
"needs_escalation"
],
"wait_timeout_ms": 5000
}
'import requests
url = "https://api.brussle.com/v1/namespaces/{ns}"
payload = {
"upsert": [
{
"id": "t_123",
"attributes": { "plan": "pro" },
"state": { "subject": "..." }
}
],
"patch": [
{
"id": "t_124",
"attributes": { "plan": "enterprise" },
"state": { "status": "closed" }
}
],
"append": [
{
"id": "t_123",
"path": "state.messages",
"values": [
{
"role": "agent",
"text": "..."
}
]
}
],
"delete": ["t_125"],
"wait_for": ["needs_escalation"],
"wait_timeout_ms": 5000
}
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({
upsert: [{id: 't_123', attributes: {plan: 'pro'}, state: {subject: '...'}}],
patch: [{id: 't_124', attributes: {plan: 'enterprise'}, state: {status: 'closed'}}],
append: [{id: 't_123', path: 'state.messages', values: [{role: 'agent', text: '...'}]}],
delete: ['t_125'],
wait_for: ['needs_escalation'],
wait_timeout_ms: 5000
})
};
fetch('https://api.brussle.com/v1/namespaces/{ns}', 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.brussle.com/v1/namespaces/{ns}",
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([
'upsert' => [
[
'id' => 't_123',
'attributes' => [
'plan' => 'pro'
],
'state' => [
'subject' => '...'
]
]
],
'patch' => [
[
'id' => 't_124',
'attributes' => [
'plan' => 'enterprise'
],
'state' => [
'status' => 'closed'
]
]
],
'append' => [
[
'id' => 't_123',
'path' => 'state.messages',
'values' => [
[
'role' => 'agent',
'text' => '...'
]
]
]
],
'delete' => [
't_125'
],
'wait_for' => [
'needs_escalation'
],
'wait_timeout_ms' => 5000
]),
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.brussle.com/v1/namespaces/{ns}"
payload := strings.NewReader("{\n \"upsert\": [\n {\n \"id\": \"t_123\",\n \"attributes\": {\n \"plan\": \"pro\"\n },\n \"state\": {\n \"subject\": \"...\"\n }\n }\n ],\n \"patch\": [\n {\n \"id\": \"t_124\",\n \"attributes\": {\n \"plan\": \"enterprise\"\n },\n \"state\": {\n \"status\": \"closed\"\n }\n }\n ],\n \"append\": [\n {\n \"id\": \"t_123\",\n \"path\": \"state.messages\",\n \"values\": [\n {\n \"role\": \"agent\",\n \"text\": \"...\"\n }\n ]\n }\n ],\n \"delete\": [\n \"t_125\"\n ],\n \"wait_for\": [\n \"needs_escalation\"\n ],\n \"wait_timeout_ms\": 5000\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://api.brussle.com/v1/namespaces/{ns}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"upsert\": [\n {\n \"id\": \"t_123\",\n \"attributes\": {\n \"plan\": \"pro\"\n },\n \"state\": {\n \"subject\": \"...\"\n }\n }\n ],\n \"patch\": [\n {\n \"id\": \"t_124\",\n \"attributes\": {\n \"plan\": \"enterprise\"\n },\n \"state\": {\n \"status\": \"closed\"\n }\n }\n ],\n \"append\": [\n {\n \"id\": \"t_123\",\n \"path\": \"state.messages\",\n \"values\": [\n {\n \"role\": \"agent\",\n \"text\": \"...\"\n }\n ]\n }\n ],\n \"delete\": [\n \"t_125\"\n ],\n \"wait_for\": [\n \"needs_escalation\"\n ],\n \"wait_timeout_ms\": 5000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brussle.com/v1/namespaces/{ns}")
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 \"upsert\": [\n {\n \"id\": \"t_123\",\n \"attributes\": {\n \"plan\": \"pro\"\n },\n \"state\": {\n \"subject\": \"...\"\n }\n }\n ],\n \"patch\": [\n {\n \"id\": \"t_124\",\n \"attributes\": {\n \"plan\": \"enterprise\"\n },\n \"state\": {\n \"status\": \"closed\"\n }\n }\n ],\n \"append\": [\n {\n \"id\": \"t_123\",\n \"path\": \"state.messages\",\n \"values\": [\n {\n \"role\": \"agent\",\n \"text\": \"...\"\n }\n ]\n }\n ],\n \"delete\": [\n \"t_125\"\n ],\n \"wait_for\": [\n \"needs_escalation\"\n ],\n \"wait_timeout_ms\": 5000\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"id": "<string>",
"revision": 1,
"incarnation": 1,
"answers": {}
}
],
"usage": {
"bytes_written": 1,
"bytes_scanned": 1,
"judgment_units": 1,
"tokens_evaluated": 1
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {
"reason": "<string>",
"suggested_context": {
"recipe": {
"fields": [
"<string>"
],
"last_n": {},
"window": {},
"max_tokens": 2,
"related": {},
"previous": {
"fields": [
"<string>"
],
"anchor": "<string>"
}
},
"cost_per_answer": 1,
"whole_state_cost_per_answer": 1,
"sampled_documents": 2,
"excluded": [
{
"path": "<string>",
"reason": "id"
}
]
}
}
}
}Authorizations
An organization API key. Keys carry a role (read_write or
read_only) and may be restricted to a namespace prefix such as
acme/*, or to one namespace such as acme/prod/tenant_1. A prefix
matches on a / boundary: acme/prod/tenant_1* covers
acme/prod/tenant_1 and everything under acme/prod/tenant_1/,
never acme/prod/tenant_12.
Headers
One key per logical request, reused only on its retries. A key
belongs to one request: within your organization, the same method,
path, query and body. For 24 hours after a successful response, a
request with the key and the same body gets that response back
verbatim, with Idempotent-Replayed: true, and runs nothing. Only a
successful response is kept, so the retry of a request that failed
runs again. While the first request runs or its response is kept,
the key with a different request is idempotency_key_reused (422).
A request sent while one with its key is still running is
rate_limited with Retry-After: 1, without running: retry it to
get the first one's response. In the rare case the key can't be
checked, the request runs as if it had none.
1 - 255Path Parameters
The namespace name, with any / sent as %2F.
Up to 256 bytes. / separates levels of the hierarchy, as in acme/prod/tenant_123. Never exactly . or .., which a URL path can't carry.
1 - 256^(?!\.\.?$)[A-Za-z0-9._:/-]+$Body
- Option 1
- Option 2
- Option 3
- Option 4
At most 1,000 documents and 64 MB per request, across all operations.
1000Show child attributes
Show child attributes
1000Show child attributes
Show child attributes
1000Show child attributes
Show child attributes
1000Up to 128 bytes. Never exactly . or .., which a URL path can't carry.
1 - 128^(?!\.\.?$)[A-Za-z0-9._:/-]+$Block until every named judgment has an answer for a revision at or after the one this write created. An empty list is the same as leaving it out. The first 16 documents of the write are judged at interactive priority; the rest go to ordinary catch-up and usually come back pending.
A judgment, attribute or threshold name. Names are path segments in field references, so they never contain ..
1 - 128^[A-Za-z0-9_-]+$How long wait_for waits, in milliseconds. A value above 10,000 is lowered to 10,000.
x >= 0Response
The write is durable. With wait_for, answers are
included; on timeout the write is still committed and those answers
are pending, meaning only that they were not ready within the
wait. A get works freshness out from the stored answer, so it can
report the same answer as unavailable (never judged in this
incarnation, and nothing will judge it on its own) or stale (a
policy that will not judge this revision on its own).