grpc-ecosystem/grpc-gateway · error
additional_binding in additional_binding not allowed: %s.%s
Error message
additional_binding in additional_binding not allowed: %s.%s
What it means
Config-validation error in loadServices' applyOpts: an HttpRule's AdditionalBindings list contains an entry that itself has AdditionalBindings. google.api.HttpRule permits only one level of additional bindings; nesting deeper is invalid, so processing of the method aborts.
Source
Thrown at internal/descriptor/services.go:193
if err != nil {
return nil, err
}
return b, nil
}
applyOpts := func(opts *options.HttpRule) error {
b, err := newBinding(opts, len(meth.Bindings))
if err != nil {
return err
}
if b != nil {
meth.Bindings = append(meth.Bindings, b)
}
for _, additional := range opts.GetAdditionalBindings() {
if len(additional.AdditionalBindings) > 0 {
return fmt.Errorf("additional_binding in additional_binding not allowed: %s.%s", svc.GetName(), meth.GetName())
}
b, err := newBinding(additional, len(meth.Bindings))
if err != nil {
return err
}
meth.Bindings = append(meth.Bindings, b)
}
return nil
}
for _, opts := range optsList {
if err := applyOpts(opts); err != nil {
return nil, err
}
}
return meth, nilView on GitHub (pinned to a58a4436a3)
Solutions
- Flatten the bindings: list each additional binding at the top level of the HttpRule's additional_bindings instead of nesting.
- Remove the nested additional_bindings field from the annotation.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/descriptor/services.go:193 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grpc-ecosystem/grpc-gateway@a58a4436a3 (2026-09-02).
Data as JSON: /api/errors/3a23af68ff8542c8.
Report an issue: GitHub.