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
```