Skip to main content

Search with the Go SDK

To try using the ISC search functionality along with pagination, copy this code into your "sdk.go" file, following the main code:

func getSearchResults(ctx context.Context, apiClient *sailpoint.APIClient) {
search := v3.NewSearchWithDefaults()
search.Indices = append(search.Indices, "identities")
searchString := []byte(`
{
"indices": [
"identities"
],
"query": {
"query": "*"
},
"sort": [
"-name"
]
}
`)
search.UnmarshalJSON(searchString)
resp, r, err := sailpoint.PaginateSearchApi(ctx, apiClient, *search, 0, 10, 10000)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `PaginateSearchApi``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
// response from `search`
for i := 0; i < len(resp); i++ {
fmt.Println(resp[i]["name"])
}
}

To run the search, run this command: go run sdk.go This example lists all the identities it finds in your tenant.

There are two ways to configure the search:

  1. You can edit the searchString JSON:
 searchString := []byte(`
{
"indices": [
"identities"
],
"query": {
"query": "*"
},
"sort": [
"-name"
]
}
`)

In this example, changing the "indices" on line 3 from "identities" to "access profiles" makes the search return access profiles instead of identities.

  1. You can edit the string at the end of this search.Indices line to do the same thing as a shortcut:
search.Indices = append(search.Indices, "identities")

In this example, the "identities" string represents an unmarshalled JSON. Changing append(search.Indices, "identities") to append(search.Indices, "access profiles") does the same thing that editing the searchString JSON does.

Paginate search results

The search example includes the syntax you can use to paginate search results. Edit this line to configure the search result pagination:

resp, r, err := sailpoint.PaginateSearchApi(ctx, apiClient, *search, 0, 10, 10000)

The first value refers to the initialOffset, the starting number for the results, the second refers to the increment, the number of records per page, and the third refers to the limit, the last record that can be returned.

For example, changing the first number to 21, the second to 20, and the third to 40 would configure the search to return records 21 to 40 and then stop.