code: func NewSourceHandler() *SourceHandler {
  	h := &SourceHandler{
  		Router: NewRouter(),
  		Logger: zap.NewNop(),
  		NewBucketService: func(s *platform.Source) (platform.BucketService, error) {
  			return nil, fmt.Errorf("bucket service not set")
  		},
  		NewQueryService: func(s *platform.Source) (query.ProxyQueryService, error) {
  			return nil, fmt.Errorf("query service not set")
  		},
  	}
  
  	h.HandlerFunc("POST", "/api/v2/sources", h.handlePostSource)
  	h.HandlerFunc("GET", "/api/v2/sources", h.handleGetSources)
  	h.HandlerFunc("GET", "/api/v2/sources/:id", h.handleGetSource)
  	h.HandlerFunc("PATCH", "/api/v2/sources/:id", h.handlePatchSource)
  	h.HandlerFunc("DELETE", "/api/v2/sources/:id", h.handleDeleteSource)
  
  	h.HandlerFunc("GET", "/api/v2/sources/:id/buckets", h.handleGetSourcesBuckets)
  	h.HandlerFunc("POST", "/api/v2/sources/:id/query", h.handlePostSourceQuery)
  	h.HandlerFunc("GET", "/api/v2/sources/:id/health", h.handleGetSourceHealth)
  
  	return h
  }
docs: // NewSourceHandler returns a new instance of SourceHandler.