curl --request POST \
--url https://bud.noetive.io/v1/hold.describe \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "message_01j9x2v8k3e0080000000000",
"part": "<string>",
"uid": "<string>",
"contact": "<string>",
"render": "<string>",
"max_chars": 123,
"cursor": "<string>"
}
'import requests
url = "https://bud.noetive.io/v1/hold.describe"
payload = {
"id": "message_01j9x2v8k3e0080000000000",
"part": "<string>",
"uid": "<string>",
"contact": "<string>",
"render": "<string>",
"max_chars": 123,
"cursor": "<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({
id: 'message_01j9x2v8k3e0080000000000',
part: '<string>',
uid: '<string>',
contact: '<string>',
render: '<string>',
max_chars: 123,
cursor: '<string>'
})
};
fetch('https://bud.noetive.io/v1/hold.describe', 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://bud.noetive.io/v1/hold.describe",
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([
'id' => 'message_01j9x2v8k3e0080000000000',
'part' => '<string>',
'uid' => '<string>',
'contact' => '<string>',
'render' => '<string>',
'max_chars' => 123,
'cursor' => '<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://bud.noetive.io/v1/hold.describe"
payload := strings.NewReader("{\n \"id\": \"message_01j9x2v8k3e0080000000000\",\n \"part\": \"<string>\",\n \"uid\": \"<string>\",\n \"contact\": \"<string>\",\n \"render\": \"<string>\",\n \"max_chars\": 123,\n \"cursor\": \"<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://bud.noetive.io/v1/hold.describe")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"message_01j9x2v8k3e0080000000000\",\n \"part\": \"<string>\",\n \"uid\": \"<string>\",\n \"contact\": \"<string>\",\n \"render\": \"<string>\",\n \"max_chars\": 123,\n \"cursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://bud.noetive.io/v1/hold.describe")
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 \"id\": \"message_01j9x2v8k3e0080000000000\",\n \"part\": \"<string>\",\n \"uid\": \"<string>\",\n \"contact\": \"<string>\",\n \"render\": \"<string>\",\n \"max_chars\": 123,\n \"cursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ref": "<string>",
"kind": "<string>",
"text": "<string>",
"content": {},
"provenance": {
"authenticated": true,
"removed": [
"<string>"
]
},
"cursor": "<string>",
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}Read a held message
A message waiting on approval, and why it is waiting.
curl --request POST \
--url https://bud.noetive.io/v1/hold.describe \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "message_01j9x2v8k3e0080000000000",
"part": "<string>",
"uid": "<string>",
"contact": "<string>",
"render": "<string>",
"max_chars": 123,
"cursor": "<string>"
}
'import requests
url = "https://bud.noetive.io/v1/hold.describe"
payload = {
"id": "message_01j9x2v8k3e0080000000000",
"part": "<string>",
"uid": "<string>",
"contact": "<string>",
"render": "<string>",
"max_chars": 123,
"cursor": "<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({
id: 'message_01j9x2v8k3e0080000000000',
part: '<string>',
uid: '<string>',
contact: '<string>',
render: '<string>',
max_chars: 123,
cursor: '<string>'
})
};
fetch('https://bud.noetive.io/v1/hold.describe', 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://bud.noetive.io/v1/hold.describe",
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([
'id' => 'message_01j9x2v8k3e0080000000000',
'part' => '<string>',
'uid' => '<string>',
'contact' => '<string>',
'render' => '<string>',
'max_chars' => 123,
'cursor' => '<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://bud.noetive.io/v1/hold.describe"
payload := strings.NewReader("{\n \"id\": \"message_01j9x2v8k3e0080000000000\",\n \"part\": \"<string>\",\n \"uid\": \"<string>\",\n \"contact\": \"<string>\",\n \"render\": \"<string>\",\n \"max_chars\": 123,\n \"cursor\": \"<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://bud.noetive.io/v1/hold.describe")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"message_01j9x2v8k3e0080000000000\",\n \"part\": \"<string>\",\n \"uid\": \"<string>\",\n \"contact\": \"<string>\",\n \"render\": \"<string>\",\n \"max_chars\": 123,\n \"cursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://bud.noetive.io/v1/hold.describe")
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 \"id\": \"message_01j9x2v8k3e0080000000000\",\n \"part\": \"<string>\",\n \"uid\": \"<string>\",\n \"contact\": \"<string>\",\n \"render\": \"<string>\",\n \"max_chars\": 123,\n \"cursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ref": "<string>",
"kind": "<string>",
"text": "<string>",
"content": {},
"provenance": {
"authenticated": true,
"removed": [
"<string>"
]
},
"cursor": "<string>",
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}{
"error": {
"code": "invalid",
"message": "<string>",
"hint": "<string>",
"field": "/id",
"request_id": "<string>",
"retry_after_ms": 123,
"version": "<string>",
"current": {}
}
}Authorizations
Bearer token for one agent. Pass as
Authorization: Bearer <token>.
A token is shown once when it is issued and is not recoverable afterwards. Treat it as a secret: it reaches one agent's mail, calendar and contacts, and anything a grant has extended to it.
Body
The object, by its identifier. The identifier says which kind it is, so there is no second field to route on, and an identifier of the wrong kind is refused rather than guessed at.
"message_01j9x2v8k3e0080000000000"
For a message, which part to read.
For a calendar, which event.
For an addressbook, which contact.
How to render the content.
Truncate the rendering. A truncated response says how to continue rather than silently stopping.
Continue a truncated rendering.
Response
The object.
What was read, as the server understood it.
Which shape this is, so a client can branch without re-parsing.
The rendering, for the kinds that have one.
The structured form, for the kinds that have one. Its shape depends
on kind.
Where the content came from and what was removed from it. Kept apart from the rendering on purpose: a client that refuses unauthenticated mail should not have to read prose to find out, and prose is the part a sender influences.
Show child attributes
Show child attributes
Present when there is more to read.
Show child attributes
Show child attributes
Was this page helpful?

