code: func (s *BucketService) FindBuckets(ctx context.Context, filter platform.BucketFilter, opt ...platform.FindOptions) ([]*platform.Bucket, int, error) {
  	u, err := newURL(s.Addr, bucketPath)
  	if err != nil {
  		return nil, 0, err
  	}
  
  	query := u.Query()
  	if filter.OrganizationID != nil {
  		query.Add("orgID", filter.OrganizationID.String())
  	}
  	if filter.Organization != nil {
  		query.Add("org", *filter.Organization)
  	}
  	if filter.ID != nil {
  		query.Add("id", filter.ID.String())
  	}
  	if filter.Name != nil {
  		query.Add("name", *filter.Name)
  	}
  
  	req, err := http.NewRequest("GET", u.String(), nil)
  	if err != nil {
  		return nil, 0, err
  	}
  
  	req.URL.RawQuery = query.Encode()
  	SetToken(s.Token, req)
  
  	hc := newClient(u.Scheme, s.InsecureSkipVerify)
  	resp, err := hc.Do(req)
  	if err != nil {
  		return nil, 0, err
  	}
  
  	if err := CheckError(resp, true); err != nil {
  		return nil, 0, err
  	}
  
  	var bs bucketsResponse
  	if err := json.NewDecoder(resp.Body).Decode(&bs); err != nil {
  		return nil, 0, err
  	}
  	defer resp.Body.Close()
  
  	buckets := make([]*platform.Bucket, 0, len(bs.Buckets))
  	for _, b := range bs.Buckets {
  		pb, err := b.bucket.toPlatform()
  		if err != nil {
  			return nil, 0, err
  		}
  
  		buckets = append(buckets, pb)
  	}
  
  	return buckets, len(buckets), nil
  }
docs: // FindBuckets returns a list of buckets that match filter and the total count of matching buckets.
  // Additional options provide pagination & sorting.