curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contentLength": 123,
"fileName": "<string>"
}
'import requests
url = "https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents"
payload = {
"contentLength": 123,
"fileName": "<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({contentLength: 123, fileName: '<string>'})
};
fetch('https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents', 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.next.orenda.finance/v1/customers/{customerId}/limit-review-documents",
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([
'contentLength' => 123,
'fileName' => '<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.next.orenda.finance/v1/customers/{customerId}/limit-review-documents"
payload := strings.NewReader("{\n \"contentLength\": 123,\n \"fileName\": \"<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://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contentLength\": 123,\n \"fileName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents")
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 \"contentLength\": 123,\n \"fileName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"upload": {
"uploadUrl": "<string>",
"headers": {},
"expiresAt": "<string>",
"documentUrl": "<string>"
}
}
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}Get somewhere to upload a document for a payment
For a payment refused with reviewable: true that the customer will send again with their reason: returns a short-lived URL to PUT one file to, and the documentUrl to put in the re-sent payment’s limitReview.documents. Call it once per file, with the customerId the payment is sent under (the paying account’s owner: the review is theirs, and a file from any other customer’s folder is refused), upload each, then re-send the payment once with limitReview: { note, documents }. The review it opens takes nothing more after that. The returned headers must be sent exactly as given: the content type and the exact byte count are part of the signature, so S3 refuses an upload of a different type or size rather than storing it. Uploading does not attach anything: a file joins a review only when the payment carrying its documentUrl opens it. Back office can upload for the customer too, with ?programId= naming a program its token’s programs claim allows, the customer read within that program only; a custodian (guardian-bound) role only for a customer whose application is bound to it. Anything outside that is the 404, never a 403; the file lands in that customer’s folder.
curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contentLength": 123,
"fileName": "<string>"
}
'import requests
url = "https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents"
payload = {
"contentLength": 123,
"fileName": "<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({contentLength: 123, fileName: '<string>'})
};
fetch('https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents', 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.next.orenda.finance/v1/customers/{customerId}/limit-review-documents",
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([
'contentLength' => 123,
'fileName' => '<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.next.orenda.finance/v1/customers/{customerId}/limit-review-documents"
payload := strings.NewReader("{\n \"contentLength\": 123,\n \"fileName\": \"<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://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contentLength\": 123,\n \"fileName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/customers/{customerId}/limit-review-documents")
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 \"contentLength\": 123,\n \"fileName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"upload": {
"uploadUrl": "<string>",
"headers": {},
"expiresAt": "<string>",
"documentUrl": "<string>"
}
}
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}Authorizations
The user's token from a completed sign-in. The program and environment come from the token.
Path Parameters
The customer
1Query Parameters
The program to act on. Ignored for customer tokens.
Only when the token carries no sandbox claim: which environment to act in.
true, false Body
The file's type. The domain refuses anything else too.
application/pdf, image/jpeg, image/png, image/heic, image/webp Exact size of the file in bytes, at most 10 MB
x <= 10485760Shown to whoever reviews it; the extension comes from the type
255