{"record":{"id":"b98018ad445350f7","repo":"siyuan-note/siyuan","slug":"api-av-batchsetattributeviewblockattrs-paramete","errorCode":null,"errorMessage":"[/api/av/batchSetAttributeViewBlockAttrs] parameter [rowID] is deprecated, visit [https://github.com/siyuan-note/siyuan/issues/15727] for details","messagePattern":"\\[/api/av/batchSetAttributeViewBlockAttrs\\] parameter \\[rowID\\] is deprecated, visit \\[https://github\\.com/siyuan-note/siyuan/issues/15727\\] for details","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kernel/model/attribute_view.go","lineNumber":7996,"sourceCode":"\tattrView, err := av.ParseAttributeView(avID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar cells []*AttrViewCellUpdate\n\tfor _, value := range values {\n\t\tv := value.(map[string]any)\n\t\tkeyID := v[\"keyID\"].(string)\n\t\tvar itemID string\n\t\tif _, ok := v[\"itemID\"]; ok {\n\t\t\titemID = v[\"itemID\"].(string)\n\t\t} else if _, ok := v[\"rowID\"]; ok {\n\t\t\t// TODO 该参数将于 2026 年 12 月 1 日后删除\n\t\t\titemID = v[\"rowID\"].(string)\n\t\t\tmsg := fmt.Sprintf(\"[%s] parameter [%s] is deprecated, visit [https://github.com/siyuan-note/siyuan/issues/15727] for details\",\n\t\t\t\t\"/api/av/batchSetAttributeViewBlockAttrs\", \"rowID\")\n\t\t\tlogging.LogWarn(msg)\n\t\t\terr = errors.New(msg)\n\t\t\treturn\n\t\t}\n\t\tcells = append(cells, &AttrViewCellUpdate{KeyID: keyID, RowID: itemID, Data: v[\"value\"]})\n\t}\n\tif err = preflightAttributeViewCellBindings(tx, attrView, cells); err != nil {\n\t\treturn\n\t}\n\tfor _, cell := range cells {\n\t\t_, err = updateAttributeViewValue(tx, attrView, cell.KeyID, cell.RowID, cell.Data, false)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tregenAttrViewGroups(attrView)\n\tif err = av.SaveAttributeView(attrView); err != nil {\n\t\treturn\n\t}\n\trefreshRelatedSrcAvs(avID, tx)","sourceCodeStart":7978,"sourceCodeEnd":8014,"githubUrl":"https://github.com/siyuan-note/siyuan/blob/9f775e8a12daef8255556097396f9b2739078892/kernel/model/attribute_view.go#L7978-L8014","documentation":"The batchSetAttributeViewBlockAttrs API no longer accepts the legacy 'rowID' key inside cell objects; callers must use the new row identifier key. Passing 'rowID' logs a warning and returns this error pointing to GitHub issue 15727. The parameter is scheduled for removal after 2026-12-01.","triggerScenarios":"Calling POST /api/av/batchSetAttributeViewBlockAttrs with cell objects that contain a 'rowID' field instead of the replacement identifier; older plugin or script payloads written against the deprecated API shape.","commonSituations":"Plugins not updated after the API rename; copy-pasted old example code; third-party integrations built before the deprecation; gradual migration where some payloads still use the old key.","solutions":["Rename the 'rowID' field in each cell object to the current row identifier key expected by the API (see issue 15727)","Update plugin code to the new batchSetAttributeViewBlockAttrs payload schema","Regenerate or update client bindings from the latest API docs","Migrate before 2026-12-01 when the parameter is deleted outright"],"exampleFix":"// before\n{\"keyID\": \"k1\", \"rowID\": \"r1\", \"value\": {...}}\n// after\n{\"keyID\": \"k1\", \"rowID\" -> replaced per issue 15727, e.g. {\"keyID\": \"k1\", \"id\": \"r1\", \"value\": {...}}}","handlingStrategy":"validation","validationCode":"for (const cell of payload) {\n  if (\"rowID\" in cell) throw new Error(\"rowID is deprecated; migrate per https://github.com/siyuan-note/siyuan/issues/15727\");\n}","typeGuard":null,"tryCatchPattern":"try { await batchSetBlockAttrs(payload); } catch (e) { if (String(e).includes(\"rowID\\\"] is deprecated\")) { migratePayloadToNewSchema(); retry(); } else { throw e; } }","preventionTips":["Update plugins to the current batchSetAttributeViewBlockAttrs schema before 2026-12-01","Search codebases for \"rowID\" usages against this endpoint and rename them","Track issue 15727 for the canonical migration path"],"tags":["api","deprecated","attribute-view"],"backgroundTag":"deprecated-api-usage","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"}