multica-ai/multica · error

delete metadata: %w

Error message

delete metadata: %w

What it means

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.

Source

Thrown at server/cmd/multica/cmd_issue_metadata.go:314

	if key == "" {
		return fmt.Errorf("--key is required")
	}

	client, err := newAPIClient(cmd)
	if err != nil {
		return err
	}
	ctx, cancel := cli.APIContext(context.Background())
	defer cancel()

	issueRef, err := resolveIssueRef(ctx, client, args[0])
	if err != nil {
		return fmt.Errorf("resolve issue: %w", err)
	}

	path := "/api/issues/" + issueRef.ID + "/metadata/" + key
	if err := client.DeleteJSON(ctx, path); err != nil {
		return fmt.Errorf("delete metadata: %w", err)
	}

	// Refresh the metadata so the user sees the result.
	var result map[string]any
	output, _ := cmd.Flags().GetString("output")
	if err := client.GetJSON(ctx, "/api/issues/"+issueRef.ID+"/metadata", &result); err != nil {
		if output == "json" {
			return cli.PrintJSON(os.Stdout, map[string]any{"deleted": true})
		}
		fmt.Fprintln(os.Stdout, "Key deleted.")
		return nil
	}
	metadata, _ := result["metadata"].(map[string]any)
	if output == "json" {
		return cli.PrintJSON(os.Stdout, metadata)
	}
	printMetadataTable(metadata)
	return nil

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. List current keys first with `multica issue metadata get ISSUE` and delete only existing ones
  2. Make scripts tolerate 404 when the key is already gone (idempotent delete)
  3. Re-login on 401; retry on transient network errors
Defensive patterns

Strategy: try-catch

Validate before calling

# optionally confirm the key exists first
multica issue metadata get "$ISSUE" --output json | jq -e --arg k "$META_KEY" '.[$k]' >/dev/null \
  || { echo "key $META_KEY not present" >&2; exit 0; }

Try / catch

if err := client.DeleteJSON(ctx, path); err != nil {
	if isNotFound(err) { /* already deleted: treat as success in scripts */ }
	return fmt.Errorf("delete metadata: %w", err)
}

Prevention

When it happens

Trigger: 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.

Common situations: Trying to delete a metadata key that was already removed (scripts are not idempotent); double-running a cleanup script; token expiry mid-session.

Related errors


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/91dbb5baa4bb382f. Report an issue: GitHub.