hashicorp/terraform · error
resource schema not found for type
Error message
resource schema not found for type %q
What it means
tfplugin6 equivalent of error 960. Returned by the provider6 ListResource handler when the requested resource type is not in p.schema.ResourceTypes. Terraform core asked to list a type the provider never registered, so the wrapper has no schema to work against.
Solutions
- Run `terraform providers schema -json` and confirm the type is advertised.
- Correct the resource type spelling in configuration.
- Upgrade or pin the provider to a version that registers the resource.
- If developing a built-in provider, add the type to schema.ResourceTypes.
Example fix
// before
providerSchema.ResourceTypes = map[string]*config.Block{}
// after
providerSchema.ResourceTypes["aws_example_thing"] = exampleResourceSchema Defensive patterns
Strategy: validation
Validate before calling
// tfplugin6 path: confirm the type is registered before listing.
schemas, err := client.GetProviderSchema(ctx, &tfplugin6.GetProviderSchema_Request{})
if err != nil {
return err
}
if _, ok := schemas.ResourceTypes[typeName]; !ok {
return fmt.Errorf("will not call ListResource: type %q not registered by provider", typeName)
}
return client.ListResource(ctx, typeName, config) Type guard
func resourceTypeRegistered6(s *tfplugin6.GetProviderSchema_Response, typeName string) bool {
_, ok := s.ResourceTypes[typeName]
return ok
} Prevention
- Reconcile expected types against GetProviderSchema before ListResource.
- Pin provider versions and assert the type exists in CI.
When it happens
Trigger: A tfplugin6 ListResource RPC whose req.TypeName is absent from p.schema.ResourceTypes.
Common situations: Provider version lacking the resource; type name typo; core/provider schema skew; built-in provider that forgot to register the type.
Related errors
- list resource schema not found for type
- resource schema not found for type
- identity schema not found for type
- list resource schema not found for type
- resource identity schema not found for type
AI-assisted analysis of hashicorp/terraform@d32a084675 (2026-08-11).
Data as JSON: /api/errors/ef3ff2bb814ddfef.
Report an issue: GitHub.
Appendix: source
Thrown at internal/grpcwrap/provider6.go:851
return resp, nil
}
dv, err := encodeDynamicValue6(upgradeResp.UpgradedIdentity, ty)
if err != nil {
resp.Diagnostics = convert.AppendProtoDiag(resp.Diagnostics, err)
return resp, nil
}
resp.UpgradedIdentity = &tfplugin6.ResourceIdentityData{
IdentityData: dv,
}
return resp, nil
}
func (p *provider6) ListResource(req *tfplugin6.ListResource_Request, res tfplugin6.Provider_ListResourceServer) error {
resourceSchema, ok := p.schema.ResourceTypes[req.TypeName]
if !ok {
return fmt.Errorf("resource schema not found for type %q", req.TypeName)
}
listSchema, ok := p.schema.ListResourceTypes[req.TypeName]
if !ok {
return fmt.Errorf("list resource schema not found for type %q", req.TypeName)
}
cfg, err := decodeDynamicValue6(req.Config, listSchema.Body.ImpliedType())
if err != nil {
return status.Errorf(codes.InvalidArgument, "failed to decode config: %v", err)
}
resp := p.provider.ListResource(providers.ListResourceRequest{
TypeName: req.TypeName,
Config: cfg,
Limit: req.Limit,
IncludeResourceObject: req.IncludeResourceObject,
})
if resp.Diagnostics.HasErrors() {
return resp.Diagnostics.Err()
}View on GitHub (pinned to d32a084675)