{"record":{"id":"baa583fce3005eff","repo":"siyuan-note/siyuan","slug":"field-packagenames-each-element-should-be-of-type-string","errorCode":null,"errorMessage":"Field [packageNames]: each element should be of type [String]","messagePattern":"Field \\[packageNames\\]: each element should be of type \\[String\\]","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kernel/apicontract/bazaar.go","lineNumber":557,"sourceCode":"\t\treturn request, nil\n\t}\n\tGetBazaarPackageRatings.decodeRequest = func(reader io.Reader) (request GetBazaarPackageRatingsRequest, err error) {\n\t\tfields, err := bazaarRequestFields(reader, \"/api/bazaar/getBazaarPackageRatings\")\n\t\tif err != nil {\n\t\t\treturn request, err\n\t\t}\n\t\tif request.PackageType, err = bazaarString(fields, \"packageType\", true, true); err != nil {\n\t\t\treturn request, err\n\t\t}\n\t\titems, parseErr := legacyField[[]json.RawMessage](fields, \"packageNames\", \"Array\", true)\n\t\tif parseErr != nil {\n\t\t\treturn request, parseErr\n\t\t}\n\t\trequest.PackageNames = make([]string, 0, len(items))\n\t\tfor _, item := range items {\n\t\t\tvar value string\n\t\t\tif string(item) == \"null\" || json.Unmarshal(item, &value) != nil {\n\t\t\t\trequest.NamesError = errors.New(\"Field [packageNames]: each element should be of type [String]\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\trequest.PackageNames = append(request.PackageNames, value)\n\t\t}\n\t\treturn request, nil\n\t}\n\tGetBazaarPackageUserRatings.decodeRequest = func(reader io.Reader) (request GetBazaarPackageUserRatingsRequest, err error) {\n\t\tfields, err := bazaarRequestFields(reader, \"/api/bazaar/getBazaarPackageUserRatings\")\n\t\tif err != nil {\n\t\t\treturn request, err\n\t\t}\n\t\tif request.PackageType, err = bazaarString(fields, \"packageType\", true, true); err != nil {\n\t\t\treturn request, err\n\t\t}\n\t\titems, parseErr := legacyField[[]json.RawMessage](fields, \"packageNames\", \"Array\", true)\n\t\tif parseErr != nil {\n\t\t\treturn request, parseErr\n\t\t}","sourceCodeStart":539,"sourceCodeEnd":575,"githubUrl":"https://github.com/siyuan-note/siyuan/blob/9f775e8a12daef8255556097396f9b2739078892/kernel/apicontract/bazaar.go#L539-L575","documentation":"Contract-decoder error for the getBazaarPackageRatings API: an element of the packageNames array is not a JSON string, so the ratings request payload is malformed and rejected while decoding the legacy request body.","triggerScenarios":"Thrown at kernel/apicontract/bazaar.go:557 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Send packageNames as an array of strings only","Remove null or non-string elements from the array","Check the client is using the documented request schema"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9f775e8a12daef8255556097396f9b2739078892","analyzedAt":"2026-09-19T03:17:15.984Z","contentChangedAt":"2026-09-19T03:17:15.984Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}