Repository: amp-labs/connectors
Pull request #1520 (2025-03-26 23:59:28)

[CON-1615] feat(module): Default Root constant
# Backward Compatibility
* ModuleEmpty is only used by HubSpot. Other connectors declare it but never use it, making removal safe for them.
* Atlassian does not use an empty module. The default (ModuleEmpty) is never invoked because `atlassian.WithModule(module)` is always set.
![image](https://github.com/user-attachments/assets/94aeddf1-bcc1-4805-94f0-b2c1188b9f29)
* HubSpot references ModuleEmpty = "", but its behavior remains unchanged.
  * Either ModuleEmpty or ModuleCRM is selected for read/write.
  * The module is used for path creation or schema.json lookups.
    * Path depends on catalog BaseURL defined by Module. This is to be addressed in future PRs. 
    * `metadata.Schemas.SelectOne` and similar functions already treat both "root" and "" as equivalent.
  * No action required.
![image](https://github.com/user-attachments/assets/5a604d9f-591c-4606-b91e-027be89339ab)

# Summary
`staticschema.RootModuleID` allignes with newly defined `common.ModuleRoot` as planned.

# Review
Changes are grouped by commits.

Cobalt0s: > [!WARNING]
> <b>This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack <a href="https://app.graphite.dev/github/pr/amp-labs/connectors/1520?utm_source=stack-comment-downstack-mergeability-warning" >on Graphite</a>.</b>
> <a href="https://graphite.dev/docs/merge-pull-requests">Learn more</a>

* **#1520** <a href="https://app.graphite.dev/github/pr/amp-labs/connectors/1520?utm_source=stack-comment-icon" target="_blank"><img src="https://static.graphite.dev/graphite-32x32-black.png" alt="Graphite" width="10px" height="10px"/></a> 👈 <a href="https://app.graphite.dev/github/pr/amp-labs/connectors/1520?utm_source=stack-comment-view-in-graphite" target="_blank">(View in Graphite)</a>
* **#1519** <a href="https://app.graphite.dev/github/pr/amp-labs/connectors/1519?utm_source=stack-comment-icon" target="_blank"><img src="https://static.graphite.dev/graphite-32x32-black.png" alt="Graphite" width="10px" height="10px"/></a>
* `main`


<h2></h2>

This stack of pull requests is managed by <a href="https://graphite.dev?utm-source=stack-comment"><b>Graphite</b></a>. Learn more about <a href="https://stacking.dev/?utm_source=stack-comment">stacking</a>.
<!-- Current dependencies on/for this PR: -->
Cobalt0s: > @Cobalt0s I believe the server is using this for constructing the proxy connector, can you please create a PR for that and merge it in with this commit as the dependency?

I have not found any references to the `staticschema.RootModuleID`. 
Overall, there are just a few of references to the `ModuleID`, nothing will break.

Patch:
diff --git a/common/module.go b/common/module.go
index 9698f773..ea33c0c0 100644
--- a/common/module.go
+++ b/common/module.go
@@ -19,6 +19,8 @@ var (
 	ErrUnsupportedModule = errors.New("provided module is not supported")
 )
 
+const ModuleRoot ModuleID = "root"
+
 type ModuleID string
 
 type Modules = datautils.Map[ModuleID, Module]
diff --git a/internal/components/connector.go b/internal/components/connector.go
index a3308da8..f3744677 100644
--- a/internal/components/connector.go
+++ b/internal/components/connector.go
@@ -5,7 +5,6 @@ import (
 
 	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/goutils"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -35,7 +34,7 @@ func Initialize[T any](
 
 	// Default module is always the root module
 	if params.Module == "" {
-		params.Module = staticschema.RootModuleID
+		params.Module = common.ModuleRoot
 	}
 
 	transport, err := NewTransport(provider, params)
diff --git a/internal/staticschema/core.go b/internal/staticschema/core.go
index 7ad4f509..99dd265f 100644
--- a/internal/staticschema/core.go
+++ b/internal/staticschema/core.go
@@ -7,8 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/datautils"
 )
 
-const RootModuleID common.ModuleID = "root"
-
 // NewMetadata constructs empty Metadata. To populate it with data use Metadata.Add method.
 func NewMetadata[F FieldMetadataMap]() *Metadata[F, any] {
 	return NewExtendedMetadata[F, any]()
@@ -268,7 +266,7 @@ func (m *Metadata[F, C]) ObjectNames() datautils.UniqueLists[common.ModuleID, st
 
 		moduleObjectNames[key] = names
 
-		if key == RootModuleID {
+		if key == common.ModuleRoot {
 			// Empty ModuleID could be passed referring to the same root module.
 			moduleObjectNames[""] = names
 		}
@@ -340,7 +338,7 @@ func (m *Module[F, C]) withPath(path string) {
 // In case an empty ModuleID is provided we fall back to the default root module id.
 func moduleIdentifier(id common.ModuleID) common.ModuleID {
 	if len(id) == 0 {
-		return RootModuleID
+		return common.ModuleRoot
 	}
 
 	return id
diff --git a/providers/aha/supports.go b/providers/aha/supports.go
index fce6f927..ea78384c 100644
--- a/providers/aha/supports.go
+++ b/providers/aha/supports.go
@@ -4,9 +4,9 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/datautils"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers/aha/metadata"
 )
 
@@ -45,10 +45,10 @@ var supportWrite = datautils.NewSet( //nolint:gochecknoglobals
 )
 
 func supportedOperations() components.EndpointRegistryInput {
-	readSupport := metadata.Schemas.ObjectNames().GetList(staticschema.RootModuleID)
+	readSupport := metadata.Schemas.ObjectNames().GetList(common.ModuleRoot)
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/ashby/supports.go b/providers/ashby/supports.go
index 70170489..a70c6dbe 100644
--- a/providers/ashby/supports.go
+++ b/providers/ashby/supports.go
@@ -4,9 +4,9 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/datautils"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers/ashby/metadata"
 )
 
@@ -22,7 +22,7 @@ var (
 )
 
 func supportedOperations() components.EndpointRegistryInput {
-	readSupport := metadata.Schemas.ObjectNames().GetList(staticschema.RootModuleID)
+	readSupport := metadata.Schemas.ObjectNames().GetList(common.ModuleRoot)
 
 	//nolint:lll
 	writeSupport := []string{
@@ -43,7 +43,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/atlassian/connector.go b/providers/atlassian/connector.go
index 2aa1d64d..5a3f02b7 100644
--- a/providers/atlassian/connector.go
+++ b/providers/atlassian/connector.go
@@ -28,7 +28,7 @@ type Connector struct {
 
 func NewConnector(opts ...Option) (conn *Connector, outErr error) {
 	params, err := paramsbuilder.Apply(parameters{}, opts,
-		WithModule(ModuleEmpty), // The module is resolved on behalf of the user if the option is missing.
+		WithModule(common.ModuleRoot), // The module is resolved on behalf of the user if the option is missing.
 	)
 	if err != nil {
 		return nil, err
diff --git a/providers/atlassian/modules.go b/providers/atlassian/modules.go
index f08497dc..1a199d63 100644
--- a/providers/atlassian/modules.go
+++ b/providers/atlassian/modules.go
@@ -5,8 +5,6 @@ import (
 )
 
 const (
-	// ModuleEmpty is used for proxying requests through.
-	ModuleEmpty common.ModuleID = ""
 	// ModuleJira is the module used for listing Jira issues.
 	ModuleJira common.ModuleID = "jira"
 	// ModuleAtlassianJiraConnect is the module used for Atlassian Connect.
@@ -16,8 +14,8 @@ const (
 // supportedModules represents currently working and supported modules within the Atlassian connector.
 // Any added module should be appended here.
 var supportedModules = common.Modules{ // nolint: gochecknoglobals
-	ModuleEmpty: {
-		ID:      ModuleEmpty,
+	common.ModuleRoot: {
+		ID:      common.ModuleRoot,
 		Label:   "",
 		Version: "",
 	},
diff --git a/providers/atlassian/params.go b/providers/atlassian/params.go
index e62710c6..ecaf6bb2 100644
--- a/providers/atlassian/params.go
+++ b/providers/atlassian/params.go
@@ -53,7 +53,7 @@ func WithWorkspace(workspaceRef string) Option {
 // WithModule sets the Atlassian API module to use for the connector. It's required.
 func WithModule(module common.ModuleID) Option {
 	return func(params *parameters) {
-		params.WithModule(module, supportedModules, ModuleEmpty)
+		params.WithModule(module, supportedModules, common.ModuleRoot)
 	}
 }
 
diff --git a/providers/blueshift/supports.go b/providers/blueshift/supports.go
index 9fe14e42..0ca6fad0 100644
--- a/providers/blueshift/supports.go
+++ b/providers/blueshift/supports.go
@@ -4,9 +4,9 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/datautils"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers/blueshift/metadata"
 )
 
@@ -44,11 +44,11 @@ var writeObjectWithSuffix = datautils.NewSet( //nolint:gochecknoglobals
 )
 
 func supportedOperations() components.EndpointRegistryInput {
-	readSupport := metadata.Schemas.ObjectNames().GetList(staticschema.RootModuleID)
+	readSupport := metadata.Schemas.ObjectNames().GetList(common.ModuleRoot)
 	writeSupport := []string{objectNameCustomers, objectNameCustomUserLists, objectNameEvent, objectNameEmailTemplates, objectNamePushTemplates, objectNameSmsTemplates, objectNameExternalFetches} //nolint:lll
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/brevo/support.go b/providers/brevo/support.go
index 79a2bc13..85a9cb0d 100644
--- a/providers/brevo/support.go
+++ b/providers/brevo/support.go
@@ -4,9 +4,9 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/datautils"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers/brevo/metadata"
 )
 
@@ -36,7 +36,7 @@ var supportLimitAndOffset = datautils.NewSet( //nolint:gochecknoglobals
 
 func supportedOperations() components.EndpointRegistryInput {
 	// We support reading everything under schema.json, so we get all the objects and join it into a pattern.
-	readSupport := metadata.Schemas.ObjectNames().GetList(staticschema.RootModuleID)
+	readSupport := metadata.Schemas.ObjectNames().GetList(common.ModuleRoot)
 
 	writeSupport := []string{
 		"smtp/email", "smtp/templates", "smtp/blockedDomains",
@@ -61,7 +61,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/chilipiper/metadata.go b/providers/chilipiper/metadata.go
index b6f39614..137bf598 100644
--- a/providers/chilipiper/metadata.go
+++ b/providers/chilipiper/metadata.go
@@ -5,7 +5,6 @@ import (
 
 	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/common/naming"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers/chilipiper/metadata"
 )
 
@@ -103,7 +102,7 @@ func metadataFallback(moduleID common.ModuleID, objectName string) (*common.Obje
 func openAPIFallback(obj string, res *common.ListObjectMetadataResult,
 ) *common.ListObjectMetadataResult { //nolint:unparam
 	// Try fallback function
-	data, err := metadataFallback(staticschema.RootModuleID, obj)
+	data, err := metadataFallback(common.ModuleRoot, obj)
 	if err != nil {
 		res.Errors[obj] = err
 
diff --git a/providers/clickup/supports.go b/providers/clickup/supports.go
index 06007930..4b319f41 100644
--- a/providers/clickup/supports.go
+++ b/providers/clickup/supports.go
@@ -4,17 +4,17 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers/clickup/metadata"
 )
 
 func supportedOperations() components.EndpointRegistryInput {
 	// We support reading everything under schema.json, so we get all the objects and join it into a pattern.
-	readSupport := metadata.Schemas.ObjectNames().GetList(staticschema.RootModuleID)
+	readSupport := metadata.Schemas.ObjectNames().GetList(common.ModuleRoot)
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/dixa/connector.go b/providers/dixa/connector.go
index 7e7996b6..b5374268 100644
--- a/providers/dixa/connector.go
+++ b/providers/dixa/connector.go
@@ -64,7 +64,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -76,7 +76,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/dixa/support.go b/providers/dixa/support.go
index 66dab06e..bd47f6f3 100644
--- a/providers/dixa/support.go
+++ b/providers/dixa/support.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func supportedOperations() components.EndpointRegistryInput {
@@ -23,7 +23,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/front/supports.go b/providers/front/supports.go
index 1f92afb5..7b355aeb 100644
--- a/providers/front/supports.go
+++ b/providers/front/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func supportedOperations() components.EndpointRegistryInput {
@@ -25,7 +25,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/github/supports.go b/providers/github/supports.go
index 03630bf1..492de76d 100644
--- a/providers/github/supports.go
+++ b/providers/github/supports.go
@@ -4,9 +4,9 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/datautils"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers/github/metadata"
 )
 
@@ -73,7 +73,7 @@ var (
 )
 
 func supportedOperations() components.EndpointRegistryInput {
-	readSupport := metadata.Schemas.ObjectNames().GetList(staticschema.RootModuleID)
+	readSupport := metadata.Schemas.ObjectNames().GetList(common.ModuleRoot)
 
 	// nolint:lll
 	writeSupport := []string{
@@ -88,7 +88,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/gitlab/connector.go b/providers/gitlab/connector.go
index d58a8c19..2c281e5c 100644
--- a/providers/gitlab/connector.go
+++ b/providers/gitlab/connector.go
@@ -74,7 +74,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -86,7 +86,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/gitlab/supports.go b/providers/gitlab/supports.go
index 3029ac9e..30387c1b 100644
--- a/providers/gitlab/supports.go
+++ b/providers/gitlab/supports.go
@@ -4,9 +4,9 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/datautils"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 var objectResponders = datautils.NewSet( //nolint:gochecknoglobals
@@ -117,7 +117,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/gorgias/connector.go b/providers/gorgias/connector.go
index c823038c..e881bbfe 100644
--- a/providers/gorgias/connector.go
+++ b/providers/gorgias/connector.go
@@ -7,7 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components/reader"
 	"github.com/amp-labs/connectors/internal/components/schema"
 	"github.com/amp-labs/connectors/internal/components/writer"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -55,7 +54,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -66,7 +65,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/gorgias/supports.go b/providers/gorgias/supports.go
index 75d992e5..cdda5d0c 100644
--- a/providers/gorgias/supports.go
+++ b/providers/gorgias/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func supportedOperations() components.EndpointRegistryInput {
@@ -24,7 +24,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/groove/connector.go b/providers/groove/connector.go
index 20ccece0..3b8ad386 100644
--- a/providers/groove/connector.go
+++ b/providers/groove/connector.go
@@ -7,7 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components/reader"
 	"github.com/amp-labs/connectors/internal/components/schema"
 	"github.com/amp-labs/connectors/internal/components/writer"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -52,7 +51,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -64,7 +63,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/groove/supports.go b/providers/groove/supports.go
index 575cf12d..e1660a76 100644
--- a/providers/groove/supports.go
+++ b/providers/groove/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func responseField(objectName string) string {
@@ -33,7 +33,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/helpscout/supports.go b/providers/helpscout/supports.go
index fa7a97cc..5cc82728 100644
--- a/providers/helpscout/supports.go
+++ b/providers/helpscout/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func supportedOperations() components.EndpointRegistryInput {
@@ -13,7 +13,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	writeSupport := []string{"conversations", "customers", "customer-properties", "webhooks"}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/hubspot/connector.go b/providers/hubspot/connector.go
index 77a9516e..755a9df4 100644
--- a/providers/hubspot/connector.go
+++ b/providers/hubspot/connector.go
@@ -16,7 +16,7 @@ type Connector struct {
 // NewConnector returns a new Hubspot connector.
 func NewConnector(opts ...Option) (conn *Connector, outErr error) {
 	params, err := paramsbuilder.Apply(parameters{}, opts,
-		WithModule(ModuleEmpty), // The module is resolved on behalf of the user if the option is missing.
+		WithModule(common.ModuleRoot), // The module is resolved on behalf of the user if the option is missing.
 	)
 	if err != nil {
 		return nil, err
diff --git a/providers/hubspot/modules.go b/providers/hubspot/modules.go
index cf8a8988..a213443d 100644
--- a/providers/hubspot/modules.go
+++ b/providers/hubspot/modules.go
@@ -5,8 +5,6 @@ import (
 )
 
 const (
-	// ModuleEmpty is used for proxying requests through.
-	ModuleEmpty common.ModuleID = ""
 	// ModuleCRM is the module used for accessing standard CRM objects.
 	ModuleCRM common.ModuleID = "CRM"
 )
@@ -14,8 +12,8 @@ const (
 // supportedModules represents currently working and supported modules within the Hubspot connector.
 // Any added module should be appended added here.
 var supportedModules = common.Modules{ // nolint: gochecknoglobals
-	ModuleEmpty: {
-		ID:      ModuleEmpty,
+	common.ModuleRoot: {
+		ID:      common.ModuleRoot,
 		Label:   "",
 		Version: "",
 	},
diff --git a/providers/hubspot/params.go b/providers/hubspot/params.go
index 6c306774..6b35eb27 100644
--- a/providers/hubspot/params.go
+++ b/providers/hubspot/params.go
@@ -51,7 +51,7 @@ func WithAuthenticatedClient(client common.AuthenticatedHTTPClient) Option {
 // WithModule sets the hubspot API module to use for the connector. It's required.
 func WithModule(module common.ModuleID) Option {
 	return func(params *parameters) {
-		params.WithModule(module, supportedModules, ModuleEmpty)
+		params.WithModule(module, supportedModules, common.ModuleRoot)
 	}
 }
 
diff --git a/providers/hunter/connector.go b/providers/hunter/connector.go
index 9869655f..a7d38be2 100644
--- a/providers/hunter/connector.go
+++ b/providers/hunter/connector.go
@@ -7,7 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components/reader"
 	"github.com/amp-labs/connectors/internal/components/schema"
 	"github.com/amp-labs/connectors/internal/components/writer"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -52,7 +51,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -64,7 +63,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/hunter/supports.go b/providers/hunter/supports.go
index 41ef17d4..1ef5fe7f 100644
--- a/providers/hunter/supports.go
+++ b/providers/hunter/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func supportedOperations() components.EndpointRegistryInput {
@@ -18,7 +18,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/lemlist/connector.go b/providers/lemlist/connector.go
index 3728340f..53456e3b 100644
--- a/providers/lemlist/connector.go
+++ b/providers/lemlist/connector.go
@@ -7,7 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components/reader"
 	"github.com/amp-labs/connectors/internal/components/schema"
 	"github.com/amp-labs/connectors/internal/components/writer"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -56,7 +55,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -68,7 +67,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/lemlist/supports.go b/providers/lemlist/supports.go
index a60e66b0..8e4beab4 100644
--- a/providers/lemlist/supports.go
+++ b/providers/lemlist/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func responseSchema(objectName string) (string, string) {
@@ -42,7 +42,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/marketo/module.go b/providers/marketo/module.go
index 1887e5ac..40289668 100644
--- a/providers/marketo/module.go
+++ b/providers/marketo/module.go
@@ -5,8 +5,6 @@ import (
 )
 
 const (
-	// ModuleEmpty is used for proxying requests through.
-	ModuleEmpty common.ModuleID = ""
 	// ModuleAssets is the module/API used for accessing assets objects.
 	ModuleAssets common.ModuleID = "assets"
 	// ModuleLeads is the module/API used for accessing leads objects.
@@ -16,8 +14,8 @@ const (
 // supportedModules represents currently working and supported modules within the Marketo connector.
 // Any added module should be appended here.
 var supportedModules = common.Modules{ // nolint: gochecknoglobals
-	ModuleEmpty: {
-		ID:      ModuleEmpty,
+	common.ModuleRoot: {
+		ID:      common.ModuleRoot,
 		Label:   "",
 		Version: "",
 	},
diff --git a/providers/marketo/url.go b/providers/marketo/url.go
index 1e002cf4..a5039dc0 100644
--- a/providers/marketo/url.go
+++ b/providers/marketo/url.go
@@ -29,7 +29,10 @@ func (c *Connector) constructReadURL(params common.ReadParams) (*urlbuilder.URL,
 			fmtTime := params.Since.Format(time.RFC3339)
 			url.WithQueryParam("earliestUpdatedAt", fmtTime)
 			url.WithQueryParam("latestUpdatedAt", time.Now().Format(time.RFC3339))
-
+		case ModuleLeads:
+			fallthrough
+		case common.ModuleRoot:
+			fallthrough
 		default: // we currently don't support filtering in leads.
 		}
 	}
diff --git a/providers/mixmax/connector.go b/providers/mixmax/connector.go
index 8c509e75..35c00d2c 100644
--- a/providers/mixmax/connector.go
+++ b/providers/mixmax/connector.go
@@ -7,7 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components/reader"
 	"github.com/amp-labs/connectors/internal/components/schema"
 	"github.com/amp-labs/connectors/internal/components/writer"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -56,7 +55,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -68,7 +67,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/mixmax/supports.go b/providers/mixmax/supports.go
index 9b8d8a21..3f86328b 100644
--- a/providers/mixmax/supports.go
+++ b/providers/mixmax/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func responseField(objectName string) string {
@@ -36,7 +36,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/monday/utils.go b/providers/monday/utils.go
index f0654fa5..004a120f 100644
--- a/providers/monday/utils.go
+++ b/providers/monday/utils.go
@@ -7,7 +7,6 @@ import (
 
 	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/spyzhov/ajson"
 )
 
@@ -24,7 +23,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	writeSupport := []string{objectBoard, objectItem, objectUser}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(writeSupport, ",")),
 				Support:  components.WriteSupport,
diff --git a/providers/podium/connector.go b/providers/podium/connector.go
index b1af2cba..3b57481a 100644
--- a/providers/podium/connector.go
+++ b/providers/podium/connector.go
@@ -7,7 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components/reader"
 	"github.com/amp-labs/connectors/internal/components/schema"
 	"github.com/amp-labs/connectors/internal/components/writer"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -52,7 +51,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -63,7 +62,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/podium/supports.go b/providers/podium/supports.go
index 0369e869..e970a0d9 100644
--- a/providers/podium/supports.go
+++ b/providers/podium/supports.go
@@ -5,8 +5,8 @@ import (
 	"net/http"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func supportsPagination(objectName string) bool {
@@ -44,7 +44,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/smartleadv2/utils.go b/providers/smartleadv2/utils.go
index 322bf580..a1a5a225 100644
--- a/providers/smartleadv2/utils.go
+++ b/providers/smartleadv2/utils.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/spyzhov/ajson"
 )
 
@@ -21,11 +21,11 @@ const (
 // How to read & build these patterns: https://github.com/gobwas/glob
 func supportedOperations() components.EndpointRegistryInput {
 	// We support reading everything under schema.json, so we get all the objects and join it into a pattern.
-	readSupport := schemas.ObjectNames().GetList(staticschema.RootModuleID)
+	readSupport := schemas.ObjectNames().GetList(common.ModuleRoot)
 	writeSupport := []string{objectNameCampaign, objectNameEmailAccount, objectNameClient}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(writeSupport, ",")),
 				Support:  components.WriteSupport,
diff --git a/providers/zendeskchat/connector.go b/providers/zendeskchat/connector.go
index e79d0fd6..54f28978 100644
--- a/providers/zendeskchat/connector.go
+++ b/providers/zendeskchat/connector.go
@@ -7,7 +7,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components/reader"
 	"github.com/amp-labs/connectors/internal/components/schema"
 	"github.com/amp-labs/connectors/internal/components/writer"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/providers"
 )
 
@@ -53,7 +52,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Reader = reader.NewHTTPReader(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.ReadHandlers{
 			BuildRequest:  connector.buildReadRequest,
 			ParseResponse: connector.parseReadResponse,
@@ -65,7 +64,7 @@ func constructor(base *components.Connector) (*Connector, error) {
 	connector.Writer = writer.NewHTTPWriter(
 		connector.HTTPClient().Client,
 		registry,
-		staticschema.RootModuleID,
+		common.ModuleRoot,
 		operations.WriteHandlers{
 			BuildRequest:  connector.buildWriteRequest,
 			ParseResponse: connector.parseWriteResponse,
diff --git a/providers/zendeskchat/supports.go b/providers/zendeskchat/supports.go
index d7001bb7..d20bfbb9 100644
--- a/providers/zendeskchat/supports.go
+++ b/providers/zendeskchat/supports.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/components"
-	"github.com/amp-labs/connectors/internal/staticschema"
 )
 
 func responseField(objectName string) string {
@@ -46,7 +46,7 @@ func supportedOperations() components.EndpointRegistryInput {
 	}
 
 	return components.EndpointRegistryInput{
-		staticschema.RootModuleID: {
+		common.ModuleRoot: {
 			{
 				Endpoint: fmt.Sprintf("{%s}", strings.Join(readSupport, ",")),
 				Support:  components.ReadSupport,
diff --git a/providers/zendesksupport/metadata/metadata.go b/providers/zendesksupport/metadata/metadata.go
index 8a815f69..ff818423 100644
--- a/providers/zendesksupport/metadata/metadata.go
+++ b/providers/zendesksupport/metadata/metadata.go
@@ -38,7 +38,7 @@ func (s ZendeskSchemas) LookupPaginationType(
 	moduleID common.ModuleID, objectName string,
 ) string {
 	if len(moduleID) == 0 {
-		moduleID = staticschema.RootModuleID
+		moduleID = common.ModuleRoot
 	}
 
 	ptype := s.Modules[moduleID].Objects[objectName].Custom.Pagination
@@ -54,7 +54,7 @@ func (s ZendeskSchemas) IsIncrementalRead(
 	moduleID common.ModuleID, objectName string,
 ) bool {
 	if len(moduleID) == 0 {
-		moduleID = staticschema.RootModuleID
+		moduleID = common.ModuleRoot
 	}
 
 	return s.Modules[moduleID].Objects[objectName].Custom.Incremental
@@ -116,7 +116,7 @@ func (s ZendeskSchemas) PageSize(
 	moduleID common.ModuleID, objectName string,
 ) string {
 	if len(moduleID) == 0 {
-		moduleID = staticschema.RootModuleID
+		moduleID = common.ModuleRoot
 	}
 
 	// TODO the map should be part of schema.json.
diff --git a/scripts/docs/salesloft/main.go b/scripts/docs/salesloft/main.go
index 466fea54..a9c163b2 100644
--- a/scripts/docs/salesloft/main.go
+++ b/scripts/docs/salesloft/main.go
@@ -3,14 +3,14 @@ package main
 import (
 	"fmt"
 
-	"github.com/amp-labs/connectors/internal/staticschema"
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/providers/salesloft/metadata"
 )
 
 // Prints supported read objects in random order formatted for https://github.com/amp-labs/docs.
 // nolint:forbidigo
 func main() {
-	for objectName, object := range metadata.Schemas.Modules[staticschema.RootModuleID].Objects {
+	for objectName, object := range metadata.Schemas.Modules[common.ModuleRoot].Objects {
 		fmt.Printf("- [%v](%v) (%v)\n", object.DisplayName, *object.DocsURL, objectName)
 	}
 }
diff --git a/scripts/openapi/chilipiper/openapi/main.go b/scripts/openapi/chilipiper/openapi/main.go
index ed8e0184..2ec2fd63 100644
--- a/scripts/openapi/chilipiper/openapi/main.go
+++ b/scripts/openapi/chilipiper/openapi/main.go
@@ -147,7 +147,7 @@ func saveSchemas(properties map[string][]string) {
 
 	goutils.MustBeNil(metadata.FileManager.SaveSchemas(&staticschema.Metadata[staticschema.FieldMetadataMapV1, any]{
 		Modules: map[common.ModuleID]staticschema.Module[staticschema.FieldMetadataMapV1, any]{
-			staticschema.RootModuleID: {
+			common.ModuleRoot: {
 				Objects: objectMetadata,
 			},
 		},
diff --git a/scripts/openapi/dixa/main.go b/scripts/openapi/dixa/main.go
index 80cd2cff..9e7f0719 100644
--- a/scripts/openapi/dixa/main.go
+++ b/scripts/openapi/dixa/main.go
@@ -4,6 +4,7 @@ import (
 	_ "embed"
 	"log/slog"
 
+	"github.com/amp-labs/connectors/common"
 	"github.com/amp-labs/connectors/internal/datautils"
 	"github.com/amp-labs/connectors/internal/goutils"
 	"github.com/amp-labs/connectors/internal/staticschema"
@@ -59,7 +60,7 @@ func main() {
 		}
 
 		for _, field := range object.Fields {
-			schemas.Add(staticschema.RootModuleID, object.ObjectName, object.DisplayName, object.URLPath, object.ResponseKey,
+			schemas.Add(common.ModuleRoot, object.ObjectName, object.DisplayName, object.URLPath, object.ResponseKey,
 				staticschema.FieldMetadataMapV1{
 					field.Name: field.Name,
 				}, nil, object.Custom)
diff --git a/scripts/openapi/marketo/metadata/metadata.go b/scripts/openapi/marketo/metadata/metadata.go
index 57113202..b40aa9d5 100644
--- a/scripts/openapi/marketo/metadata/metadata.go
+++ b/scripts/openapi/marketo/metadata/metadata.go
@@ -43,7 +43,7 @@ func main() {
 
 	goutils.MustBeNil(metadata.FileManager.SaveSchemas(&staticschema.Metadata[staticschema.FieldMetadataMapV1, any]{
 		Modules: map[common.ModuleID]staticschema.Module[staticschema.FieldMetadataMapV1, any]{
-			staticschema.RootModuleID: {
+			common.ModuleRoot: {
 				Objects: objectMetadata,
 			},
 		},
diff --git a/scripts/scraper/capsule/metadata/schemas.go b/scripts/scraper/capsule/metadata/schemas.go
index 56009825..0f017b63 100644
--- a/scripts/scraper/capsule/metadata/schemas.go
+++ b/scripts/scraper/capsule/metadata/schemas.go
@@ -58,7 +58,7 @@ func (s scrappedSchemas) SaveData(model scrapper.ModelDocLink, fieldName, fieldT
 	urlPath := objectNameToURLPath.Get(model.Name)
 
 	s.Metadata.Add(
-		staticschema.RootModuleID, model.Name, modelDisplayName,
+		common.ModuleRoot, model.Name, modelDisplayName,
 		urlPath, responseKey, fields, &model.URL, nil)
 }
 


Test patch:
diff --git a/internal/components/deleter/deleter_test.go b/internal/components/deleter/deleter_test.go
index bd735651..8c6efda7 100644
--- a/internal/components/deleter/deleter_test.go
+++ b/internal/components/deleter/deleter_test.go
@@ -8,7 +8,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/components/mocked"
 	"github.com/amp-labs/connectors/internal/components/operations"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/test/utils/mockutils/mockserver"
 	"github.com/amp-labs/connectors/test/utils/testroutines"
 )
@@ -72,7 +71,7 @@ func constructTestConnector(serverURL string) (*mockedConnector, error) {
 		HTTPDeleter: NewHTTPDeleter(
 			connector.HTTPClient().Client,
 			registry,
-			staticschema.RootModuleID,
+			common.ModuleRoot,
 			operations.DeleteHandlers{},
 		),
 	}, nil
diff --git a/internal/components/reader/reader_test.go b/internal/components/reader/reader_test.go
index acb599d1..f54e6bb4 100644
--- a/internal/components/reader/reader_test.go
+++ b/internal/components/reader/reader_test.go
@@ -8,7 +8,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/components/mocked"
 	"github.com/amp-labs/connectors/internal/components/operations"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/test/utils/mockutils/mockserver"
 	"github.com/amp-labs/connectors/test/utils/testroutines"
 )
@@ -73,7 +72,7 @@ func constructTestConnector(serverURL string) (*mockedConnector, error) {
 		HTTPReader: NewHTTPReader(
 			connector.HTTPClient().Client,
 			registry,
-			staticschema.RootModuleID,
+			common.ModuleRoot,
 			operations.ReadHandlers{},
 		),
 	}, nil
diff --git a/internal/components/schema/openapi_test.go b/internal/components/schema/openapi_test.go
index f5857504..24d13d11 100644
--- a/internal/components/schema/openapi_test.go
+++ b/internal/components/schema/openapi_test.go
@@ -76,7 +76,7 @@ func constructTestConnector(serverURL string) *mockedConnector {
 	}
 
 	metadata := staticschema.NewMetadata[staticschema.FieldMetadataMapV2]()
-	metadata.Add(staticschema.RootModuleID, "orders", "Orders", "/user/orders", "result",
+	metadata.Add(common.ModuleRoot, "orders", "Orders", "/user/orders", "result",
 		map[string]staticschema.FieldMetadata{
 			"id": {
 				DisplayName:  "Identifier",
@@ -88,7 +88,7 @@ func constructTestConnector(serverURL string) *mockedConnector {
 	return &mockedConnector{
 		Connector: connector,
 		SchemaProvider: NewOpenAPISchemaProvider(
-			staticschema.RootModuleID,
+			common.ModuleRoot,
 			metadata,
 		),
 	}
diff --git a/internal/components/writer/writer_test.go b/internal/components/writer/writer_test.go
index c7de0e5f..e3c14c77 100644
--- a/internal/components/writer/writer_test.go
+++ b/internal/components/writer/writer_test.go
@@ -8,7 +8,6 @@ import (
 	"github.com/amp-labs/connectors/internal/components"
 	"github.com/amp-labs/connectors/internal/components/mocked"
 	"github.com/amp-labs/connectors/internal/components/operations"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/test/utils/mockutils/mockserver"
 	"github.com/amp-labs/connectors/test/utils/testroutines"
 )
@@ -72,7 +71,7 @@ func constructTestConnector(serverURL string) (*mockedConnector, error) {
 		HTTPWriter: NewHTTPWriter(
 			connector.HTTPClient().Client,
 			registry,
-			staticschema.RootModuleID,
+			common.ModuleRoot,
 			operations.WriteHandlers{},
 		),
 	}, nil
diff --git a/providers/capsule/metadata_test.go b/providers/capsule/metadata_test.go
index da1f2f08..079d0ba1 100644
--- a/providers/capsule/metadata_test.go
+++ b/providers/capsule/metadata_test.go
@@ -6,7 +6,6 @@ import (
 
 	"github.com/amp-labs/connectors"
 	"github.com/amp-labs/connectors/common"
-	"github.com/amp-labs/connectors/internal/staticschema"
 	"github.com/amp-labs/connectors/test/utils/mockutils/mockserver"
 	"github.com/amp-labs/connectors/test/utils/testroutines"
 )
@@ -82,7 +81,7 @@ func TestListObjectMetadata(t *testing.T) { // nolint:funlen,gocognit,cyclop
 
 func constructTestConnector(serverURL string) (*Connector, error) {
 	connector, err := NewConnector(common.Parameters{
-		Module:              staticschema.RootModuleID,
+		Module:              common.ModuleRoot,
 		AuthenticatedClient: http.DefaultClient,
 	})
 	if err != nil {