{"record":{"id":"91dbb5baa4bb382f","repo":"multica-ai/multica","slug":"delete-metadata-w","errorCode":null,"errorMessage":"delete metadata: %w","messagePattern":"delete metadata: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/cmd/multica/cmd_issue_metadata.go","lineNumber":314,"sourceCode":"\tif key == \"\" {\n\t\treturn fmt.Errorf(\"--key is required\")\n\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\tpath := \"/api/issues/\" + issueRef.ID + \"/metadata/\" + key\n\tif err := client.DeleteJSON(ctx, path); err != nil {\n\t\treturn fmt.Errorf(\"delete metadata: %w\", err)\n\t}\n\n\t// Refresh the metadata so the user sees the result.\n\tvar result map[string]any\n\toutput, _ := cmd.Flags().GetString(\"output\")\n\tif err := client.GetJSON(ctx, \"/api/issues/\"+issueRef.ID+\"/metadata\", &result); err != nil {\n\t\tif output == \"json\" {\n\t\t\treturn cli.PrintJSON(os.Stdout, map[string]any{\"deleted\": true})\n\t\t}\n\t\tfmt.Fprintln(os.Stdout, \"Key deleted.\")\n\t\treturn nil\n\t}\n\tmetadata, _ := result[\"metadata\"].(map[string]any)\n\tif output == \"json\" {\n\t\treturn cli.PrintJSON(os.Stdout, metadata)\n\t}\n\tprintMetadataTable(metadata)\n\treturn nil","sourceCodeStart":296,"sourceCodeEnd":332,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/cmd/multica/cmd_issue_metadata.go#L296-L332","documentation":"Wraps a failed HTTP DELETE to /api/issues/{issueID}/metadata/{key} during `multica issue metadata delete`. Note the command then attempts a follow-up GET to refresh the metadata, but that refresh failing is tolerated — only the DELETE itself produces this error.","triggerScenarios":"DELETE returns 404 (key doesn't exist on that issue), 401/403 (expired token, no permission), or a 5xx/server error; network failure mid-request.","commonSituations":"Trying to delete a metadata key that was already removed (scripts are not idempotent); double-running a cleanup script; token expiry mid-session.","solutions":["List current keys first with `multica issue metadata get ISSUE` and delete only existing ones","Make scripts tolerate 404 when the key is already gone (idempotent delete)","Re-login on 401; retry on transient network errors"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"# optionally confirm the key exists first\nmultica issue metadata get \"$ISSUE\" --output json | jq -e --arg k \"$META_KEY\" '.[$k]' >/dev/null \\\n  || { echo \"key $META_KEY not present\" >&2; exit 0; }","typeGuard":null,"tryCatchPattern":"if err := client.DeleteJSON(ctx, path); err != nil {\n\tif isNotFound(err) { /* already deleted: treat as success in scripts */ }\n\treturn fmt.Errorf(\"delete metadata: %w\", err)\n}","preventionTips":["Treat 404 on delete as idempotent success","Check `metadata get` output before deleting","Re-login on 401 rather than retrying blindly"],"tags":["cli","http","metadata"],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}