Reports
Invite an auditor
Gives an external auditor read-only access to one report and emails them an invitation naming it. The auditor signs in to Audit Hub to review the report, its batches, its documents, and its evidence.
The call is idempotent. Sending an address that already has access resends the invitation rather than creating a second grant, so it is also how you resend.
Requires Audit Hub to be enabled on the account, and a token with Accounting and Reporting write permission.
POST
/
reports
/
{report_id}
/
invite
Invite an auditor to a report
curl --request POST \
--url https://app.gomangrove.com/api/v1/reports/{report_id}/invite \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"auditor": {
"email": "auditor@example.com"
}
}
'import requests
url = "https://app.gomangrove.com/api/v1/reports/{report_id}/invite"
payload = { "auditor": { "email": "auditor@example.com" } }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({auditor: {email: 'auditor@example.com'}})
};
fetch('https://app.gomangrove.com/api/v1/reports/{report_id}/invite', 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://app.gomangrove.com/api/v1/reports/{report_id}/invite",
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([
'auditor' => [
'email' => 'auditor@example.com'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://app.gomangrove.com/api/v1/reports/{report_id}/invite"
payload := strings.NewReader("{\n \"auditor\": {\n \"email\": \"auditor@example.com\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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("https://app.gomangrove.com/api/v1/reports/{report_id}/invite")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"auditor\": {\n \"email\": \"auditor@example.com\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gomangrove.com/api/v1/reports/{report_id}/invite")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"auditor\": {\n \"email\": \"auditor@example.com\"\n }\n}"
response = http.request(request)
puts response.read_body{
"report_id": "rep_abc123def456",
"auditor": {
"email": "auditor@example.com",
"status": "invited"
},
"status": "sent"
}Authorizations
Path Parameters
Unique ID of the report in the rep_XXXX syntax. For example: rep_abc123def456
Body
application/json
Show child attributes
Show child attributes
⌘I
Invite an auditor to a report
curl --request POST \
--url https://app.gomangrove.com/api/v1/reports/{report_id}/invite \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"auditor": {
"email": "auditor@example.com"
}
}
'import requests
url = "https://app.gomangrove.com/api/v1/reports/{report_id}/invite"
payload = { "auditor": { "email": "auditor@example.com" } }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({auditor: {email: 'auditor@example.com'}})
};
fetch('https://app.gomangrove.com/api/v1/reports/{report_id}/invite', 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://app.gomangrove.com/api/v1/reports/{report_id}/invite",
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([
'auditor' => [
'email' => 'auditor@example.com'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://app.gomangrove.com/api/v1/reports/{report_id}/invite"
payload := strings.NewReader("{\n \"auditor\": {\n \"email\": \"auditor@example.com\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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("https://app.gomangrove.com/api/v1/reports/{report_id}/invite")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"auditor\": {\n \"email\": \"auditor@example.com\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gomangrove.com/api/v1/reports/{report_id}/invite")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"auditor\": {\n \"email\": \"auditor@example.com\"\n }\n}"
response = http.request(request)
puts response.read_body{
"report_id": "rep_abc123def456",
"auditor": {
"email": "auditor@example.com",
"status": "invited"
},
"status": "sent"
}