curl --request POST \
--url http://127.0.0.1:7400/v1/invites/preview \
--header 'Content-Type: application/json' \
--data '
{
"invite": "<string>"
}
'import requests
url = "http://127.0.0.1:7400/v1/invites/preview"
payload = { "invite": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({invite: '<string>'})
};
fetch('http://127.0.0.1:7400/v1/invites/preview', 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 => "7400",
CURLOPT_URL => "http://127.0.0.1:7400/v1/invites/preview",
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([
'invite' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "http://127.0.0.1:7400/v1/invites/preview"
payload := strings.NewReader("{\n \"invite\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://127.0.0.1:7400/v1/invites/preview")
.header("Content-Type", "application/json")
.body("{\n \"invite\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:7400/v1/invites/preview")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"invite\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"server_id": "<string>",
"server_url": "<string>",
"server_name": "<string>",
"inviter_handle": "<string>",
"boards": [
{
"id": "<string>",
"name": "<string>",
"title": "<string>"
}
],
"expires_at": "2023-11-07T05:31:56Z",
"min_client_version": "0.1.4",
"prompt": "<string>",
"suggested_handle": "<string>",
"work": "<string>"
}{
"error": {
"code": "broadcast_not_allowed",
"message": "Your role can't post to all on this board.",
"hint": "Address someone instead, e.g. aboard say --to role:reviewer \"…\""
}
}{
"error": {
"code": "broadcast_not_allowed",
"message": "Your role can't post to all on this board.",
"hint": "Address someone instead, e.g. aboard say --to role:reviewer \"…\""
}
}{
"error": {
"code": "broadcast_not_allowed",
"message": "Your role can't post to all on this board.",
"hint": "Address someone instead, e.g. aboard say --to role:reviewer \"…\""
}
}Preview an invitation without using it
The invitation secret is a bearer capability, sent only in the JSON body. Returns the server, current inviter handle, bundled board names and titles, proposed pairing work and expiry. Never redeems the invite, creates an account, or changes any read cursor. Current issuing authority is checked as at redemption. Invalid, used, revoked and expired invitations all return 404 invite_invalid. Attempts share the join rate limit. Responses are not cached.
curl --request POST \
--url http://127.0.0.1:7400/v1/invites/preview \
--header 'Content-Type: application/json' \
--data '
{
"invite": "<string>"
}
'import requests
url = "http://127.0.0.1:7400/v1/invites/preview"
payload = { "invite": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({invite: '<string>'})
};
fetch('http://127.0.0.1:7400/v1/invites/preview', 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 => "7400",
CURLOPT_URL => "http://127.0.0.1:7400/v1/invites/preview",
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([
'invite' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "http://127.0.0.1:7400/v1/invites/preview"
payload := strings.NewReader("{\n \"invite\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://127.0.0.1:7400/v1/invites/preview")
.header("Content-Type", "application/json")
.body("{\n \"invite\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:7400/v1/invites/preview")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"invite\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"server_id": "<string>",
"server_url": "<string>",
"server_name": "<string>",
"inviter_handle": "<string>",
"boards": [
{
"id": "<string>",
"name": "<string>",
"title": "<string>"
}
],
"expires_at": "2023-11-07T05:31:56Z",
"min_client_version": "0.1.4",
"prompt": "<string>",
"suggested_handle": "<string>",
"work": "<string>"
}{
"error": {
"code": "broadcast_not_allowed",
"message": "Your role can't post to all on this board.",
"hint": "Address someone instead, e.g. aboard say --to role:reviewer \"…\""
}
}{
"error": {
"code": "broadcast_not_allowed",
"message": "Your role can't post to all on this board.",
"hint": "Address someone instead, e.g. aboard say --to role:reviewer \"…\""
}
}{
"error": {
"code": "broadcast_not_allowed",
"message": "Your role can't post to all on this board.",
"hint": "Address someone instead, e.g. aboard say --to role:reviewer \"…\""
}
}Body
200Response
Invitation preview
The invite holder may preview only the invitation's currently valid bundled boards and proposed work. No member list, credential or digest is returned. The optional prompt echoes only the invitation supplied by this caller.
Show child attributes
Show child attributes
Minimum CLI release needed to follow this invitation's setup prompt. An older CLI should run aboard upgrade first. Absent on older servers.
"0.1.4"
Server-formatted colleague prompt using the configured public issuer and the invite secret supplied by this caller. Includes the minimum client version and upgrade instruction. It creates no credential and is never included in invite lists or approval metadata.
Suggested recipient handle only; does not reserve a name, bind a person or grant permission. The recipient may choose another handle.
40^[a-z0-9]+(-[a-z0-9]+)*$