diff --git a/open-api/typescript-sdk/src/index.ts b/open-api/typescript-sdk/src/index.ts index 77be18f0e7..7adbca4d7e 100644 --- a/open-api/typescript-sdk/src/index.ts +++ b/open-api/typescript-sdk/src/index.ts @@ -6,11 +6,15 @@ export * from './fetch-errors.js'; export interface InitOptions { baseUrl: string; apiKey: string; + headers?: Record; } -export const init = ({ baseUrl, apiKey }: InitOptions) => { +export const init = ({ baseUrl, apiKey, headers }: InitOptions) => { setBaseUrl(baseUrl); setApiKey(apiKey); + if (headers) { + setHeaders(headers); + } }; export const getBaseUrl = () => defaults.baseUrl; @@ -24,6 +28,26 @@ export const setApiKey = (apiKey: string) => { defaults.headers['x-api-key'] = apiKey; }; +export const setHeader = (key: string, value: string) => { + assertNoApiKey(key); + defaults.headers = defaults.headers || {}; + defaults.headers[key] = value; +}; + +export const setHeaders = (headers: Record) => { + defaults.headers = defaults.headers || {}; + for (const [key, value] of Object.entries(headers)) { + assertNoApiKey(key); + defaults.headers[key] = value; + } +}; + +const assertNoApiKey = (headerKey: string) => { + if (headerKey.toLowerCase() === 'x-api-key') { + throw new Error('The API key header can only be set using setApiKey().'); + } +}; + export const getAssetOriginalPath = (id: string) => `/assets/${id}/original`; export const getAssetThumbnailPath = (id: string) => `/assets/${id}/thumbnail`;