What approving this would do
curl --request GET \
--url https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact', 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.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact"
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))
}HttpResponse<String> response = Unirest.get("https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"amount_cents": 123,
"currency": "<string>",
"rule": "<string>",
"executed": true,
"session": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"budget_cents": 123,
"spent_cents": 123,
"remaining_cents": 123,
"returns_on_deny_cents": 123,
"open_holds": 123
},
"agent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"mode": "test",
"scopes": [
"<string>"
]
},
"windows": [
{
"kind": "velocity",
"window_seconds": 123,
"cap_cents": 123,
"spent_cents": 123,
"remaining_cents": 123
}
],
"spend_token": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_ceiling_cents": 123,
"counterparty": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"single_use": true
}
}
}{
"error": {
"message": "<string>",
"code": "runtime_key_required"
}
}Everything an approver needs to decide, before they click: the amount, the rule that held it, the budget it draws on, how much comes back if it is denied, how many other holds compete for the same budget, and every window it consumes.
Budget is already reserved while an intent is held, so approving costs no further
headroom. returns_on_deny_cents is what denying gives back.
An approver who only sees “approve $2,400?” is rubber-stamping. This is the call that fixes that.
GET
/
control
/
v1
/
workspaces
/
{workspace_slug}
/
action_intents
/
{id}
/
impact
What approving this would do
curl --request GET \
--url https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact', 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.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact"
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))
}HttpResponse<String> response = Unirest.get("https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kordio.io/control/v1/workspaces/{workspace_slug}/action_intents/{id}/impact")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"amount_cents": 123,
"currency": "<string>",
"rule": "<string>",
"executed": true,
"session": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"budget_cents": 123,
"spent_cents": 123,
"remaining_cents": 123,
"returns_on_deny_cents": 123,
"open_holds": 123
},
"agent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"mode": "test",
"scopes": [
"<string>"
]
},
"windows": [
{
"kind": "velocity",
"window_seconds": 123,
"cap_cents": 123,
"spent_cents": 123,
"remaining_cents": 123
}
],
"spend_token": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_ceiling_cents": 123,
"counterparty": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"single_use": true
}
}
}{
"error": {
"message": "<string>",
"code": "runtime_key_required"
}
}Authorizations
An identity bearer token for a person or your backend. Capabilities are per member, per workspace. This credential can manage the workspace and can never authorize an action as an agent.
Response
The impact summary.
Show child attributes
Show child attributes