curl --request POST \
--url https://api.journeybee.io/v1/agreements/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"partnership_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"template_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"signers": [
{
"role_name": "<string>",
"routing_order": 1,
"contact_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "jsmith@example.com",
"name": "<string>"
}
]
}
'import requests
url = "https://api.journeybee.io/v1/agreements/"
payload = {
"partnership_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"template_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"signers": [
{
"role_name": "<string>",
"routing_order": 1,
"contact_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "jsmith@example.com",
"name": "<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({
partnership_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
template_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
signers: [
{
role_name: '<string>',
routing_order: 1,
contact_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
user_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
email: 'jsmith@example.com',
name: '<string>'
}
]
})
};
fetch('https://api.journeybee.io/v1/agreements/', 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.journeybee.io/v1/agreements/",
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([
'partnership_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'template_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'signers' => [
[
'role_name' => '<string>',
'routing_order' => 1,
'contact_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'user_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'email' => 'jsmith@example.com',
'name' => '<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://api.journeybee.io/v1/agreements/"
payload := strings.NewReader("{\n \"partnership_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"template_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"signers\": [\n {\n \"role_name\": \"<string>\",\n \"routing_order\": 1,\n \"contact_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"user_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ]\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.journeybee.io/v1/agreements/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"partnership_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"template_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"signers\": [\n {\n \"role_name\": \"<string>\",\n \"routing_order\": 1,\n \"contact_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"user_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.journeybee.io/v1/agreements/")
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 \"partnership_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"template_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"signers\": [\n {\n \"role_name\": \"<string>\",\n \"routing_order\": 1,\n \"contact_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"user_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"uuid": "<string>",
"partnership_uuid": "<string>",
"agreement_template_uuid": "<string>",
"name": "<string>",
"status": "requested",
"provider_key": "<string>",
"external_ref": "<string>",
"failure_reason": "<string>",
"requested_by_user_uuid": "<string>",
"signed_asset_uuid": "<string>",
"certificate_asset_uuid": "<string>",
"sent_at": "<string>",
"viewed_at": "<string>",
"completed_at": "<string>",
"declined_at": "<string>",
"voided_at": "<string>",
"expired_at": "<string>",
"failed_at": "<string>",
"expires_at": "<string>",
"void_requested_at": "<string>",
"void_reason": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"signers": [
{
"uuid": "<string>",
"role_name": "<string>",
"routing_order": 123,
"contact_uuid": "<string>",
"user_uuid": "<string>",
"email": "<string>",
"name": "<string>",
"status": "pending",
"sent_at": "<string>",
"viewed_at": "<string>",
"signed_at": "<string>",
"declined_at": "<string>"
}
]
}Create an agreement in `requested`
Creates an agreement in requested — the provider’s installation picks it up and drives it. The caller names the partnership, the registered template and the signers; the template’s provider_key and installation are copied onto the record.
curl --request POST \
--url https://api.journeybee.io/v1/agreements/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"partnership_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"template_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"signers": [
{
"role_name": "<string>",
"routing_order": 1,
"contact_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "jsmith@example.com",
"name": "<string>"
}
]
}
'import requests
url = "https://api.journeybee.io/v1/agreements/"
payload = {
"partnership_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"template_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"signers": [
{
"role_name": "<string>",
"routing_order": 1,
"contact_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "jsmith@example.com",
"name": "<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({
partnership_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
template_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
signers: [
{
role_name: '<string>',
routing_order: 1,
contact_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
user_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
email: 'jsmith@example.com',
name: '<string>'
}
]
})
};
fetch('https://api.journeybee.io/v1/agreements/', 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.journeybee.io/v1/agreements/",
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([
'partnership_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'template_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'signers' => [
[
'role_name' => '<string>',
'routing_order' => 1,
'contact_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'user_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'email' => 'jsmith@example.com',
'name' => '<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://api.journeybee.io/v1/agreements/"
payload := strings.NewReader("{\n \"partnership_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"template_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"signers\": [\n {\n \"role_name\": \"<string>\",\n \"routing_order\": 1,\n \"contact_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"user_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ]\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.journeybee.io/v1/agreements/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"partnership_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"template_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"signers\": [\n {\n \"role_name\": \"<string>\",\n \"routing_order\": 1,\n \"contact_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"user_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.journeybee.io/v1/agreements/")
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 \"partnership_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"template_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"signers\": [\n {\n \"role_name\": \"<string>\",\n \"routing_order\": 1,\n \"contact_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"user_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"uuid": "<string>",
"partnership_uuid": "<string>",
"agreement_template_uuid": "<string>",
"name": "<string>",
"status": "requested",
"provider_key": "<string>",
"external_ref": "<string>",
"failure_reason": "<string>",
"requested_by_user_uuid": "<string>",
"signed_asset_uuid": "<string>",
"certificate_asset_uuid": "<string>",
"sent_at": "<string>",
"viewed_at": "<string>",
"completed_at": "<string>",
"declined_at": "<string>",
"voided_at": "<string>",
"expired_at": "<string>",
"failed_at": "<string>",
"expires_at": "<string>",
"void_requested_at": "<string>",
"void_reason": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"signers": [
{
"uuid": "<string>",
"role_name": "<string>",
"routing_order": 123,
"contact_uuid": "<string>",
"user_uuid": "<string>",
"email": "<string>",
"name": "<string>",
"status": "pending",
"sent_at": "<string>",
"viewed_at": "<string>",
"signed_at": "<string>",
"declined_at": "<string>"
}
]
}Authorizations
API key authentication. Use "Bearer <api_key>" or "Api-Key <api_key>".
Body
The partnership the agreement belongs to. Archived or foreign partnerships are a 404.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$The registered provider template (must be active and owned by this company). Its provider_key and installation_uuid are copied onto the agreement.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$1 - 5001 - 25 elementsShow child attributes
Show child attributes
Response
Default Response
The partnership this agreement belongs to. The subject of every v1 agreement.
The provider template this agreement was created from, or null once the template is deleted.
Document name shown to signers.
requested after create; the provider's installation moves it through sent/viewed to signed, or to a terminal declined, voided, expired or failed. Never settable by a person.
requested, sent, viewed, signed, declined, voided, expired, failed The provider app's name (installations.app_id -> apps.name), stamped by the server — identifies which provider owns this agreement.
The provider's object id for this agreement (e.g. the envelope id), set by the installation on send.
The provider's own error text when status is failed.
User who created the agreement, when the creating credential identifies one.
Asset holding the signed document, once uploaded (JOU-961).
Asset holding the completion certificate, once uploaded (JOU-961).
Provider-reported signing deadline.
Set when a person requested a void; the provider's installation carries it out and then patches status to voided.
Optional reason recorded with the void request. Internal — never shown to the partner.
Show child attributes
Show child attributes