curl --request GET \
--url https://api.panoqore.example/v1/approvals/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.panoqore.example/v1/approvals/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.panoqore.example/v1/approvals/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.panoqore.example/v1/approvals/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "<string>",
"kind": "ADJUSTMENT",
"status": "WAITING",
"title": "<string>",
"reason": "<string>",
"proposedBy": {
"kind": "PERSON",
"id": "<string>",
"displayName": "<string>"
},
"approvalsRequired": 123,
"decisions": [
{
"by": {
"kind": "PERSON",
"id": "<string>",
"displayName": "<string>"
},
"approved": true,
"reason": "<string>",
"at": "2023-11-07T05:31:56Z"
}
],
"amount": "<string>",
"currency": "<string>",
"postings": [
{
"accountId": "<string>",
"side": "DEBIT",
"amount": "500000",
"currency": "NGN",
"ifMatchVersion": "<string>"
}
],
"proposal": {},
"subjectId": "<string>",
"breakId": "<string>",
"entryId": "<string>",
"failureCode": "<string>",
"canDecide": true,
"requiresStepUp": true,
"createdAt": "2023-11-07T05:31:56Z",
"decidedAt": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}Get an approval
Scope: read.
curl --request GET \
--url https://api.panoqore.example/v1/approvals/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.panoqore.example/v1/approvals/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.panoqore.example/v1/approvals/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.panoqore.example/v1/approvals/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "<string>",
"kind": "ADJUSTMENT",
"status": "WAITING",
"title": "<string>",
"reason": "<string>",
"proposedBy": {
"kind": "PERSON",
"id": "<string>",
"displayName": "<string>"
},
"approvalsRequired": 123,
"decisions": [
{
"by": {
"kind": "PERSON",
"id": "<string>",
"displayName": "<string>"
},
"approved": true,
"reason": "<string>",
"at": "2023-11-07T05:31:56Z"
}
],
"amount": "<string>",
"currency": "<string>",
"postings": [
{
"accountId": "<string>",
"side": "DEBIT",
"amount": "500000",
"currency": "NGN",
"ifMatchVersion": "<string>"
}
],
"proposal": {},
"subjectId": "<string>",
"breakId": "<string>",
"entryId": "<string>",
"failureCode": "<string>",
"canDecide": true,
"requiresStepUp": true,
"createdAt": "2023-11-07T05:31:56Z",
"decidedAt": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "<string>",
"details": {},
"request_id": "<string>"
}
}Authorizations
An API key, pk_live_… or pk_test_….
Path Parameters
The id.
Response
OK
ADJUSTMENT: adj_
REVERSAL: rev_
FREEZE: frz_
LIMIT_CHANGE: lim_
FX_RATE: fx_
INTEGRATION_MODE: mod_
NAMED_ACCOUNT_CHANGE: nac_
API_KEY: kyr_
PERIOD_CLOSE: prd_
INTERNAL_ACCOUNT: iac_
LEDGER: ldg_
MODULES: mdl_
TEAM_CHANGE: tmc_ ; confirmed by a second tenant admin or an approver
FEE_SCHEDULE: fee_
ADJUSTMENT, REVERSAL, FREEZE, LIMIT_CHANGE, FX_RATE, INTEGRATION_MODE, NAMED_ACCOUNT_CHANGE, API_KEY, PERIOD_CLOSE, INTERNAL_ACCOUNT, LEDGER, MODULES, TEAM_CHANGE, FEE_SCHEDULE APPROVED: and applied
FAILED: approved, but applying it was refused (for example INSUFFICIENT_FUNDS)
WAITING, APPROVED, REJECTED, WITHDRAWN, FAILED Who did something: a person signed in to the console, or an API key.
Show child attributes
Show child attributes
2 above tenant_policies.single_approver_max
Show child attributes
Show child attributes
the money at stake, when there is any Minor units, as a string.
What will happen on approval. For ADJUSTMENT and REVERSAL this is the entry to be posted.
Show child attributes
Show child attributes
kind-specific fields, schema per kind
the account, entry, break or binding this is about
the entry posted on approval
Computed for the caller. has approve scope, did not propose it, has not already decided