api package - github.com/influxdata/influxdb-client-go/v2/api - Go Packages (original) (raw)
Package api provides clients for InfluxDB server APIs.
- func (q *QueryTableResult) Close() error
- func (q *QueryTableResult) Err() error
- func (q *QueryTableResult) Next() bool
- func (q *QueryTableResult) Record() *query.FluxRecord
- func (q *QueryTableResult) TableChanged() bool
- func (q *QueryTableResult) TableMetadata() *query.FluxTableMetadata
- func (q *QueryTableResult) TablePosition() int
This section is empty.
This section is empty.
DataToPoint converts custom point structures into a Point. Each visible field of the point on input must be annotated with 'lp' prefix and values measurement,tag, field or timestamp. Valid point must contain measurement and at least one field.
A field with timestamp must be of a type time.Time
type TemperatureSensor struct {
Measurement string lp:"measurement"
Sensor string lp:"tag,sensor"
ID string lp:"tag,device_id"
Temp float64 lp:"field,temperature"
Hum int lp:"field,humidity"
Time time.Time lp:"timestamp,temperature"
Description string lp:"-"
}
DefaultDialect return flux query Dialect with full annotations (datatype, group, default), header and comma char as a delimiter
type AuthorizationsAPI interface {
GetAuthorizations(ctx [context](/context).[Context](/context#Context)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
FindAuthorizationsByUserName(ctx [context](/context).[Context](/context#Context), userName [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
FindAuthorizationsByUserID(ctx [context](/context).[Context](/context#Context), userID [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
FindAuthorizationsByOrgName(ctx [context](/context).[Context](/context#Context), orgName [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
FindAuthorizationsByOrgID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
CreateAuthorization(ctx [context](/context).[Context](/context#Context), authorization *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
CreateAuthorizationWithOrgID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string), permissions [][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Permission](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Permission)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
UpdateAuthorizationStatus(ctx [context](/context).[Context](/context#Context), authorization *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), status [domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[AuthorizationUpdateRequestStatus](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#AuthorizationUpdateRequestStatus)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
UpdateAuthorizationStatusWithID(ctx [context](/context).[Context](/context#Context), authID [string](/builtin#string), status [domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[AuthorizationUpdateRequestStatus](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#AuthorizationUpdateRequestStatus)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization), [error](/builtin#error))
DeleteAuthorization(ctx [context](/context).[Context](/context#Context), authorization *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Authorization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Authorization)) [error](/builtin#error)
DeleteAuthorizationWithID(ctx [context](/context).[Context](/context#Context), authID [string](/builtin#string)) [error](/builtin#error)
}
AuthorizationsAPI provides methods for organizing Authorization in a InfluxDB server
package main
import ( "context" "fmt"
"github.com/influxdata/influxdb-client-go/v2/domain"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token")
// Find user to grant permission
user, err := client.UsersAPI().FindUserByName(context.Background(), "user-01")
if err != nil {
panic(err)
}
// Find organization
org, err := client.OrganizationsAPI().FindOrganizationByName(context.Background(), "my-org")
if err != nil {
panic(err)
}
// create write permission for buckets
permissionWrite := &domain.Permission{
Action: domain.PermissionActionWrite,
Resource: domain.Resource{
Type: domain.ResourceTypeBuckets,
},
}
// create read permission for buckets
permissionRead := &domain.Permission{
Action: domain.PermissionActionRead,
Resource: domain.Resource{
Type: domain.ResourceTypeBuckets,
},
}
// group permissions
permissions := []domain.Permission{*permissionWrite, *permissionRead}
// create authorization object using info above
auth := &domain.Authorization{
OrgID: org.Id,
Permissions: &permissions,
UserID: user.Id,
}
// grant permission and create token
authCreated, err := client.AuthorizationsAPI().CreateAuthorization(context.Background(), auth)
if err != nil {
panic(err)
}
// Use token
fmt.Println("Token: ", *authCreated.Token)
// Ensures background processes finishes
client.Close()
}
Output:
NewAuthorizationsAPI creates new instance of AuthorizationsAPI
type BucketsAPI interface {
GetBuckets(ctx [context](/context).[Context](/context#Context), pagingOptions ...[PagingOption](#PagingOption)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
FindBucketByName(ctx [context](/context).[Context](/context#Context), bucketName [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
FindBucketByID(ctx [context](/context).[Context](/context#Context), bucketID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
FindBucketsByOrgID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string), pagingOptions ...[PagingOption](#PagingOption)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
FindBucketsByOrgName(ctx [context](/context).[Context](/context#Context), orgName [string](/builtin#string), pagingOptions ...[PagingOption](#PagingOption)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
CreateBucket(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
CreateBucketWithName(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), bucketName [string](/builtin#string), rules ...[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[RetentionRule](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#RetentionRule)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
CreateBucketWithNameWithID(ctx [context](/context).[Context](/context#Context), orgID, bucketName [string](/builtin#string), rules ...[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[RetentionRule](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#RetentionRule)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
UpdateBucket(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), [error](/builtin#error))
DeleteBucket(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket)) [error](/builtin#error)
DeleteBucketWithID(ctx [context](/context).[Context](/context#Context), bucketID [string](/builtin#string)) [error](/builtin#error)
GetMembers(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
GetMembersWithID(ctx [context](/context).[Context](/context#Context), bucketID [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
AddMember(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
AddMemberWithID(ctx [context](/context).[Context](/context#Context), bucketID, memberID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
RemoveMember(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) [error](/builtin#error)
RemoveMemberWithID(ctx [context](/context).[Context](/context#Context), bucketID, memberID [string](/builtin#string)) [error](/builtin#error)
GetOwners(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
GetOwnersWithID(ctx [context](/context).[Context](/context#Context), bucketID [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
AddOwner(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
AddOwnerWithID(ctx [context](/context).[Context](/context#Context), bucketID, memberID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
RemoveOwner(ctx [context](/context).[Context](/context#Context), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) [error](/builtin#error)
RemoveOwnerWithID(ctx [context](/context).[Context](/context#Context), bucketID, memberID [string](/builtin#string)) [error](/builtin#error)
}
BucketsAPI provides methods for managing Buckets in a InfluxDB server.
package main
import ( "context"
"github.com/influxdata/influxdb-client-go/v2/domain"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token")
ctx := context.Background()
// Get Buckets API client
bucketsAPI := client.BucketsAPI()
// Get organization that will own new bucket
org, err := client.OrganizationsAPI().FindOrganizationByName(ctx, "my-org")
if err != nil {
panic(err)
}
// Create a bucket with 1 day retention policy
bucket, err := bucketsAPI.CreateBucketWithName(ctx, org, "bucket-sensors", domain.RetentionRule{EverySeconds: 3600 * 24})
if err != nil {
panic(err)
}
// Update description of the bucket
desc := "Bucket for sensor data"
bucket.Description = &desc
bucket, err = bucketsAPI.UpdateBucket(ctx, bucket)
if err != nil {
panic(err)
}
// Close the client
client.Close()
}
Output:
NewBucketsAPI creates new instance of BucketsAPI
type DeleteAPI interface {
Delete(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), bucket *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Bucket](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Bucket), start, stop [time](/time).[Time](/time#Time), predicate [string](/builtin#string)) [error](/builtin#error)
DeleteWithID(ctx [context](/context).[Context](/context#Context), orgID, bucketID [string](/builtin#string), start, stop [time](/time).[Time](/time#Time), predicate [string](/builtin#string)) [error](/builtin#error)
DeleteWithName(ctx [context](/context).[Context](/context#Context), orgName, bucketName [string](/builtin#string), start, stop [time](/time).[Time](/time#Time), predicate [string](/builtin#string)) [error](/builtin#error)
}
DeleteAPI provides methods for deleting time series data from buckets. Deleted series are selected by the time range specified by start and stop arguments and optional predicate string which contains condition for selecting data for deletion, such as:
tag1="value1" and (tag2="value2" and tag3!="value3")
Empty predicate string means all data from the given time range will be deleted. See https://v2.docs.influxdata.com/v2.0/reference/syntax/delete-predicate/for more info about predicate syntax.
package main
import ( "context" "time"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token")
ctx := context.Background()
// Get Delete API client
deleteAPI := client.DeleteAPI()
// Delete last hour data with tag b = static
err := deleteAPI.DeleteWithName(ctx, "org", "my-bucket", time.Now().Add(-time.Hour), time.Now(), "b=static")
if err != nil {
panic(err)
}
// Close the client
client.Close()
}
Output:
NewDeleteAPI creates new instance of DeleteAPI
type LabelsAPI interface {
GetLabels(ctx [context](/context).[Context](/context#Context)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
FindLabelsByOrg(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
FindLabelsByOrgID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
FindLabelByID(ctx [context](/context).[Context](/context#Context), labelID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
FindLabelByName(ctx [context](/context).[Context](/context#Context), orgID, labelName [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
CreateLabel(ctx [context](/context).[Context](/context#Context), label *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[LabelCreateRequest](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#LabelCreateRequest)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
CreateLabelWithName(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), labelName [string](/builtin#string), properties map[[string](/builtin#string)][string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
CreateLabelWithNameWithID(ctx [context](/context).[Context](/context#Context), orgID, labelName [string](/builtin#string), properties map[[string](/builtin#string)][string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
UpdateLabel(ctx [context](/context).[Context](/context#Context), label *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
DeleteLabelWithID(ctx [context](/context).[Context](/context#Context), labelID [string](/builtin#string)) [error](/builtin#error)
DeleteLabel(ctx [context](/context).[Context](/context#Context), label *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label)) [error](/builtin#error)
}
LabelsAPI provides methods for managing labels in a InfluxDB server.
package main
import ( "context"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token")
ctx := context.Background()
// Get Labels API client
labelsAPI := client.LabelsAPI()
// Get Organizations API client
orgsAPI := client.OrganizationsAPI()
// Get organization that will own label
myorg, err := orgsAPI.FindOrganizationByName(ctx, "my-org")
if err != nil {
panic(err)
}
labelName := "Active State"
props := map[string]string{"color": "33ffdd", "description": "Marks org active"}
label, err := labelsAPI.CreateLabelWithName(ctx, myorg, labelName, props)
if err != nil {
panic(err)
}
// Change color property
label.Properties.AdditionalProperties = map[string]string{"color": "ff1122"}
label, err = labelsAPI.UpdateLabel(ctx, label)
if err != nil {
panic(err)
}
// Close the client
client.Close()
}
Output:
NewLabelsAPI creates new instance of LabelsAPI
type OrganizationsAPI interface {
GetOrganizations(ctx [context](/context).[Context](/context#Context), pagingOptions ...[PagingOption](#PagingOption)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), [error](/builtin#error))
FindOrganizationByName(ctx [context](/context).[Context](/context#Context), orgName [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), [error](/builtin#error))
FindOrganizationByID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), [error](/builtin#error))
FindOrganizationsByUserID(ctx [context](/context).[Context](/context#Context), userID [string](/builtin#string), pagingOptions ...[PagingOption](#PagingOption)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), [error](/builtin#error))
CreateOrganization(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), [error](/builtin#error))
CreateOrganizationWithName(ctx [context](/context).[Context](/context#Context), orgName [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), [error](/builtin#error))
UpdateOrganization(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), [error](/builtin#error))
DeleteOrganization(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization)) [error](/builtin#error)
DeleteOrganizationWithID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string)) [error](/builtin#error)
GetMembers(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
GetMembersWithID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
AddMember(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
AddMemberWithID(ctx [context](/context).[Context](/context#Context), orgID, memberID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
RemoveMember(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) [error](/builtin#error)
RemoveMemberWithID(ctx [context](/context).[Context](/context#Context), orgID, memberID [string](/builtin#string)) [error](/builtin#error)
GetOwners(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
GetOwnersWithID(ctx [context](/context).[Context](/context#Context), orgID [string](/builtin#string)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
AddOwner(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
AddOwnerWithID(ctx [context](/context).[Context](/context#Context), orgID, memberID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
RemoveOwner(ctx [context](/context).[Context](/context#Context), org *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Organization](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Organization), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) [error](/builtin#error)
RemoveOwnerWithID(ctx [context](/context).[Context](/context#Context), orgID, memberID [string](/builtin#string)) [error](/builtin#error)
}
OrganizationsAPI provides methods for managing Organizations in a InfluxDB server.
package main
import ( "context"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token")
// Get Organizations API client
orgAPI := client.OrganizationsAPI()
// Create new organization
org, err := orgAPI.CreateOrganizationWithName(context.Background(), "org-2")
if err != nil {
panic(err)
}
orgDescription := "My second org "
org.Description = &orgDescription
org, err = orgAPI.UpdateOrganization(context.Background(), org)
if err != nil {
panic(err)
}
// Find user to set owner
user, err := client.UsersAPI().FindUserByName(context.Background(), "user-01")
if err != nil {
panic(err)
}
// Add another owner (first owner is the one who create organization
_, err = orgAPI.AddOwner(context.Background(), org, user)
if err != nil {
panic(err)
}
// Create new user to add to org
newUser, err := client.UsersAPI().CreateUserWithName(context.Background(), "user-02")
if err != nil {
panic(err)
}
// Add new user to organization
_, err = orgAPI.AddMember(context.Background(), org, newUser)
if err != nil {
panic(err)
}
// Ensures background processes finishes
client.Close()
}
Output:
NewOrganizationsAPI creates new instance of OrganizationsAPI
Paging holds pagination parameters for various Get* functions of InfluxDB 2 API Not the all options are usable for some Get* functions
type PagingOption func(p *Paging)
PagingOption is the function type for applying paging option
PagingWithAfter set after option - the last resource ID from which to seek from (but not including). This is to be used instead of `offset`.
func PagingWithDescending(descending bool) PagingOption
PagingWithDescending changes sorting direction
func PagingWithLimit(limit int) PagingOption
PagingWithLimit sets limit option - maximum number of items returned.
func PagingWithOffset(offset int) PagingOption
PagingWithOffset set starting offset for returning items. Default 0.
func PagingWithSortBy(sortBy string) PagingOption
PagingWithSortBy sets field name which should be used for sorting
type QueryAPI interface {
QueryRaw(ctx [context](/context).[Context](/context#Context), query [string](/builtin#string), dialect *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Dialect](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Dialect)) ([string](/builtin#string), [error](/builtin#error))
QueryRawWithParams(ctx [context](/context).[Context](/context#Context), query [string](/builtin#string), dialect *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Dialect](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Dialect), params interface{}) ([string](/builtin#string), [error](/builtin#error))
Query(ctx [context](/context).[Context](/context#Context), query [string](/builtin#string)) (*[QueryTableResult](#QueryTableResult), [error](/builtin#error))
QueryWithParams(ctx [context](/context).[Context](/context#Context), query [string](/builtin#string), params interface{}) (*[QueryTableResult](#QueryTableResult), [error](/builtin#error))
}
QueryAPI provides methods for performing synchronously flux query against InfluxDB server.
Flux query can contain reference to parameters, which must be passed via queryParams. it can be a struct or map. Param values can be only simple types or time.Time. The name of a struct field or a map key (must be a string) will be a param name. The name of the parameter represented by a struct field can be specified by JSON annotation:
type Condition struct {
Start time.Time json:"start"
Field string json:"field"
Value float64 json:"value"
}
Parameters are then accessed via the Flux params object:
query:= from(bucket: "environment") |> range(start: time(v: params.start)) |> filter(fn: (r) => r._measurement == "air") |> filter(fn: (r) => r._field == params.field) |> filter(fn: (r) => r._value > params.value)
package main
import ( "context" "fmt"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() {
// Create a new client using an InfluxDB server base URL and an authentication token
client := influxdb2.NewClient("http://localhost:8086", "my-token")
// Get query client
queryAPI := client.QueryAPI("my-org")
// get QueryTableResult
result, err := queryAPI.Query(context.Background(), from(bucket:"my-bucket")|> range(start: -1h) |> filter(fn: (r) => r._measurement == "stat")
)
if err == nil {
// Iterate over query response
for result.Next() {
// Notice when group key has changed
if result.TableChanged() {
fmt.Printf("table: %s\n", result.TableMetadata().String())
}
// Access data
fmt.Printf("value: %v\n", result.Record().Value())
}
// check for an error
if result.Err() != nil {
fmt.Printf("query parsing error: %s\n", result.Err().Error())
}
} else {
panic(err)
}
// Ensures background processes finishes
client.Close()
}
Output:
package main
import ( "context" "fmt"
"github.com/influxdata/influxdb-client-go/v2/api"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() {
// Create a new client using an InfluxDB server base URL and an authentication token
client := influxdb2.NewClient("http://localhost:8086", "my-token")
// Get query client
queryAPI := client.QueryAPI("my-org")
// Query and get complete result as a string
// Use default dialect
result, err := queryAPI.QueryRaw(context.Background(), from(bucket:"my-bucket")|> range(start: -1h) |> filter(fn: (r) => r._measurement == "stat")
, api.DefaultDialect())
if err == nil {
fmt.Println("QueryResult:")
fmt.Println(result)
} else {
panic(err)
}
// Ensures background processes finishes
client.Close()
}
Output:
package main
import ( "context" "fmt"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() {
// Create a new client using an InfluxDB server base URL and an authentication token
client := influxdb2.NewClient("http://localhost:8086", "my-token")
// Get query client
queryAPI := client.QueryAPI("my-org")
// Define parameters
parameters := struct {
Start string json:"start"
Field string json:"field"
Value float64 json:"value"
}{
"-1h",
"temperature",
25,
}
// Query with parameters
query := from(bucket:"my-bucket") |> range(start: duration(params.start)) |> filter(fn: (r) => r._measurement == "stat") |> filter(fn: (r) => r._field == params.field) |> filter(fn: (r) => r._value > params.value)
// Get result
result, err := queryAPI.QueryWithParams(context.Background(), query, parameters)
if err == nil {
// Iterate over query response
for result.Next() {
// Notice when group key has changed
if result.TableChanged() {
fmt.Printf("table: %s\n", result.TableMetadata().String())
}
// Access data
fmt.Printf("value: %v\n", result.Record().Value())
}
// check for an error
if result.Err() != nil {
fmt.Printf("query parsing error: %s\n", result.Err().Error())
}
} else {
panic(err)
}
// Ensures background processes finishes
client.Close()
}
Output:
NewQueryAPI returns new query client for querying buckets belonging to org
type QueryTableResult struct { io.Closer
}
QueryTableResult parses streamed flux query response into structures representing flux table parts Walking though the result is done by repeatedly calling Next() until returns false. Actual flux table info (columns with names, data types, etc) is returned by TableMetadata() method. Data are acquired by Record() method. Preliminary end can be caused by an error, so when Next() return false, check Err() for an error
NewQueryTableResult returns new QueryTableResult
Close reads remaining data and closes underlying Closer
Err returns an error raised during flux query response parsing
Next advances to next row in query result. During the first time it is called, Next creates also table metadata Actual parsed row is available through Record() function Returns false in case of end or an error, otherwise true
Record returns last parsed flux table data row Use Record methods to access value and row properties
func (q *QueryTableResult) TableChanged() bool
TableChanged returns true if last call of Next() found also new result table Table information is available via TableMetadata method
TableMetadata returns actual flux table metadata
func (q *QueryTableResult) TablePosition() int
TablePosition returns actual flux table position in the result, or -1 if no table was found yet Each new table is introduced by an annotation in csv
RunFilter defines filtering options for FindRun* functions.
TaskFilter defines filtering options for FindTasks functions.
type TasksAPI interface {
FindTasks(ctx [context](/context).[Context](/context#Context), filter *[TaskFilter](#TaskFilter)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
GetTask(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
GetTaskByID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
CreateTask(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
CreateTaskWithEvery(ctx [context](/context).[Context](/context#Context), name, flux, every, orgID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
CreateTaskWithCron(ctx [context](/context).[Context](/context#Context), name, flux, cron, orgID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
CreateTaskByFlux(ctx [context](/context).[Context](/context#Context), flux, orgID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
UpdateTask(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), [error](/builtin#error))
DeleteTask(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) [error](/builtin#error)
DeleteTaskWithID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string)) [error](/builtin#error)
FindMembers(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
FindMembersWithID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
AddMember(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
AddMemberWithID(ctx [context](/context).[Context](/context#Context), taskID, memberID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceMember](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceMember), [error](/builtin#error))
RemoveMember(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) [error](/builtin#error)
RemoveMemberWithID(ctx [context](/context).[Context](/context#Context), taskID, memberID [string](/builtin#string)) [error](/builtin#error)
FindOwners(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
FindOwnersWithID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
AddOwner(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
AddOwnerWithID(ctx [context](/context).[Context](/context#Context), taskID, memberID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[ResourceOwner](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#ResourceOwner), [error](/builtin#error))
RemoveOwner(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) [error](/builtin#error)
RemoveOwnerWithID(ctx [context](/context).[Context](/context#Context), taskID, memberID [string](/builtin#string)) [error](/builtin#error)
FindRuns(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), filter *[RunFilter](#RunFilter)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
FindRunsWithID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string), filter *[RunFilter](#RunFilter)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
GetRun(ctx [context](/context).[Context](/context#Context), run *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
GetRunByID(ctx [context](/context).[Context](/context#Context), taskID, runID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
FindRunLogs(ctx [context](/context).[Context](/context#Context), run *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[LogEvent](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#LogEvent), [error](/builtin#error))
FindRunLogsWithID(ctx [context](/context).[Context](/context#Context), taskID, runID [string](/builtin#string)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[LogEvent](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#LogEvent), [error](/builtin#error))
RunManually(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
RunManuallyWithID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
RetryRun(ctx [context](/context).[Context](/context#Context), run *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
RetryRunWithID(ctx [context](/context).[Context](/context#Context), taskID, runID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run), [error](/builtin#error))
CancelRun(ctx [context](/context).[Context](/context#Context), run *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Run](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Run)) [error](/builtin#error)
CancelRunWithID(ctx [context](/context).[Context](/context#Context), taskID, runID [string](/builtin#string)) [error](/builtin#error)
FindLogs(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[LogEvent](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#LogEvent), [error](/builtin#error))
FindLogsWithID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[LogEvent](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#LogEvent), [error](/builtin#error))
FindLabels(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
FindLabelsWithID(ctx [context](/context).[Context](/context#Context), taskID [string](/builtin#string)) ([][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
AddLabel(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), label *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
AddLabelWithID(ctx [context](/context).[Context](/context#Context), taskID, labelID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label), [error](/builtin#error))
RemoveLabel(ctx [context](/context).[Context](/context#Context), task *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Task](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Task), label *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[Label](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#Label)) [error](/builtin#error)
RemoveLabelWithID(ctx [context](/context).[Context](/context#Context), taskID, labelID [string](/builtin#string)) [error](/builtin#error)
}
TasksAPI provides methods for managing tasks and task runs in an InfluxDB server.
package main
import ( "context" "fmt"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token")
ctx := context.Background()
// Get Delete API client
tasksAPI := client.TasksAPI()
// Get organization that will own task
myorg, err := client.OrganizationsAPI().FindOrganizationByName(ctx, "my-org")
if err != nil {
panic(err)
}
// task flux script from https://www.influxdata.com/blog/writing-tasks-and-setting-up-alerts-for-influxdb-cloud/
flux := `fruitCollected = from(bucket: “farming”)
|> range(start: -task.every) |> filter(fn: (r) => (r._measurement == “totalFruitsCollected)) |> filter(fn: (r) => (r._field == “fruits)) |> group(columns: [“farmName”]) |> aggregateWindow(fn: sum, every: task.every) |> map(fn: (r) => { return: _time: r._time, _stop: r._stop, _start: r._start, _measurement: “fruitCollectionRate”, _field: “fruits”, _value: r._value, farmName: farmName, } })
fruitCollected |> to(bucket: “farming”) ` task, err := tasksAPI.CreateTaskWithEvery(ctx, "fruitCollectedRate", flux, "1h", *myorg.Id) if err != nil { panic(err) } // Force running a task run, err := tasksAPI.RunManually(ctx, task) if err != nil { panic(err) }
fmt.Println("Forced run completed on ", *run.FinishedAt, " with status ", *run.Status)
// Print logs
logs, err := tasksAPI.FindRunLogs(ctx, run)
if err != nil {
panic(err)
}
fmt.Println("Log:")
for _, logEvent := range logs {
fmt.Println(" Time:", *logEvent.Time, ", Message: ", *logEvent.Message)
}
// Close the client
client.Close()
}
Output:
NewTasksAPI creates new instance of TasksAPI
type UsersAPI interface {
GetUsers(ctx [context](/context).[Context](/context#Context)) (*[][domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), [error](/builtin#error))
FindUserByID(ctx [context](/context).[Context](/context#Context), userID [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), [error](/builtin#error))
FindUserByName(ctx [context](/context).[Context](/context#Context), userName [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), [error](/builtin#error))
CreateUser(ctx [context](/context).[Context](/context#Context), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), [error](/builtin#error))
CreateUserWithName(ctx [context](/context).[Context](/context#Context), userName [string](/builtin#string)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), [error](/builtin#error))
UpdateUser(ctx [context](/context).[Context](/context#Context), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), [error](/builtin#error))
UpdateUserPassword(ctx [context](/context).[Context](/context#Context), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), password [string](/builtin#string)) [error](/builtin#error)
UpdateUserPasswordWithID(ctx [context](/context).[Context](/context#Context), userID [string](/builtin#string), password [string](/builtin#string)) [error](/builtin#error)
DeleteUserWithID(ctx [context](/context).[Context](/context#Context), userID [string](/builtin#string)) [error](/builtin#error)
DeleteUser(ctx [context](/context).[Context](/context#Context), user *[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User)) [error](/builtin#error)
Me(ctx [context](/context).[Context](/context#Context)) (*[domain](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain).[User](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/domain#User), [error](/builtin#error))
MeUpdatePassword(ctx [context](/context).[Context](/context#Context), oldPassword, newPassword [string](/builtin#string)) [error](/builtin#error)
SignIn(ctx [context](/context).[Context](/context#Context), username, password [string](/builtin#string)) [error](/builtin#error)
SignOut(ctx [context](/context).[Context](/context#Context)) [error](/builtin#error)
}
UsersAPI provides methods for managing users in a InfluxDB server
package main
import ( "context"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token")
// Find organization
org, err := client.OrganizationsAPI().FindOrganizationByName(context.Background(), "my-org")
if err != nil {
panic(err)
}
// Get users API client
usersAPI := client.UsersAPI()
// Create new user
user, err := usersAPI.CreateUserWithName(context.Background(), "user-01")
if err != nil {
panic(err)
}
// Set user password
err = usersAPI.UpdateUserPassword(context.Background(), user, "pass-at-least-8-chars")
if err != nil {
panic(err)
}
// Add user to organization
_, err = client.OrganizationsAPI().AddMember(context.Background(), org, user)
if err != nil {
panic(err)
}
// Ensures background processes finishes
client.Close()
}
Output:
package main
import ( "context"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and empty token client := influxdb2.NewClient("http://localhost:8086", "") // Always close client at the end defer client.Close()
ctx := context.Background()
// The first call must be signIn
err := client.UsersAPI().SignIn(ctx, "username", "password")
if err != nil {
panic(err)
}
// Perform some authorized operations
err = client.WriteAPIBlocking("my-org", "my-bucket").WriteRecord(ctx, "test,a=rock,b=local f=1.2,i=-5i")
if err != nil {
panic(err)
}
// Sign out at the end
err = client.UsersAPI().SignOut(ctx)
if err != nil {
panic(err)
}
}
Output:
NewUsersAPI creates new instance of UsersAPI
type WriteAPI interface {
WriteRecord(line [string](/builtin#string))
WritePoint(point *[write](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/api/write).[Point](/github.com/influxdata/influxdb-client-go/v2@v2.14.0/api/write#Point))
Flush()
Errors() <-chan [error](/builtin#error)
SetWriteFailedCallback(cb [WriteFailedCallback](#WriteFailedCallback))
}
WriteAPI is Write client interface with non-blocking methods for writing time series data asynchronously in batches into an InfluxDB server. WriteAPI can be used concurrently. When using multiple goroutines for writing, use a single WriteAPI instance in all goroutines.
package main
import ( "fmt" "math/rand" "time"
"github.com/influxdata/influxdb-client-go/v2/api/write"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token") // Get non-blocking write client writeAPI := client.WriteAPI("my-org", "my-bucket") // write some points for i := 0; i < 100; i++ { // create point p := write.NewPoint( "system", map[string]string{ "id": fmt.Sprintf("rack_%v", i%10), "vendor": "AWS", "hostname": fmt.Sprintf("host_%v", i%100), }, map[string]interface{}{ "temperature": rand.Float64() * 80.0, "disk_free": rand.Float64() * 1000.0, "disk_total": (i/10 + 1) * 1000000, "mem_total": (i/100 + 1) * 10000000, "mem_free": rand.Uint64(), }, time.Now()) // write asynchronously writeAPI.WritePoint(p) } // Force all unwritten data to be sent writeAPI.Flush() // Ensures background processes finishes client.Close() }
Output:
package main
import ( "fmt" "math/rand" "time"
apiHttp "github.com/influxdata/influxdb-client-go/v2/api/http"
"github.com/influxdata/influxdb-client-go/v2/api/write"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token") // Get non-blocking write client writeAPI := client.WriteAPI("my-org", "my-bucket") // Get errors channel errorsCh := writeAPI.Errors() // Create go proc for reading and logging errors go func() { for err := range errorsCh { fmt.Printf("write error: %s\n", err.Error()) fmt.Printf("trace-id: %s\n", err.(*apiHttp.Error).Header.Get("Trace-ID")) } }() // write some points for i := 0; i < 100; i++ { // create point p := write.NewPointWithMeasurement("stat"). AddTag("id", fmt.Sprintf("rack_%v", i%10)). AddTag("vendor", "AWS"). AddTag("hostname", fmt.Sprintf("host_%v", i%100)). AddField("temperature", rand.Float64()*80.0). AddField("disk_free", rand.Float64()*1000.0). AddField("disk_total", (i/10+1)*1000000). AddField("mem_total", (i/100+1)*10000000). AddField("mem_free", rand.Uint64()). SetTime(time.Now()) // write asynchronously writeAPI.WritePoint(p) } // Force all unwritten data to be sent writeAPI.Flush() // Ensures background processes finishes client.Close() }
Output:
WriteAPIBlocking can be used concurrently. When using multiple goroutines for writing, use a single WriteAPIBlocking instance in all goroutines.
package main
import ( "context" "fmt" "math/rand" "time"
"github.com/influxdata/influxdb-client-go/v2/api/write"
influxdb2 "github.com/influxdata/influxdb-client-go/v2/internal/examples"
)
func main() { // Create a new client using an InfluxDB server base URL and an authentication token client := influxdb2.NewClient("http://localhost:8086", "my-token") // Get blocking write client writeAPI := client.WriteAPIBlocking("my-org", "my-bucket") // write some points for i := 0; i < 100; i++ { // create data point p := write.NewPoint( "system", map[string]string{ "id": fmt.Sprintf("rack_%v", i%10), "vendor": "AWS", "hostname": fmt.Sprintf("host_%v", i%100), }, map[string]interface{}{ "temperature": rand.Float64() * 80.0, "disk_free": rand.Float64() * 1000.0, "disk_total": (i/10 + 1) * 1000000, "mem_total": (i/100 + 1) * 10000000, "mem_free": rand.Uint64(), }, time.Now()) // write synchronously err := writeAPI.WritePoint(context.Background(), p) if err != nil { panic(err) } } // Ensures background processes finishes client.Close() }
Output:
NewWriteAPIBlocking creates new instance of blocking write client for writing data to bucket belonging to org
NewWriteAPIBlockingWithBatching creates new instance of blocking write client for writing data to bucket belonging to org with batching enabled
type WriteAPIImpl struct {
}
WriteAPIImpl provides main implementation for WriteAPI
NewWriteAPI returns new non-blocking write client for writing data to bucket belonging to org
func (w *WriteAPIImpl) Close()
Close finishes outstanding write operations, stop background routines and closes all channels
func (w *WriteAPIImpl) Errors() <-chan error
Errors returns a channel for reading errors which occurs during async writes. Must be called before performing any writes for errors to be collected. New error is skipped when channel is not read.
func (w *WriteAPIImpl) Flush()
Flush forces all pending writes from the buffer to be sent. Flush also tries sending batches from retry queue without additional retrying.
func (w *WriteAPIImpl) SetWriteFailedCallback(cb WriteFailedCallback)
SetWriteFailedCallback sets callback allowing custom handling of failed writes. If callback returns true, failed batch will be retried, otherwise discarded.
WritePoint writes asynchronously Point into bucket. WritePoint adds Point into the buffer which is sent on the background when it reaches the batch size. Blocking alternative is available in the WriteAPIBlocking interface
WriteRecord writes asynchronously line protocol record into bucket. WriteRecord adds record into the buffer which is sent on the background when it reaches the batch size. Blocking alternative is available in the WriteAPIBlocking interface
WriteFailedCallback is synchronously notified in case non-blocking write fails. batch contains complete payload, error holds detailed error information, retryAttempts means number of retries, 0 if it failed during first write. It must return true if WriteAPI should continue with retrying, false will discard the batch.