{"record":{"id":"cf1b515e072ce7c8","repo":"grpc-ecosystem/grpc-gateway","slug":"unknown-repeated-path-parameter-separator-s","errorCode":null,"errorMessage":"unknown repeated path parameter separator: %s","messagePattern":"unknown repeated path parameter separator: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/descriptor/registry.go","lineNumber":581,"sourceCode":"func (r *Registry) GetRepeatedPathParamSeparatorName() string {\n\treturn r.repeatedPathParamSeparator.name\n}\n\n// SetRepeatedPathParamSeparator sets how path parameter repeated fields are\n// separated. Allowed names are 'csv', 'pipe', 'ssv' and 'tsv'.\nfunc (r *Registry) SetRepeatedPathParamSeparator(name string) error {\n\tvar sep rune\n\tswitch name {\n\tcase \"csv\":\n\t\tsep = ','\n\tcase \"pipes\":\n\t\tsep = '|'\n\tcase \"ssv\":\n\t\tsep = ' '\n\tcase \"tsv\":\n\t\tsep = '\\t'\n\tdefault:\n\t\treturn fmt.Errorf(\"unknown repeated path parameter separator: %s\", name)\n\t}\n\tr.repeatedPathParamSeparator = repeatedFieldSeparator{\n\t\tname: name,\n\t\tsep:  sep,\n\t}\n\treturn nil\n}\n\n// SetUseJSONNamesForFields sets useJSONNamesForFields\nfunc (r *Registry) SetUseJSONNamesForFields(use bool) {\n\tr.useJSONNamesForFields = use\n}\n\n// GetUseJSONNamesForFields returns useJSONNamesForFields\nfunc (r *Registry) GetUseJSONNamesForFields() bool {\n\treturn r.useJSONNamesForFields\n}\n","sourceCodeStart":563,"sourceCodeEnd":599,"githubUrl":"https://github.com/grpc-ecosystem/grpc-gateway/blob/a58a4436a376a4bcc7d8f10c4d4f919a8438bba9/internal/descriptor/registry.go#L563-L599","documentation":"SetRepeatedPathParamSeparator configures how repeated path parameters are serialized in URL templates. Only 'csv', 'pipes', 'ssv', and 'tsv' are accepted; any other name returns this error because the separator character is unknown.","triggerScenarios":"Calling Registry.SetRepeatedPathParamSeparator(name) with a name outside the allowed set; via applyFlags when a CLI flag supplies a misspelled or unsupported separator name.","commonSituations":"Typo in generator flag (e.g. 'pipe' instead of 'pipes', 'comma' instead of 'csv'); copying flags from another tool that uses different separator vocabulary; uppercase input that is not normalized.","solutions":["Use one of the supported names: 'csv', 'pipes', 'ssv', or 'tsv'","Fix the spelling of the flag value in your generation script/Makefile","Check tooling docs for the exact accepted strings and their case"],"exampleFix":"// before\nreg.SetRepeatedPathParamSeparator(\"pipe\")\n// after\nreg.SetRepeatedPathParamSeparator(\"pipes\")","handlingStrategy":"validation","validationCode":"var validSeparators = map[string]bool{\"csv\": true, \"pipes\": true, \"ssv\": true, \"tsv\": true}\nif !validSeparators[name] {\n    return fmt.Errorf(\"separator must be one of csv|pipes|ssv|tsv, got %q\", name)\n}\nerr := reg.SetRepeatedPathParamSeparator(name)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Centralize the separator string in one constant rather than scattering flag literals","Validate CLI flag values against an allowlist before calling the API","Add a unit test covering each accepted separator name"],"tags":["configuration","codegen","validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"a58a4436a376a4bcc7d8f10c4d4f919a8438bba9","analyzedAt":"2026-09-02T10:28:31.537Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T16:17:10.729Z"}