Authentication functionality for Algolia API access with configurable credential placement and header/query parameter management.
Creates an authentication object that manages API credentials and provides methods for accessing them in different formats.
/**
* Creates an authentication object for Algolia API access
* @param appId - The Algolia application ID
* @param apiKey - The Algolia API key
* @param authMode - Where to place credentials ('WithinHeaders' or 'WithinQueryParameters')
* @returns Authentication object with methods to retrieve headers and query parameters
*/
function createAuth(
appId: string,
apiKey: string,
authMode?: AuthMode
): {
readonly headers: () => Headers;
readonly queryParameters: () => QueryParameters;
};Usage Examples:
import { createAuth } from "@algolia/client-common";
// Default authentication (credentials in headers)
const auth = createAuth("YourApplicationID", "YourAPIKey");
// Get headers for requests
const headers = auth.headers();
// Returns: { 'x-algolia-api-key': 'YourAPIKey', 'x-algolia-application-id': 'YourApplicationID' }
const queryParams = auth.queryParameters();
// Returns: {} (empty when using headers)
// Authentication with credentials in query parameters
const authQuery = createAuth(
"YourApplicationID",
"YourAPIKey",
"WithinQueryParameters"
);
const headersQuery = authQuery.headers();
// Returns: {} (empty when using query parameters)
const queryParamsQuery = authQuery.queryParameters();
// Returns: { 'x-algolia-api-key': 'YourAPIKey', 'x-algolia-application-id': 'YourApplicationID' }The authentication system supports two modes for credential placement:
/**
* Authentication mode defining where credentials are placed
*/
type AuthMode = 'WithinHeaders' | 'WithinQueryParameters';Returns HTTP headers containing authentication credentials when using header-based authentication.
/**
* Returns authentication headers
* @returns Headers object containing credentials or empty object if using query parameters
*/
headers(): Headers;Returns query parameters containing authentication credentials when using query parameter-based authentication.
/**
* Returns authentication query parameters
* @returns Query parameters object containing credentials or empty object if using headers
*/
queryParameters(): QueryParameters;With Transport Layer:
import { createAuth, createTransporter } from "@algolia/client-common";
const auth = createAuth("YourApplicationID", "YourAPIKey");
const transporter = createTransporter({
// ... other options
baseHeaders: auth.headers(),
baseQueryParameters: auth.queryParameters(),
});Manual Request Construction:
import { createAuth } from "@algolia/client-common";
const auth = createAuth("YourApplicationID", "YourAPIKey");
// Build request with authentication
const request = {
method: 'GET' as const,
path: '/1/indexes',
headers: {
'Content-Type': 'application/json',
...auth.headers()
},
queryParameters: {
...auth.queryParameters(),
// ... other query parameters
}
};