hasura/graphql-engine · error · ApolloError
empty fields in apollo federation keys defined for the objec
Error message
empty fields in apollo federation keys defined for the object type {object_type:} What it means
This error comes from the Apollo Federation metadata resolution stage. An object type was configured with apolloFederation.keys entries where at least one key lists an empty set of fields (e.g. keys: [[''] ], an empty array item, or a key with no field names). Federation entity keys must name at least one field, so the resolver rejects the configuration.
Source
Thrown at v3/crates/metadata-resolve/src/stages/apollo/mod.rs:33
apollo_federation_entity_enabled_types: BTreeMap<
Qualified<CustomTypeName>,
Option<Qualified<open_dds::models::ModelName>>,
>,
) -> Result<(), ApolloError> {
// To check if apollo federation entity keys are defined in object type but no model has
// apollo_federation_entity_source set to true:
// - Throw an error if no model with apolloFederation.entitySource:true is found for the object type.
for (object_type, model_name_list) in apollo_federation_entity_enabled_types {
if model_name_list.is_none() {
return Err(ApolloError::ApolloFederationEntitySourceNotDefined { object_type });
}
}
Ok(())
}
#[derive(Debug, thiserror::Error)]
pub enum ApolloError {
#[error("empty fields in apollo federation keys defined for the object type {object_type:}")]
EmptyFieldsInApolloFederationConfigForObject {
object_type: Qualified<CustomTypeName>,
},
#[error(
"unknown field {field_name:} in apollo federation keys defined for the object type {object_type:}"
)]
UnknownFieldInApolloFederationKey {
field_name: FieldName,
object_type: Qualified<CustomTypeName>,
},
#[error(
"empty keys in apollo federation configuration defined for the object type {object_type:}"
)]
EmptyKeysInApolloFederationConfigForObject {
object_type: Qualified<CustomTypeName>,
},
#[error(View on GitHub (pinned to 724551b9ae)
Solutions
- Find the apolloFederation.keys entry for the named object type and remove empty entries (empty strings or empty field arrays).
- Populate each key with at least one real field name that exists on the object type.
- If the key was a leftover placeholder, delete the whole keys entry or the apolloFederation block for that type.
Example fix
# before
object_type:
apolloFederation:
keys:
- [] # empty key
# after
object_type:
apolloFederation:
keys:
- [id] # at least one field Defensive patterns
Strategy: validation
Validate before calling
fn keys_valid(keys: &[Vec<String>]) -> bool {
keys.iter().all(|k| !k.is_empty() && k.iter().all(|f| !f.trim().is_empty()))
} Prevention
- Never emit empty key arrays when generating federation metadata programmatically.
- Validate apolloFederation blocks in CI before applying metadata.
When it happens
Trigger: Adding apolloFederation configuration to a type in metadata where a keys entry contains an empty field list (empty string fields or an empty inner array of field names).
Common situations: Hand-editing YAML metadata and leaving a placeholder empty key; programmatic metadata generation that emits empty arrays for missing key fields; YAML parsing quirks where 'keys: - ""' produces an empty field.
Related errors
- unknown field {field_name:} in apollo federation keys define
- empty keys in apollo federation configuration defined for th
- Model {model_name:} is marked as an Apollo Federation entity
- the return type used on the {count_type} aggregate ({return_
- the return type used on the {count_type} aggregate ({return_
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/8367eb58df62fedb.
Report an issue: GitHub.