hasura/graphql-engine · error · NDCValidationError
Field {field_name} for type {type_name} referenced in model
Error message
Field {field_name} for type {type_name} referenced in model {model_name} is not defined What it means
A model references a field of a custom object type that the type definition itself does not declare. Validation ensures each field referenced through a mapped type exists in that type's field set.
Source
Thrown at v3/crates/metadata-resolve/src/helpers/ndc_validation.rs:107
)]
TypeCapabilityNotDefined {
model_name: ModelName,
field_name: FieldName,
r#type: String,
},
#[error("type {0} is not defined in the agent schema")]
NoSuchType(String),
#[error("mapping for type {type_name} of model {model_name} is not defined")]
UnknownModelTypeMapping {
model_name: Qualified<ModelName>,
type_name: Qualified<CustomTypeName>,
},
#[error("mapping for type {type_name} of command {command_name} is not defined")]
UnknownCommandTypeMapping {
command_name: Qualified<CommandName>,
type_name: Qualified<CustomTypeName>,
},
#[error(
"Field {field_name} for type {type_name} referenced in model {model_name} is not defined"
)]
UnknownTypeField {
model_name: ModelName,
type_name: CustomTypeName,
field_name: FieldName,
},
#[error(
"Result type of function/procedure {function_or_procedure_name:} is {function_or_procedure_output_type:} but output type of command {command_name:} is {command_output_type:}"
)]
FuncProcAndCommandScalarOutputTypeMismatch {
function_or_procedure_name: String,
function_or_procedure_output_type: String,
command_name: String,
command_output_type: String,
},
#[error(
"Custom result type of function {function_or_procedure_name:} does not match custom output type of command: {command_name:}"View on GitHub (pinned to 724551b9ae)
Solutions
- Declare the missing field on the ObjectType definition for that type
- Correct the field name in the model's mapping to match a declared field
- Regenerate/refresh metadata if types are generated from another source
Example fix
# before # model maps field 'surname' but ObjectType User only has 'lastName' # after # rename mapping to 'lastName' or add field 'surname' to ObjectType User
Defensive patterns
Strategy: type-guard
Type guard
fn field_on_type(field: &FieldName, t: &ObjectTypeDefinition) -> bool { t.fields.contains(field) } Prevention
- Keep field names in mappings synced with ObjectType definitions; codegen when possible
When it happens
Trigger: Mapping a model field to type T.fieldX where T's ObjectType definition has no fieldX; adding a field to a model's type mapping without declaring it on the ObjectType.
Common situations: Renaming a field on an ObjectType but not in model mappings; adding mapped fields before declaring them; divergent copies of type definitions.
Related errors
- failed to get version from server: %w
- column {column_name} has type {column_type} in collection {c
- mapping for type {type_name} of model {model_name} is not de
- Argument '{argument_name:}' used in argument mapping for the
- Field {field_name:} not found in object type {object_type:}
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/8af22177ced177ce.
Report an issue: GitHub.