JIRA SOAP API returns numeric IDs instead of text values for status and resolution fields

I’m having trouble with the JIRA SOAP API where I’m getting numeric values instead of readable text for issue fields.

When I call methods like RemoteIssue.getStatus() or RemoteIssue.getResolution(), I receive numbers rather than the actual text values. Here’s what happens:

// Search for issues using JQL
RemoteIssue[] ticketList = soapClient.getIssuesFromJqlSearch(authToken, "project = TEST AND status = resolved", 25);

// Try to get resolution value
for (int j = 0; j < ticketList.length; j++) {
    String resolutionValue = ticketList[j].getResolution();
    // This returns "3" instead of "resolved"
    System.out.println("Resolution: " + resolutionValue);
}

Instead of getting “resolved” as expected, the method returns “3”. The same thing happens with status fields where I get numeric IDs instead of readable names.

Is there a way to retrieve the actual text values like “resolved” or “closed” instead of these internal ID numbers? What’s the proper approach to get human-readable field values through the JIRA SOAP interface?

totally getchu man! it’s a bit of a hassle but u gotta call getResolutions() or getStatuses() first to get the full list, then match those IDs with ur issues. it’s kinda annoying, but that’s just how JIRA SOAP API is, ya know?

Yeah, JIRA’s SOAP API makes you handle resolution mapping yourself. I built a utility method that creates lookup tables when the app starts up. Just call jiraService.getResolutions(authToken) and jiraService.getStatuses(authToken) once, then throw them into Maps with ID as key and name as value. When you’re processing RemoteIssue objects, just check the ID against your maps. Way fewer API calls since you’re only grabbing metadata once instead of hitting it for every issue. Just remember - if admins add new resolutions or statuses, you’ll need to refresh those lookup tables.

This happens because JIRA’s SOAP API returns internal IDs instead of the actual text you see on screen. You’ll need to make separate calls to get the mapping between those IDs and readable values. For resolution fields, call getResolutions() - it returns RemoteResolution objects with both ID and name. Same deal with status fields - use getStatuses() to get RemoteStatus objects. Cache these mappings, then loop through to match IDs with readable names. I usually throw them in a HashMap at startup to avoid hitting the API repeatedly, since these values don’t change much. The SOAP API expects you to handle these lookups locally for better performance.