File size: 1,191 Bytes
048b1e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # OpenMeter Go SDK
## Install
```sh
go get github.com/openmeterio/openmeter/api/client/go@v1.0.0-beta.53
```
## Usage
Initialize client.
```go
import (
cloudevents "github.com/cloudevents/sdk-go/v2/event"
om "github.com/openmeterio/openmeter/api/client/go"
)
func main() {
// Initialize OpenMeter client
om, err := openmeter.NewClientWithResponses("http://localhost:8888")
if err != nil {
panic(err.Error())
}
// Use OpenMeter client
// ...
}
```
### Ingest Event
Report usage to OpenMeter.
```go
e := cloudevents.New()
e.SetID("00001")
e.SetSource("my-app")
e.SetType("tokens")
e.SetSubject("user-id")
e.SetTime(time.Now())
e.SetData("application/json", map[string]string{
"tokens": "15",
"model": "gpt-4",
})
_, err := client.IngestEventWithResponse(ctx, e)
```
### Query Meter
Retreive usage from OpenMeter.
```go
slug := "token-usage"
subject := []string{"user-id"}
from, _ := time.Parse(time.RFC3339, "2023-01-01T00:00:00Z")
to, _ := time.Parse(time.RFC3339, "2023-01-02T00:00:00Z")
resp, _ := client.QueryMeterWithResponse(ctx, slug, &om.QueryMeterParams{
Subject: &subject,
From: &from,
To: &to,
})
// resp.JSON200.Data
```
|