code: func NewAPI(
  	qe *promql.Engine,
  	q storage.Queryable,
  	tr targetRetriever,
  	ar alertmanagerRetriever,
  	configFunc func() config.Config,
  	flagsMap map[string]string,
  	readyFunc func(http.HandlerFunc) http.HandlerFunc,
  	db func() TSDBAdmin,
  	enableAdmin bool,
  	logger log.Logger,
  	rr rulesRetriever,
  	remoteReadSampleLimit int,
  	remoteReadConcurrencyLimit int,
  	CORSOrigin *regexp.Regexp,
  ) *API {
  	return &API{
  		QueryEngine:           qe,
  		Queryable:             q,
  		targetRetriever:       tr,
  		alertmanagerRetriever: ar,
  
  		now:                   time.Now,
  		config:                configFunc,
  		flagsMap:              flagsMap,
  		ready:                 readyFunc,
  		db:                    db,
  		enableAdmin:           enableAdmin,
  		rulesRetriever:        rr,
  		remoteReadSampleLimit: remoteReadSampleLimit,
  		remoteReadGate:        gate.New(remoteReadConcurrencyLimit),
  		logger:                logger,
  		CORSOrigin:            CORSOrigin,
  	}
  }
docs: // NewAPI returns an initialized API type.