We use the API to update a custom field when code is committed against an issue, or a build is done containing code for that issue.
We do this by instantiating an empty issue, adding the id and filling in the required field then calling UpdateIssue.
This works well and only updates the required field and leaves most of them unchanged, except the Labels and time tracking fields.
Looking at the source it appears that the check is for whether these are null rather than their initialised values (which appear to be an empty array and an Timetracking object).
We use the API to update a custom field when code is committed against an issue, or a build is done containing code for that issue. We do this by instantiating an empty issue, adding the id and filling in the required field then calling UpdateIssue.
This works well and only updates the required field and leaves most of them unchanged, except the Labels and time tracking fields.
Looking at the source it appears that the check is for whether these are null rather than their initialised values (which appear to be an empty array and an Timetracking object).