Create
Create a billable metric
client.V1.BillableMetrics.New(ctx, body) (*DataIDV1BillableMetricNewResponse, error)
post/v1/billable-metrics/create
Creates a new Billable Metric.
Parameters
bodyNamefieldAggregationKeyfieldAggregationTypefieldCustomFieldsfieldEventTypeFilterfieldGroupKeysfieldPropertyFiltersfieldSqlfieldV1BillableMetricNewParams
Returns
V1BillableMetricNewResponsestruct
package main
import (
"context"
"fmt"
"github.com/Metronome-Industries/metronome-go"
"github.com/Metronome-Industries/metronome-go/option"
"github.com/Metronome-Industries/metronome-go/shared"
)
func main() {
client := metronome.NewClient(
option.WithBearerToken("My Bearer Token"),
)
billableMetric, err := client.V1.BillableMetrics.New(context.TODO(), metronome.V1BillableMetricNewParams{
Name: metronome.F("CPU Hours"),
AggregationKey: metronome.F("cpu_hours"),
AggregationType: metronome.F(metronome.V1BillableMetricNewParamsAggregationTypeSum),
EventTypeFilter: metronome.F(shared.EventTypeFilterParam{
InValues: metronome.F([]string{"cpu_usage"}),
}),
GroupKeys: metronome.F([][]string{[]string{"region"}, []string{"machine_type"}}),
PropertyFilters: metronome.F([]shared.PropertyFilterParam{shared.PropertyFilterParam{
Name: metronome.F("cpu_hours"),
Exists: metronome.F(true),
}, shared.PropertyFilterParam{
Name: metronome.F("region"),
Exists: metronome.F(true),
InValues: metronome.F([]string{"EU", "NA"}),
}, shared.PropertyFilterParam{
Name: metronome.F("machine_type"),
Exists: metronome.F(true),
InValues: metronome.F([]string{"slow", "fast"}),
}}),
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", billableMetric.Data)
}
200 Example
{
"data": {
"id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
}
}