{"record":{"id":"52bf93c6258f397e","repo":"multica-ai/multica","slug":"set-metadata-w","errorCode":null,"errorMessage":"set metadata: %w","messagePattern":"set metadata: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/cmd/multica/cmd_issue_metadata.go","lineNumber":282,"sourceCode":"\t}\n\n\tclient, err := newAPIClient(cmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\tctx, cancel := cli.APIContext(context.Background())\n\tdefer cancel()\n\n\tissueRef, err := resolveIssueRef(ctx, client, args[0])\n\tif err != nil {\n\t\treturn fmt.Errorf(\"resolve issue: %w\", err)\n\t}\n\n\tbody := map[string]any{\"value\": value}\n\tvar result map[string]any\n\tpath := \"/api/issues/\" + issueRef.ID + \"/metadata/\" + key\n\tif err := client.PutJSON(ctx, path, body, &result); err != nil {\n\t\treturn fmt.Errorf(\"set metadata: %w\", err)\n\t}\n\tmetadata, _ := result[\"metadata\"].(map[string]any)\n\n\toutput, _ := cmd.Flags().GetString(\"output\")\n\tif output == \"json\" {\n\t\treturn cli.PrintJSON(os.Stdout, metadata)\n\t}\n\tprintMetadataTable(metadata)\n\treturn nil\n}\n\nfunc runIssueMetadataDelete(cmd *cobra.Command, args []string) error {\n\tkey, _ := cmd.Flags().GetString(\"key\")\n\tif key == \"\" {\n\t\treturn fmt.Errorf(\"--key is required\")\n\t}\n\n\tclient, err := newAPIClient(cmd)","sourceCodeStart":264,"sourceCodeEnd":300,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/cmd/multica/cmd_issue_metadata.go#L264-L300","documentation":"Wraps a failed HTTP PUT to /api/issues/{issueID}/metadata/{key} during `multica issue metadata set`. The inner error comes from the CLI's PutJSON helper and reflects the server's response: auth failure, validation of the typed value, workspace mismatch, or connectivity problems.","triggerScenarios":"PUT returns 4xx/5xx — e.g. invalid value for the declared --type (parseMetadataValue passed locally but server rejects), metadata key collisions with type conflicts, expired token (401), no permission on the issue (403), or the issue having been deleted between resolve and PUT.","commonSituations":"Setting a metadata key that already exists with a different type; stale auth credentials; server-side schema constraints on metadata; network interruptions mid-request.","solutions":["Inspect the wrapped error text — it includes the server's HTTP status and message","If type-conflicted, clear the old entry (`multica issue metadata delete ISSUE --key k`) then set again with the correct --type","Re-authenticate with `multica login` if the error is a 401","Retry after transient network failures; re-resolve the issue if it may have been deleted"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"if err := client.PutJSON(ctx, path, body, &result); err != nil {\n\tstatus := cli.HTTPStatus(err) // extract wrapped status if available\n\tif status == 401 { /* re-auth then retry once */ }\n\tif isTransient(err) { /* backoff and retry once */ }\n\treturn fmt.Errorf(\"set metadata: %w\", err)\n}","preventionTips":["Keep --type consistent for a given key across writes","Re-login before long batch runs to avoid mid-run 401s","On type conflicts, delete the key first then re-set"],"tags":["cli","http","metadata"],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}