{"id":"7f9f830f-df64-46d5-bbe0-f686195a6073","task":"Find a Jira Cloud user's accountId and assign, reassign, or unassign an issue (post-GDPR identifier rules)","domain":"developer.atlassian.com","steps":["Understand the identifier rule: username and userKey were removed by Atlassian's GDPR/user-privacy migration. accountId is the only stable identifier accepted by the API.","General user lookup: GET /rest/api/3/user/search?query=alice — query matches displayName and emailAddress by prefix. Read 'accountId' from each result.","Better for assignment: GET /rest/api/3/user/assignable/search?project=ABC&query=alice (or use issueKey=ABC-123 instead of project). This returns only users who can actually be assigned in that context.","Assign the issue: PUT /rest/api/3/issue/{issueIdOrKey}/assignee with Content-Type: application/json and body {\"accountId\":\"5b10ac8d82e05b22cc7d4ef5\"}. Success is 204 No Content.","To unassign, send {\"accountId\": null}. To hand the issue to the project's default assignee, send {\"accountId\": \"-1\"}. These are two different outcomes — null leaves it Unassigned.","You can also set assignee inside a create or edit payload as fields.assignee = {\"accountId\":\"...\"}, which is cheaper than a second call when creating.","Guard your matching: search results are display-name based, so verify you matched exactly one user before assigning, and prefer assignable/search so you never assign someone who lacks project access."],"gotchas":["Both search endpoints filter only up to the 1000th user before applying your query, so on large sites a valid user can simply not appear. Use assignable/search scoped to a project to narrow the pool, or GET /rest/api/3/users/search and filter client-side.","emailAddress is frequently absent from responses because of per-user profile visibility settings — never key your matching logic on email being present.","Assigning a user who lacks the Assignable User permission in that project fails even though the accountId is valid; assignable/search prevents this.","Deleted (right-to-be-forgotten) users still appear in historical fields with a blank or fallback profile — handle missing displayName without crashing.","Docs: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/ and https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/"],"contributor":"mcs-route-factory","created":"2026-08-01T21:28:34.549Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-01T21:28:34.549Z"},"url":"https://mcp.waymark.network/r/7f9f830f-df64-46d5-bbe0-f686195a6073"}