{"record":{"id":"e1900086d5d58802","repo":"hasura/graphql-engine","slug":"ndc-validation-error-0","errorCode":null,"errorMessage":"ndc validation error: {0}","messagePattern":"ndc validation error: (.+?)","errorType":"validation","errorClass":"ArgumentMappingError","httpStatus":null,"severity":"error","filePath":"v3/crates/metadata-resolve/src/helpers/argument.rs","lineNumber":73,"sourceCode":"    ArgumentAlreadyPresetInDataConnectorLink {\n        argument_name: ArgumentName,\n        ndc_argument_name: DataConnectorArgumentName,\n    },\n    #[error(\"{argument_name:} has the data type {data_type:} that has not been defined\")]\n    UnknownType {\n        argument_name: ArgumentName,\n        data_type: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"the type {unknown_ndc_type:} is not defined as an object type in the connector's schema. This type is being mapped to by the type {type_name:} used in argument {argument_name:} which is mapped to the data connector argument {ndc_argument_name:}\"\n    )]\n    UnknownNdcType {\n        argument_name: ArgumentName,\n        ndc_argument_name: DataConnectorArgumentName,\n        type_name: Qualified<CustomTypeName>,\n        unknown_ndc_type: String,\n    },\n    #[error(\"ndc validation error: {0}\")]\n    NDCValidationError(NDCValidationError),\n}\n\n#[derive(Debug, thiserror::Error)]\npub enum ArgumentMappingIssue {\n    #[error(\n        \"the following data connector arguments are not mapped to an argument: {}\",\n        ndc_argument_names.join(\", \")\n    )]\n    UnmappedNdcArguments {\n        ndc_argument_names: Vec<DataConnectorArgumentName>,\n    },\n    #[error(\n        \"the type of argument '{argument_name:}' is not compatible with the type of the data connector argument '{ndc_argument_name:}': {issue:}\"\n    )]\n    IncompatibleType {\n        argument_name: ArgumentName,\n        ndc_argument_name: DataConnectorArgumentName,","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/helpers/argument.rs#L55-L91","documentation":"A wrapper (thiserror tuple variant) around NDCValidationError produced while validating command/field argument types against the data connector's schema. The Display text is 'ndc validation error: {0}', delegating the detail to the inner NDCValidationError such as NoSuchCollection, NoSuchArgument, NoSuchColumn, or NoSuchProcedure from helpers/ndc_validation.rs. It signals that metadata references an entity the connector's schema does not actually define.","triggerScenarios":"Calling the argument resolution/validation path (metadata resolve, CLI build/validate, or startup) where a command or field mapped to a data connector references a collection, argument, column, or procedure absent from the connector's schema response.","commonSituations":"Connector schema drifted from metadata (renamed table/procedure/column); pointing metadata at a different database or connector instance; stale cached schema; connector bug returning incomplete schema.","solutions":["Read the inner NDCValidationError message to identify the exact missing collection/argument/column/procedure","Compare your metadata mappings against the connector's live schema (/schema endpoint)","Update the metadata to reference the existing names, or fix the underlying database/connector so the entity exists","Refresh any cached schema and re-validate"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Validate entities against connector schema up front\nlet schema = connector.get_schema().await?;\nassert!(schema.collections.iter().any(|c| c.name == collection_name));\nassert!(schema.procedures.iter().any(|p| p.name == procedure_name));","typeGuard":null,"tryCatchPattern":"match result {\n    Err(Error::ArgumentError(e @ ArgumentError::NDCValidationError(_))) => {\n        // inspect nested variant for precise messaging / retry after schema refresh\n    }\n    other => other,\n}","preventionTips":["Treat connector schema as a contract: validate metadata against it in CI","Refresh schema caches after any DDL change","Log the inner NDCValidationError variant, not just the wrapper"],"tags":["ndc","validation","wrapper","data-connectors"],"backgroundTag":"schema-validation-failed","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}