multica-ai/multica · error

unset property: %w

Error message

unset property: %w

What it means

Returned by `runIssuePropertyUnset` when the DELETE to `/api/issues/<issueID>/properties/<propertyID>` fails. Both refs were already resolved locally, so the wrapped error reflects server-side rejection or transport failure.

Source

Thrown at server/cmd/multica/cmd_property.go:686

	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)
	}
	properties, err := fetchProperties(ctx, client)
	if err != nil {
		return err
	}
	property, err := resolvePropertyRef(properties, name)
	if err != nil {
		return err
	}

	path := "/api/issues/" + issueRef.ID + "/properties/" + property.ID
	if err := client.DeleteJSON(ctx, path); err != nil {
		return fmt.Errorf("unset property: %w", err)
	}
	output, _ := cmd.Flags().GetString("output")
	if output == "json" {
		return cli.PrintJSON(os.Stdout, map[string]any{"deleted": true})
	}
	fmt.Fprintf(os.Stdout, "Property %q unset.\n", property.Name)
	return nil
}

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Parse the wrapped status: 404 → the property or issue changed server-side, re-fetch lists and retry with fresh IDs.
  2. 401/403 → refresh credentials or check permissions.
  3. Network failure → confirm server health and retry.

Example fix

// before
multica issue property unset ISS-1 --name Priority
// error: unset property: request failed: 404 ...

// after
multica property list && multica issue list   # refresh refs
multica issue property unset <issue-key> --name <current-property-name>
Defensive patterns

Strategy: try-catch

Validate before calling

# bash: confirm both refs are current before the delete
multica issue list | grep -qw "$ISSUE" && multica property list | grep -qw "$PROP" || { echo 'stale ref' >&2; exit 1; }

Try / catch

if err := client.DeleteJSON(ctx, path); err != nil {
    if isNotFound(err) { /* treat as success or refresh refs */ }
    if isAuthError(err) { reauth(); retry once }
    return fmt.Errorf("unset property: %w", err)
}

Prevention

When it happens

Trigger: Server refuses the delete (permissions, protected property, or the property value/definition vanished server-side returning 404/409), expired token, or connectivity loss.

Common situations: Property deleted concurrently by another client; role lacks edit permission on the issue; automation running against a restarted server.

Related errors


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