Cost
Create a shared-cost split rule
Split the spend of one tag value across other values of the same key: evenly, by fixed percents that add up to 100, or in proportion to each target’s own spend that day (evenly when none of them has any). effectiveFrom is the first day of the month the rule starts. A pool cannot also be a target, and a value that is a pool or a target of another split of the key cannot take part in this one.
POST
/
api
/
v1
/
tenant
/
cost
/
split-rules
Create a shared-cost split rule
curl --request POST \
--url https://api.costgraph.ai/api/v1/tenant/cost/split-rules \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>' \
--data '
{
"effectiveFrom": "<string>",
"sourceValue": "<string>",
"tagKey": "<string>",
"targets": [
{
"value": "<string>",
"percent": "33.33"
}
],
"includeUnallocated": true
}
'import requests
url = "https://api.costgraph.ai/api/v1/tenant/cost/split-rules"
payload = {
"effectiveFrom": "<string>",
"sourceValue": "<string>",
"tagKey": "<string>",
"targets": [
{
"value": "<string>",
"percent": "33.33"
}
],
"includeUnallocated": True
}
headers = {
"X-CostGraph-Tenant-ID": "<x-costgraph-tenant-id>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-CostGraph-Tenant-ID': '<x-costgraph-tenant-id>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
effectiveFrom: '<string>',
sourceValue: '<string>',
tagKey: '<string>',
targets: [{value: '<string>', percent: '33.33'}],
includeUnallocated: true
})
};
fetch('https://api.costgraph.ai/api/v1/tenant/cost/split-rules', 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.costgraph.ai/api/v1/tenant/cost/split-rules",
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([
'effectiveFrom' => '<string>',
'sourceValue' => '<string>',
'tagKey' => '<string>',
'targets' => [
[
'value' => '<string>',
'percent' => '33.33'
]
],
'includeUnallocated' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>"
],
]);
$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.costgraph.ai/api/v1/tenant/cost/split-rules"
payload := strings.NewReader("{\n \"effectiveFrom\": \"<string>\",\n \"sourceValue\": \"<string>\",\n \"tagKey\": \"<string>\",\n \"targets\": [\n {\n \"value\": \"<string>\",\n \"percent\": \"33.33\"\n }\n ],\n \"includeUnallocated\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
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://api.costgraph.ai/api/v1/tenant/cost/split-rules")
.header("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"effectiveFrom\": \"<string>\",\n \"sourceValue\": \"<string>\",\n \"tagKey\": \"<string>\",\n \"targets\": [\n {\n \"value\": \"<string>\",\n \"percent\": \"33.33\"\n }\n ],\n \"includeUnallocated\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.costgraph.ai/api/v1/tenant/cost/split-rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-CostGraph-Tenant-ID"] = '<x-costgraph-tenant-id>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"effectiveFrom\": \"<string>\",\n \"sourceValue\": \"<string>\",\n \"tagKey\": \"<string>\",\n \"targets\": [\n {\n \"value\": \"<string>\",\n \"percent\": \"33.33\"\n }\n ],\n \"includeUnallocated\": true\n}"
response = http.request(request)
puts response.read_body{
"message": "some message",
"status": "success",
"data": {
"createdAt": "<string>",
"effectiveFrom": "<string>",
"id": "<string>",
"includeUnallocated": true,
"method": "<string>",
"sourceValue": "<string>",
"tagKey": "<string>",
"targets": [
{
"value": "<string>",
"percent": "33.33"
}
],
"updatedAt": "<string>"
}
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}Authorizations
Enter "Bearer {token}"
Headers
Tenant ID
Body
application/json
Split rule
Available options:
even, fixed, proportional Maximum string length:
500Maximum string length:
200Required array length:
1 - 200 elementsShow child attributes
Show child attributes
Was this page helpful?
⌘I
Create a shared-cost split rule
curl --request POST \
--url https://api.costgraph.ai/api/v1/tenant/cost/split-rules \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>' \
--data '
{
"effectiveFrom": "<string>",
"sourceValue": "<string>",
"tagKey": "<string>",
"targets": [
{
"value": "<string>",
"percent": "33.33"
}
],
"includeUnallocated": true
}
'import requests
url = "https://api.costgraph.ai/api/v1/tenant/cost/split-rules"
payload = {
"effectiveFrom": "<string>",
"sourceValue": "<string>",
"tagKey": "<string>",
"targets": [
{
"value": "<string>",
"percent": "33.33"
}
],
"includeUnallocated": True
}
headers = {
"X-CostGraph-Tenant-ID": "<x-costgraph-tenant-id>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-CostGraph-Tenant-ID': '<x-costgraph-tenant-id>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
effectiveFrom: '<string>',
sourceValue: '<string>',
tagKey: '<string>',
targets: [{value: '<string>', percent: '33.33'}],
includeUnallocated: true
})
};
fetch('https://api.costgraph.ai/api/v1/tenant/cost/split-rules', 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.costgraph.ai/api/v1/tenant/cost/split-rules",
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([
'effectiveFrom' => '<string>',
'sourceValue' => '<string>',
'tagKey' => '<string>',
'targets' => [
[
'value' => '<string>',
'percent' => '33.33'
]
],
'includeUnallocated' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>"
],
]);
$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.costgraph.ai/api/v1/tenant/cost/split-rules"
payload := strings.NewReader("{\n \"effectiveFrom\": \"<string>\",\n \"sourceValue\": \"<string>\",\n \"tagKey\": \"<string>\",\n \"targets\": [\n {\n \"value\": \"<string>\",\n \"percent\": \"33.33\"\n }\n ],\n \"includeUnallocated\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
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://api.costgraph.ai/api/v1/tenant/cost/split-rules")
.header("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"effectiveFrom\": \"<string>\",\n \"sourceValue\": \"<string>\",\n \"tagKey\": \"<string>\",\n \"targets\": [\n {\n \"value\": \"<string>\",\n \"percent\": \"33.33\"\n }\n ],\n \"includeUnallocated\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.costgraph.ai/api/v1/tenant/cost/split-rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-CostGraph-Tenant-ID"] = '<x-costgraph-tenant-id>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"effectiveFrom\": \"<string>\",\n \"sourceValue\": \"<string>\",\n \"tagKey\": \"<string>\",\n \"targets\": [\n {\n \"value\": \"<string>\",\n \"percent\": \"33.33\"\n }\n ],\n \"includeUnallocated\": true\n}"
response = http.request(request)
puts response.read_body{
"message": "some message",
"status": "success",
"data": {
"createdAt": "<string>",
"effectiveFrom": "<string>",
"id": "<string>",
"includeUnallocated": true,
"method": "<string>",
"sourceValue": "<string>",
"tagKey": "<string>",
"targets": [
{
"value": "<string>",
"percent": "33.33"
}
],
"updatedAt": "<string>"
}
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}