curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}Get somewhere to upload a supporting document
Returns a short-lived URL to PUT one file to, and the documentUrl to send back with the reason once it is uploaded. 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 a file does not attach it - it becomes part of the review only when its documentUrl is sent on .../submission: with the reason, or once afterwards, on its own. A review takes its documents once, so upload them all before sending. For a payment being re-sent with its reason, use Get somewhere to upload a document for a payment instead: there is no review until the payment 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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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-reviews/{reviewId}/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>"
}{
"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
1The review. It must belong to customerId.
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