--- title: Send Apex context to a JavaScript search interface (Deprecated) slug: '1169' canonical_url: https://docs.coveo.com/en/1169/ collection: coveo-for-salesforce source_format: adoc --- # Send Apex context to a JavaScript search interface (Deprecated) [.version.no-link.classic] Salesforce Classic > **Deprecated** > > This feature is still available, but no longer supported as of the August 2023 release of Coveo for Salesforce version [5.2](https://docs.coveo.com/en/n5bj0150#august-2023-release-v5-2-initial-release). You may want to have access to some Apex variables in your JavaScript Search interface. You can use the search context, a map of Apex values to do this as shown in the following example. **Example** In an on-premises Coveo REST Search API, you define a trusted application with its `secret key`. You want to use the `secret key` to request a search token from your Apex page, and then use the received search token in your JavaScript search interface to set the `accessToken` to authorize the page to communicate with the REST Search API. Here is how to do that: . In Salesforce, create an Apex class (see [Adding an Apex Class](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_class.htm)) that allows you to get the token and create a search context with the token in it. ```apex public class MySearchController { ​ class UserId{ public String name {get; set;} public String provider {get; set;} public String type {get; set;} public UserId(String name, String provider, String type){ this.name = name; this.provider = provider; this.type = type; } } ​ class TokenResponse { public String token; } ​ public SearchContext getContext(){ HttpRequest req = new HttpRequest(); req.setEndpoint('https://YouRestApiUrl/rest/search/token'); req.setMethod('POST'); req.setHeader('Authorization', 'Bearer the_secret_key_for_the_application'); req.setHeader('Content-Type', 'application/json'); ​ List userIds = new List(); userIds.add(new UserId('foo@bar.com', 'Email Security Provider', 'User')); ​ Map body = new Map(); body.put('userIds', userIds); req.setBody(JSON.serialize(body)); ​ req.setTimeout(10000); ​ Http http = new Http(); HTTPResponse res = http.send(req); ​ System.debug(res.getBody()); ​ String token = ((TokenResponse)JSON.deserialize(res.getBody(), TokenResponse.class)).token; ​ SearchContext context = new SearchContext(); context.put('token',token); return context; } } ``` . Create a new Visualforce page (see [Defining Visualforce Pages](https://help.salesforce.com/apex/HTViewHelpDoc?id=pages_creating.htm)) that adds the search context in the component from the controller. ```xml ``` . Using the Interface Editor (see [Accessing the Interface Editor for a Search API Hosted Page](https://www.coveo.com/go?dest=adminhelp70&lcid=9&context=1032)): .. Select the **Advanced Mode**, and then select the **Code** tab. .. In the page code, add the following code to set the token in the search interface endpoint options. ```html ```