Create Meter
Create a new meter.
import DodoPayments from 'dodopayments';
const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
});
const meter = await client.meters.create({
aggregation: { type: 'count' },
event_name: 'event_name',
measurement_unit: 'measurement_unit',
name: 'name',
});
console.log(meter.id);import os
from dodopayments import DodoPayments
client = DodoPayments(
bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted
)
meter = client.meters.create(
aggregation={
"type": "count"
},
event_name="event_name",
measurement_unit="measurement_unit",
name="name",
)
print(meter.id)package main
import (
"context"
"fmt"
"github.com/dodopayments/dodopayments-go"
"github.com/dodopayments/dodopayments-go/option"
)
func main() {
client := dodopayments.NewClient(
option.WithBearerToken("My Bearer Token"),
)
meter, err := client.Meters.New(context.TODO(), dodopayments.MeterNewParams{
Aggregation: dodopayments.F(dodopayments.MeterAggregationParam{
Type: dodopayments.F(dodopayments.MeterAggregationTypeCount),
}),
EventName: dodopayments.F("event_name"),
MeasurementUnit: dodopayments.F("measurement_unit"),
Name: dodopayments.F("name"),
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", meter.ID)
}
package com.dodopayments.api.example;
import com.dodopayments.api.client.DodoPaymentsClient;
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;
import com.dodopayments.api.models.meters.Meter;
import com.dodopayments.api.models.meters.MeterAggregation;
import com.dodopayments.api.models.meters.MeterCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();
MeterCreateParams params = MeterCreateParams.builder()
.aggregation(MeterAggregation.builder()
.type(MeterAggregation.Type.COUNT)
.build())
.eventName("event_name")
.measurementUnit("measurement_unit")
.name("name")
.build();
Meter meter = client.meters().create(params);
}
}package com.dodopayments.api.example
import com.dodopayments.api.client.DodoPaymentsClient
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient
import com.dodopayments.api.models.meters.Meter
import com.dodopayments.api.models.meters.MeterAggregation
import com.dodopayments.api.models.meters.MeterCreateParams
fun main() {
val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()
val params: MeterCreateParams = MeterCreateParams.builder()
.aggregation(MeterAggregation.builder()
.type(MeterAggregation.Type.COUNT)
.build())
.eventName("event_name")
.measurementUnit("measurement_unit")
.name("name")
.build()
val meter: Meter = client.meters().create(params)
}require "dodopayments"
dodo_payments = Dodopayments::Client.new(
bearer_token: "My Bearer Token",
environment: "test_mode" # defaults to "live_mode"
)
meter = dodo_payments.meters.create(
aggregation: {type: :count},
event_name: "event_name",
measurement_unit: "measurement_unit",
name: "name"
)
puts(meter)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dodopayments\Client;
use Dodopayments\Core\Exceptions\APIException;
use Dodopayments\Meters\Conjunction;
use Dodopayments\Meters\FilterOperator;
$client = new Client(
bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
environment: 'test_mode',
);
try {
$meter = $client->meters->create(
aggregation: ['type' => 'count', 'key' => 'key'],
eventName: 'event_name',
measurementUnit: 'measurement_unit',
name: 'name',
description: 'description',
filter: [
'clauses' => [
[
'key' => 'user_id',
'operator' => FilterOperator::EQUALS,
'value' => 'user123',
],
[
'key' => 'amount',
'operator' => FilterOperator::GREATER_THAN,
'value' => 100,
],
],
'conjunction' => Conjunction::AND,
],
);
var_dump($meter);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using DodoPayments.Client;
using Meters = DodoPayments.Client.Models.Meters;
DodoPaymentsClient client = new();
Meters::MeterCreateParams parameters = new()
{
Aggregation = new()
{
Type = Meters::Type.Count,
Key = "key",
},
EventName = "event_name",
MeasurementUnit = "measurement_unit",
Name = "name",
};
var meter = await client.Meters.Create(parameters);
Console.WriteLine(meter);use dodopayments::Client;
#[tokio::main]
async fn main() -> dodopayments::Result<()> {
let client = Client::from_env()?;
let result = client
.meters()
.create()
.body(dodopayments::models::MetersCreateParams {
aggregation: Some(Box::new(dodopayments::models::MeterAggregation {
r#type: "count".to_string(),
key: None,
})),
event_name: Some("event_name".to_string()),
measurement_unit: Some("measurement_unit".to_string()),
name: Some("name".to_string()),
..Default::default()
})
.await?;
println!("{result:?}");
Ok(())
}curl --request POST \
--url https://test.dodopayments.com/meters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"aggregation": {
"key": "<string>"
},
"event_name": "<string>",
"measurement_unit": "<string>",
"name": "<string>",
"description": "<string>",
"filter": {
"clauses": [
{
"key": "user_id",
"operator": "equals",
"value": "user123"
},
{
"key": "amount",
"operator": "greater_than",
"value": 100
}
],
"conjunction": "and"
}
}
'{
"aggregation": {
"type": "count",
"key": "<string>"
},
"business_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"event_name": "<string>",
"id": "<string>",
"measurement_unit": "<string>",
"name": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"filter": {
"clauses": [
{
"key": "user_id",
"operator": "equals",
"value": "user123"
},
{
"key": "amount",
"operator": "greater_than",
"value": 100
}
],
"conjunction": "and"
}
}Authorizations
Send your API key as a bearer token: Authorization: Bearer <api_key>. A test mode key starts with dodo_test_, for example dodo_test_AbCd1234EfGh5678.<secret>. A live mode key starts with dodo_live_. Use a test mode key on test.dodopayments.com and a live mode key on live.dodopayments.com. Keys from before these tags have no tag and operate as before.
Body
Aggregation configuration for the meter
Show child attributes
Show child attributes
Event name to track
measurement unit
Name of the meter
Optional description of the meter
Optional filter to apply to the meter
Show child attributes
Show child attributes
{
"clauses": [
{
"key": "user_id",
"operator": "equals",
"value": "user123"
},
{
"key": "amount",
"operator": "greater_than",
"value": 100
}
],
"conjunction": "and"
}
Response
Meter created successfully
Show child attributes
Show child attributes
A filter structure that combines multiple conditions with logical conjunctions (AND/OR).
Supports up to 3 levels of nesting to create complex filter expressions. Each filter has a conjunction (and/or) and clauses that can be either direct conditions or nested filters.
Show child attributes
Show child attributes
{
"clauses": [
{
"key": "user_id",
"operator": "equals",
"value": "user123"
},
{
"key": "amount",
"operator": "greater_than",
"value": 100
}
],
"conjunction": "and"
}
Was this page helpful?
import DodoPayments from 'dodopayments';
const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
});
const meter = await client.meters.create({
aggregation: { type: 'count' },
event_name: 'event_name',
measurement_unit: 'measurement_unit',
name: 'name',
});
console.log(meter.id);import os
from dodopayments import DodoPayments
client = DodoPayments(
bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted
)
meter = client.meters.create(
aggregation={
"type": "count"
},
event_name="event_name",
measurement_unit="measurement_unit",
name="name",
)
print(meter.id)package main
import (
"context"
"fmt"
"github.com/dodopayments/dodopayments-go"
"github.com/dodopayments/dodopayments-go/option"
)
func main() {
client := dodopayments.NewClient(
option.WithBearerToken("My Bearer Token"),
)
meter, err := client.Meters.New(context.TODO(), dodopayments.MeterNewParams{
Aggregation: dodopayments.F(dodopayments.MeterAggregationParam{
Type: dodopayments.F(dodopayments.MeterAggregationTypeCount),
}),
EventName: dodopayments.F("event_name"),
MeasurementUnit: dodopayments.F("measurement_unit"),
Name: dodopayments.F("name"),
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", meter.ID)
}
package com.dodopayments.api.example;
import com.dodopayments.api.client.DodoPaymentsClient;
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;
import com.dodopayments.api.models.meters.Meter;
import com.dodopayments.api.models.meters.MeterAggregation;
import com.dodopayments.api.models.meters.MeterCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();
MeterCreateParams params = MeterCreateParams.builder()
.aggregation(MeterAggregation.builder()
.type(MeterAggregation.Type.COUNT)
.build())
.eventName("event_name")
.measurementUnit("measurement_unit")
.name("name")
.build();
Meter meter = client.meters().create(params);
}
}package com.dodopayments.api.example
import com.dodopayments.api.client.DodoPaymentsClient
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient
import com.dodopayments.api.models.meters.Meter
import com.dodopayments.api.models.meters.MeterAggregation
import com.dodopayments.api.models.meters.MeterCreateParams
fun main() {
val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()
val params: MeterCreateParams = MeterCreateParams.builder()
.aggregation(MeterAggregation.builder()
.type(MeterAggregation.Type.COUNT)
.build())
.eventName("event_name")
.measurementUnit("measurement_unit")
.name("name")
.build()
val meter: Meter = client.meters().create(params)
}require "dodopayments"
dodo_payments = Dodopayments::Client.new(
bearer_token: "My Bearer Token",
environment: "test_mode" # defaults to "live_mode"
)
meter = dodo_payments.meters.create(
aggregation: {type: :count},
event_name: "event_name",
measurement_unit: "measurement_unit",
name: "name"
)
puts(meter)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dodopayments\Client;
use Dodopayments\Core\Exceptions\APIException;
use Dodopayments\Meters\Conjunction;
use Dodopayments\Meters\FilterOperator;
$client = new Client(
bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
environment: 'test_mode',
);
try {
$meter = $client->meters->create(
aggregation: ['type' => 'count', 'key' => 'key'],
eventName: 'event_name',
measurementUnit: 'measurement_unit',
name: 'name',
description: 'description',
filter: [
'clauses' => [
[
'key' => 'user_id',
'operator' => FilterOperator::EQUALS,
'value' => 'user123',
],
[
'key' => 'amount',
'operator' => FilterOperator::GREATER_THAN,
'value' => 100,
],
],
'conjunction' => Conjunction::AND,
],
);
var_dump($meter);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using DodoPayments.Client;
using Meters = DodoPayments.Client.Models.Meters;
DodoPaymentsClient client = new();
Meters::MeterCreateParams parameters = new()
{
Aggregation = new()
{
Type = Meters::Type.Count,
Key = "key",
},
EventName = "event_name",
MeasurementUnit = "measurement_unit",
Name = "name",
};
var meter = await client.Meters.Create(parameters);
Console.WriteLine(meter);use dodopayments::Client;
#[tokio::main]
async fn main() -> dodopayments::Result<()> {
let client = Client::from_env()?;
let result = client
.meters()
.create()
.body(dodopayments::models::MetersCreateParams {
aggregation: Some(Box::new(dodopayments::models::MeterAggregation {
r#type: "count".to_string(),
key: None,
})),
event_name: Some("event_name".to_string()),
measurement_unit: Some("measurement_unit".to_string()),
name: Some("name".to_string()),
..Default::default()
})
.await?;
println!("{result:?}");
Ok(())
}curl --request POST \
--url https://test.dodopayments.com/meters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"aggregation": {
"key": "<string>"
},
"event_name": "<string>",
"measurement_unit": "<string>",
"name": "<string>",
"description": "<string>",
"filter": {
"clauses": [
{
"key": "user_id",
"operator": "equals",
"value": "user123"
},
{
"key": "amount",
"operator": "greater_than",
"value": 100
}
],
"conjunction": "and"
}
}
'{
"aggregation": {
"type": "count",
"key": "<string>"
},
"business_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"event_name": "<string>",
"id": "<string>",
"measurement_unit": "<string>",
"name": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"filter": {
"clauses": [
{
"key": "user_id",
"operator": "equals",
"value": "user123"
},
{
"key": "amount",
"operator": "greater_than",
"value": 100
}
],
"conjunction": "and"
}
}