curl --request PATCH \
--url https://api.togai.com/usage_meters/{usage_meter_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"billableName": "<string>",
"description": "<string>",
"eventSchemaName": "<string>",
"type": "COUNTER",
"computations": [
{
"computation": {
"*": [
{
"var": "attributes.distance"
},
0.4
]
},
"order": 123,
"id": "<string>",
"matcher": "{\n \"and\": [\n {\"in\": [{\"var\": \"dimension.city\"}, \"chennai\", \"mumbai\"]},\n \"or\": [\n {\">\": [{\"var\": \"attribute.distance\"}, 100]},\n {\"<\": [{\"var\": \"attribute.distance\"}, 20]}\n ]\n ]\n}\n"
}
],
"filters": [
{
"field": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://api.togai.com/usage_meters/{usage_meter_id}"
payload = {
"name": "<string>",
"billableName": "<string>",
"description": "<string>",
"eventSchemaName": "<string>",
"type": "COUNTER",
"computations": [
{
"computation": { "*": [{ "var": "attributes.distance" }, 0.4] },
"order": 123,
"id": "<string>",
"matcher": "{
\"and\": [
{\"in\": [{\"var\": \"dimension.city\"}, \"chennai\", \"mumbai\"]},
\"or\": [
{\">\": [{\"var\": \"attribute.distance\"}, 100]},
{\"<\": [{\"var\": \"attribute.distance\"}, 20]}
]
]
}
"
}
],
"filters": [
{
"field": "<string>",
"value": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
billableName: '<string>',
description: '<string>',
eventSchemaName: '<string>',
type: 'COUNTER',
computations: [
{
computation: {'*': [{var: 'attributes.distance'}, 0.4]},
order: 123,
id: '<string>',
matcher: '{\n "and": [\n {"in": [{"var": "dimension.city"}, "chennai", "mumbai"]},\n "or": [\n {">": [{"var": "attribute.distance"}, 100]},\n {"<": [{"var": "attribute.distance"}, 20]}\n ]\n ]\n}\n'
}
],
filters: [{field: '<string>', value: '<string>'}]
})
};
fetch('https://api.togai.com/usage_meters/{usage_meter_id}', 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.togai.com/usage_meters/{usage_meter_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'billableName' => '<string>',
'description' => '<string>',
'eventSchemaName' => '<string>',
'type' => 'COUNTER',
'computations' => [
[
'computation' => [
'*' => [
[
'var' => 'attributes.distance'
],
0.4
]
],
'order' => 123,
'id' => '<string>',
'matcher' => '{
"and": [
{"in": [{"var": "dimension.city"}, "chennai", "mumbai"]},
"or": [
{">": [{"var": "attribute.distance"}, 100]},
{"<": [{"var": "attribute.distance"}, 20]}
]
]
}
'
]
],
'filters' => [
[
'field' => '<string>',
'value' => '<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.togai.com/usage_meters/{usage_meter_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"billableName\": \"<string>\",\n \"description\": \"<string>\",\n \"eventSchemaName\": \"<string>\",\n \"type\": \"COUNTER\",\n \"computations\": [\n {\n \"computation\": {\n \"*\": [\n {\n \"var\": \"attributes.distance\"\n },\n 0.4\n ]\n },\n \"order\": 123,\n \"id\": \"<string>\",\n \"matcher\": \"{\\n \\\"and\\\": [\\n {\\\"in\\\": [{\\\"var\\\": \\\"dimension.city\\\"}, \\\"chennai\\\", \\\"mumbai\\\"]},\\n \\\"or\\\": [\\n {\\\">\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 100]},\\n {\\\"<\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 20]}\\n ]\\n ]\\n}\\n\"\n }\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.togai.com/usage_meters/{usage_meter_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"billableName\": \"<string>\",\n \"description\": \"<string>\",\n \"eventSchemaName\": \"<string>\",\n \"type\": \"COUNTER\",\n \"computations\": [\n {\n \"computation\": {\n \"*\": [\n {\n \"var\": \"attributes.distance\"\n },\n 0.4\n ]\n },\n \"order\": 123,\n \"id\": \"<string>\",\n \"matcher\": \"{\\n \\\"and\\\": [\\n {\\\"in\\\": [{\\\"var\\\": \\\"dimension.city\\\"}, \\\"chennai\\\", \\\"mumbai\\\"]},\\n \\\"or\\\": [\\n {\\\">\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 100]},\\n {\\\"<\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 20]}\\n ]\\n ]\\n}\\n\"\n }\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.togai.com/usage_meters/{usage_meter_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"billableName\": \"<string>\",\n \"description\": \"<string>\",\n \"eventSchemaName\": \"<string>\",\n \"type\": \"COUNTER\",\n \"computations\": [\n {\n \"computation\": {\n \"*\": [\n {\n \"var\": \"attributes.distance\"\n },\n 0.4\n ]\n },\n \"order\": 123,\n \"id\": \"<string>\",\n \"matcher\": \"{\\n \\\"and\\\": [\\n {\\\"in\\\": [{\\\"var\\\": \\\"dimension.city\\\"}, \\\"chennai\\\", \\\"mumbai\\\"]},\\n \\\"or\\\": [\\n {\\\">\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 100]},\\n {\\\"<\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 20]}\\n ]\\n ]\\n}\\n\"\n }\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "um.1zlQTBWlkeO.lB7fh",
"name": "Rides",
"displayName": "Rides",
"description": "Cab rides",
"type": "COUNTER",
"aggregation": "COUNT",
"status": "DRAFT",
"computations": [
{
"matcher": "{\n \"and\": [\n {\"in\": [{\"var\": \"dimension.city\"}, \"chennai\", \"mumbai\"]},\n \"or\": [\n {\">\": [{\"var\": \"attribute.distance\"}, 100]},\n {\"<\": [{\"var\": \"attribute.distance\"}, 20]}\n ]\n ]\n}\n",
"order": 1,
"computation": "1"
}
]
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}Update an usage meter
This API lets you update an existing usage meter.
curl --request PATCH \
--url https://api.togai.com/usage_meters/{usage_meter_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"billableName": "<string>",
"description": "<string>",
"eventSchemaName": "<string>",
"type": "COUNTER",
"computations": [
{
"computation": {
"*": [
{
"var": "attributes.distance"
},
0.4
]
},
"order": 123,
"id": "<string>",
"matcher": "{\n \"and\": [\n {\"in\": [{\"var\": \"dimension.city\"}, \"chennai\", \"mumbai\"]},\n \"or\": [\n {\">\": [{\"var\": \"attribute.distance\"}, 100]},\n {\"<\": [{\"var\": \"attribute.distance\"}, 20]}\n ]\n ]\n}\n"
}
],
"filters": [
{
"field": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://api.togai.com/usage_meters/{usage_meter_id}"
payload = {
"name": "<string>",
"billableName": "<string>",
"description": "<string>",
"eventSchemaName": "<string>",
"type": "COUNTER",
"computations": [
{
"computation": { "*": [{ "var": "attributes.distance" }, 0.4] },
"order": 123,
"id": "<string>",
"matcher": "{
\"and\": [
{\"in\": [{\"var\": \"dimension.city\"}, \"chennai\", \"mumbai\"]},
\"or\": [
{\">\": [{\"var\": \"attribute.distance\"}, 100]},
{\"<\": [{\"var\": \"attribute.distance\"}, 20]}
]
]
}
"
}
],
"filters": [
{
"field": "<string>",
"value": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
billableName: '<string>',
description: '<string>',
eventSchemaName: '<string>',
type: 'COUNTER',
computations: [
{
computation: {'*': [{var: 'attributes.distance'}, 0.4]},
order: 123,
id: '<string>',
matcher: '{\n "and": [\n {"in": [{"var": "dimension.city"}, "chennai", "mumbai"]},\n "or": [\n {">": [{"var": "attribute.distance"}, 100]},\n {"<": [{"var": "attribute.distance"}, 20]}\n ]\n ]\n}\n'
}
],
filters: [{field: '<string>', value: '<string>'}]
})
};
fetch('https://api.togai.com/usage_meters/{usage_meter_id}', 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.togai.com/usage_meters/{usage_meter_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'billableName' => '<string>',
'description' => '<string>',
'eventSchemaName' => '<string>',
'type' => 'COUNTER',
'computations' => [
[
'computation' => [
'*' => [
[
'var' => 'attributes.distance'
],
0.4
]
],
'order' => 123,
'id' => '<string>',
'matcher' => '{
"and": [
{"in": [{"var": "dimension.city"}, "chennai", "mumbai"]},
"or": [
{">": [{"var": "attribute.distance"}, 100]},
{"<": [{"var": "attribute.distance"}, 20]}
]
]
}
'
]
],
'filters' => [
[
'field' => '<string>',
'value' => '<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.togai.com/usage_meters/{usage_meter_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"billableName\": \"<string>\",\n \"description\": \"<string>\",\n \"eventSchemaName\": \"<string>\",\n \"type\": \"COUNTER\",\n \"computations\": [\n {\n \"computation\": {\n \"*\": [\n {\n \"var\": \"attributes.distance\"\n },\n 0.4\n ]\n },\n \"order\": 123,\n \"id\": \"<string>\",\n \"matcher\": \"{\\n \\\"and\\\": [\\n {\\\"in\\\": [{\\\"var\\\": \\\"dimension.city\\\"}, \\\"chennai\\\", \\\"mumbai\\\"]},\\n \\\"or\\\": [\\n {\\\">\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 100]},\\n {\\\"<\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 20]}\\n ]\\n ]\\n}\\n\"\n }\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.togai.com/usage_meters/{usage_meter_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"billableName\": \"<string>\",\n \"description\": \"<string>\",\n \"eventSchemaName\": \"<string>\",\n \"type\": \"COUNTER\",\n \"computations\": [\n {\n \"computation\": {\n \"*\": [\n {\n \"var\": \"attributes.distance\"\n },\n 0.4\n ]\n },\n \"order\": 123,\n \"id\": \"<string>\",\n \"matcher\": \"{\\n \\\"and\\\": [\\n {\\\"in\\\": [{\\\"var\\\": \\\"dimension.city\\\"}, \\\"chennai\\\", \\\"mumbai\\\"]},\\n \\\"or\\\": [\\n {\\\">\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 100]},\\n {\\\"<\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 20]}\\n ]\\n ]\\n}\\n\"\n }\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.togai.com/usage_meters/{usage_meter_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"billableName\": \"<string>\",\n \"description\": \"<string>\",\n \"eventSchemaName\": \"<string>\",\n \"type\": \"COUNTER\",\n \"computations\": [\n {\n \"computation\": {\n \"*\": [\n {\n \"var\": \"attributes.distance\"\n },\n 0.4\n ]\n },\n \"order\": 123,\n \"id\": \"<string>\",\n \"matcher\": \"{\\n \\\"and\\\": [\\n {\\\"in\\\": [{\\\"var\\\": \\\"dimension.city\\\"}, \\\"chennai\\\", \\\"mumbai\\\"]},\\n \\\"or\\\": [\\n {\\\">\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 100]},\\n {\\\"<\\\": [{\\\"var\\\": \\\"attribute.distance\\\"}, 20]}\\n ]\\n ]\\n}\\n\"\n }\n ],\n \"filters\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "um.1zlQTBWlkeO.lB7fh",
"name": "Rides",
"displayName": "Rides",
"description": "Cab rides",
"type": "COUNTER",
"aggregation": "COUNT",
"status": "DRAFT",
"computations": [
{
"matcher": "{\n \"and\": [\n {\"in\": [{\"var\": \"dimension.city\"}, \"chennai\", \"mumbai\"]},\n \"or\": [\n {\">\": [{\"var\": \"attribute.distance\"}, 100]},\n {\"<\": [{\"var\": \"attribute.distance\"}, 20]}\n ]\n ]\n}\n",
"order": 1,
"computation": "1"
}
]
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}{
"message": "<Reason message>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
50"um.1zYnCiM9Bpg.1zYn"
Body
Payload to create usage meter
Request to update usage meter
Name of usage meter.
255Billable name of usage meter. Billable name takes precedence over name to display in invoice.
255Description of the usage meter
255Event Schema Identifier
Type of usage meter
- COUNTER - Count usage
COUNTER "COUNTER"
Aggregation to be applied on usage meter result
- COUNT - Counts number of events matching the usage meter
- SUM - Sums up results of computation of all events matching usage meter
COUNT, SUM Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Response for Create and Get usage event requests
Structure of usage meter
Identifier of the usage meter
20Name of the usage meter
50^[\sa-zA-Z0-9_-]*$"rides-usage"
Display name of usage meter. This is an auto-generated field which contains billableName of usage meter. If billableName is not provided, name will be used as display name.
255Type of usage meter
COUNTER "COUNTER"
Aggregation to be applied on usage meter result
- COUNT - Counts number of events matching the usage meter
- SUM - Sums up results of computation of all events matching usage meter
COUNT, SUM Billable name of addon. Billable name takes precedence over name to display in invoice.
255"Rides Usage"
255"Meter to track cab rides"
Show child attributes
Show child attributes
Status of usage meter
DRAFT, ACTIVE, INACTIVE, ARCHIVED "DRAFT"
1Show child attributes
Show child attributes
Structure of an event schema
Show child attributes
Show child attributes
