package client import ( "context" "fmt" "net/url" "time" ) type User struct { Active bool `json:"active"` AvatarUrl string `json:"avatar_url"` Created time.Time `json:"created"` Description string `json:"description"` Email string `json:"email"` FollowerCount int64 `json:"followers_count"` FollowingCount int64 `json:"following_count"` FullName string `json:"full_name"` HtmlUrl string `json:"html_url"` Id int64 `json:"id"` IsAdmin bool `json:"is_admin"` Language string `json:"language"` LastLogin time.Time `json:"last_login"` Location string `json:"location"` LoginName string `json:"login_name"` Login string `json:"login"` ProhibitLogin bool `json:"prohibit_login"` Pronouns string `json:"pronouns"` Restricted bool `json:"restricted"` SourceId int64 `json:"source_id"` StarredRepoCount int64 `json:"starred_repos_count"` Visibility string `json:"visibility"` Website string `json:"website"` } func (c *Client) UsersList(ctx context.Context) ([]User, error) { type Response struct { Data []User `json:"data"` Ok bool `json:"ok"` } var response Response query := make(url.Values) query.Set("limit", "50") query.Set("page", "1") uriRef := url.URL{ Path: "api/v1/users/search", RawQuery: query.Encode(), } if err := c.Send(ctx, "GET", &uriRef, nil, &response); err != nil { return nil, fmt.Errorf("failed to search users: %w", err) } if !response.Ok { return response.Data, fmt.Errorf("got a non OK status when querying users/search") } return response.Data, nil }