# Issues with Beta API for get identity in spring boot project

**URL:** <https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457>\
**Category:** SHF Discussion and Questions\
**Tags:** sailpoint-identity-security\
**Created:** [March 22, 2024, 9:01pm UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457 "2024-03-22T21:01:01Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![peratkar](https://avatars.discourse-cdn.com/v4/letter/p/f4b2a3/32.png) [@peratkar](https://developer.sailpoint.com/discuss/u/peratkar)\
**Post date:** [March 22, 2024, 9:01pm UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/1 "2024-03-22T21:01:02Z")

</div>

Hi,

I can see response for get identity API /beta/identities?filters=alias eq “123456” in postman.

I am updating existing spring boot project to replace the deprecated API with above endpoint. But I get 400.

I print the URL for debugging and it looks correct. I even used the same URL I have in spring boot code in postman and I get the response in postman. But spring boot code is returning 400.

See error in logs below. I renamed org name in URL for security purposes.

2024-03-22 15:39:51,991 DEBUG com.mycompany.contractormgmt.service.IDNService - IDN User details URL: `[Preformatted text](https://mycompany-sb.api.identitynow.com/beta/identities?filters=alias%20eq%20%22123456%22)`  
2024-03-22 15:39:52,093 DEBUG com.mycompany.contractormgmt.service.IDNService - IDNService :: getUserDetailsFromIDN :: HttpStatusCodeException = org.springframework.web.client.HttpClientErrorException$BadRequest: 400 : “{“detailCode”:“400.1 Bad request content”,“trackingId”:“96f48240c65042ba95d963814350cdf9”,“messages”:[{“locale”:“en-US”,“localeOrigin”:“DEFAULT”,“text”:“The request was syntactically correct but its content is semantically invalid.”},{“locale”:“und”,“localeOrigin”:“REQUEST”,“text”:“The request was syntactically correct but its content is semantically invalid.”}],“causes”:}”

 ![Screenshot 2024-03-22 at 4.58.01 PM](https://global.discourse-cdn.com/sailpoint/original/2X/7/795846869c1d8e836e081ce1c7283ac079a0797c.png)

---

<div class="post-metadata">

**Author:** ![shaileeM](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/shaileem/32/15314_2.png) [@shaileeM](https://developer.sailpoint.com/discuss/u/shaileeM)\
**Post date:** [March 23, 2024, 6:24am UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/2 "2024-03-23T06:24:57Z")

</div>

Are you able to inspect the logs to check what is request being sent? Exactly what is the URL formed

---

<div class="post-metadata">

**Author:** ![baoussounda](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/baoussounda/32/13095_2.png) [@baoussounda](https://developer.sailpoint.com/discuss/u/baoussounda)\
**Post date:** [March 23, 2024, 11:33am UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/3 "2024-03-23T11:33:55Z")

</div>

Hi @peratkar,

Try same thing with postman and as you say it’s work perfectly.

You must double check your query param filters if it’s really in your script.

For example when add something wrong (double quote in filters param value) in query params i have same error :

 ![image](https://global.discourse-cdn.com/sailpoint/original/2X/5/5ba5fb31e3c3929ac9ea4adb40912543869c7b35.png)

---

<div class="post-metadata">

**Author:** ![peratkar](https://avatars.discourse-cdn.com/v4/letter/p/f4b2a3/32.png) [@peratkar](https://developer.sailpoint.com/discuss/u/peratkar)\
**Post date:** [March 23, 2024, 6:28pm UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/4 "2024-03-23T18:28:04Z")

</div>

This is what i am printing the URL in logs. `https://mycompany-sb.api.identitynow.com/beta/identities?filters=alias%20eq%20%22123456%22`

If I take same URL and send the request in postman, it returns 200 response. But in code it is returning 400

---

<div class="post-metadata">

**Author:** ![peratkar](https://avatars.discourse-cdn.com/v4/letter/p/f4b2a3/32.png) [@peratkar](https://developer.sailpoint.com/discuss/u/peratkar)\
**Post date:** [March 23, 2024, 6:32pm UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/5 "2024-03-23T18:32:13Z")

</div>

here is the code as well…

```auto
String authHeader = "Bearer " + authService.getIDNAccessToken();
    logger.trace("IDNService :: getUserDetailsFromIDN :: Bearer authHeader = " + authHeader);

    HttpHeaders headers = new HttpHeaders();
    headers.add(ContractorManagementConstants.AUTHORIZATION, authHeader);
    headers.add(ContractorManagementConstants.ACCEPT, MediaType.APPLICATION_JSON_VALUE);

    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(config.getIdn().getUserDetails().getUrl())
            .queryParam("filters", "alias eq \"" + userWWID + "\"");

    logger.debug("IDN User details URL:" +builder.toUriString());

    HttpEntity<String> entity = new HttpEntity<>(headers);
    logger.debug("Headers : " +entity.getHeaders());
    RestTemplate restTemplate = new RestTemplate();
    try {
        ResponseEntity<IDNResponse> response = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity,
                IDNResponse.class);

        logger.debug("IDNService :: getUserDetailsFromIDN :: response = " + response);

```

---

<div class="post-metadata">

**Author:** ![shaileeM](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/shaileem/32/15314_2.png) [@shaileeM](https://developer.sailpoint.com/discuss/u/shaileeM)\
**Post date:** [March 24, 2024, 5:07am UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/6 "2024-03-24T05:07:01Z")

</div>

> [@peratkar](#):
>
> ```auto
> UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(config.getIdn().getUserDetails().getUrl())
> .queryParam("filters", "alias eq \"" + userWWID + "\"");
> 
> ```

Hi @peratkar ,

Thanks for sharing details. I have not tested below code , but do give it a try -

```auto
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(config.getIdn().getUserDetails().getUrl())
            .queryParam("filters", URLEncoder.encode("alias eq \"" + userWWID + "\"","UTF-8")).build();

```

---

<div class="post-metadata">

**Author:** ![baoussounda](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/baoussounda/32/13095_2.png) [@baoussounda](https://developer.sailpoint.com/discuss/u/baoussounda)\
**Post date:** [March 24, 2024, 6:31am UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/7 "2024-03-24T06:31:31Z")

</div>

Hi @peratkar,

With a basic sprint boot project i reproduce your issue.

And the came from :

```auto
 UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(config.getIdn().getUserDetails().getUrl())
            .queryParam("filters", "alias eq \"" + userWWID + "\"");

```

You can build manually your url like :

```auto
String finalUrl = config.getIdn().getUserDetails().getUrl()+ "?filters=alias eq \"" + userWWID + "\"";

```

And you can directly use finalUrl directly in your **restTemplate.exchange(finalUrl ,…**

Below simple code that work :

```auto
package com.example;

import java.net.http.HttpHeaders;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

/**
 * Simple test ISC api with sprint boot project!
 *
 */
public class App {
    public static void main(String[] args) {
        String baseUrl = "https://tenant.api.identitynow.com/beta/identities";
        String userWWID = "user4@example.com";
        String formattedUserWWID = "\"" + userWWID + "\"";
        String authHeader = "Bearer xxxxx";

        // Create HttpHeaders based on an existing instance
        MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();

        headers.add("Authorization", authHeader);
        headers.add("Accept", "application/json");

        String url1 = baseUrl + "?filters=alias eq \"" + userWWID + "\"";
        // Output the constructed URL
        HttpEntity<String> entity = new HttpEntity<>(headers);

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.exchange(url1, HttpMethod.GET, entity, String.class);
        System.out.println("Response: " + response.getBody());

    }
}

```

---

<div class="post-metadata">

**Author:** ![peratkar](https://avatars.discourse-cdn.com/v4/letter/p/f4b2a3/32.png) [@peratkar](https://developer.sailpoint.com/discuss/u/peratkar)\
**Post date:** [March 24, 2024, 5:01pm UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/8 "2024-03-24T17:01:27Z")

</div>

thank you very much. This resolved the issue.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/sailpoint/original/2X/f/f2136700ed5e3703e0b85e02f6be799dacca7735.png) [@system](https://developer.sailpoint.com/discuss/u/system)\
**Post date:** [May 23, 2024, 5:01pm UTC](https://developer.sailpoint.com/discuss/t/issues-with-beta-api-for-get-identity-in-spring-boot-project/37457/9 "2024-05-23T17:01:48Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
