{"record":{"id":"746a18359004aa3c","repo":"grpc-ecosystem/grpc-gateway","slug":"invalid-field-access-list-for-s","errorCode":null,"errorMessage":"invalid field access list for %s","messagePattern":"invalid field access list for (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/descriptor/services.go","lineNumber":256,"sourceCode":"\t//   * body should contain the serialized request message\n\trule := &options.HttpRule{\n\t\tPattern: &options.HttpRule_Post{\n\t\t\tPost: fmt.Sprintf(\"/%s/%s\", fqsn, md.GetName()),\n\t\t},\n\t\tBody: \"*\",\n\t}\n\treturn rule, nil\n}\n\nfunc (r *Registry) newParam(meth *Method, path string) (Parameter, error) {\n\tmsg := meth.RequestType\n\tfields, err := r.resolveFieldPath(msg, path, true)\n\tif err != nil {\n\t\treturn Parameter{}, err\n\t}\n\tl := len(fields)\n\tif l == 0 {\n\t\treturn Parameter{}, fmt.Errorf(\"invalid field access list for %s\", path)\n\t}\n\ttarget := fields[l-1].Target\n\tswitch target.GetType() {\n\tcase descriptorpb.FieldDescriptorProto_TYPE_MESSAGE, descriptorpb.FieldDescriptorProto_TYPE_GROUP:\n\t\tif grpclog.V(2) {\n\t\t\tgrpclog.Infoln(\"found aggregate type:\", target, target.TypeName)\n\t\t}\n\t\tif IsWellKnownType(*target.TypeName) {\n\t\t\tif grpclog.V(2) {\n\t\t\t\tgrpclog.Infoln(\"found well known aggregate type:\", target)\n\t\t\t}\n\t\t} else {\n\t\t\treturn Parameter{}, fmt.Errorf(\"%s.%s: %s is a protobuf message type. Protobuf message types cannot be used as path parameters, use a scalar value type (such as string) instead\", meth.Service.GetName(), meth.GetName(), path)\n\t\t}\n\t}\n\treturn Parameter{\n\t\tFieldPath: FieldPath(fields),\n\t\tMethod:    meth,","sourceCodeStart":238,"sourceCodeEnd":274,"githubUrl":"https://github.com/grpc-ecosystem/grpc-gateway/blob/a58a4436a376a4bcc7d8f10c4d4f919a8438bba9/internal/descriptor/services.go#L238-L274","documentation":"Validation error from Registry.newParam: the field path string resolved to zero FieldPathComponents (resolveFieldPath returns nil for an empty path), so there is no field to build a Parameter from. The faulting input is an empty path expression supplied where a non-empty dotted field path (e.g. 'body.id') is required.","triggerScenarios":"Thrown at internal/descriptor/services.go:256 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty field path for the path parameter or body field in the HttpRule.","Fix templates/annotations where a variable name resolves to an empty string."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a58a4436a376a4bcc7d8f10c4d4f919a8438bba9","analyzedAt":"2026-09-02T10:28:31.537Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T16:17:10.729Z"}