From 55d97c8099a828a417cdec2630f6358ae21622bb Mon Sep 17 00:00:00 2001 From: DaKheera47 Date: Tue, 20 Jan 2026 13:30:56 +0000 Subject: [PATCH] url location corrected for list --- .env.example | 4 ++-- orchestrator/src/server/api/routes/settings.ts | 2 +- orchestrator/src/server/services/rxresume.ts | 17 +++++++++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 9c5d7b0..3c13cfb 100644 --- a/.env.example +++ b/.env.example @@ -10,8 +10,8 @@ MODEL=openai/gpt-4o-mini # RXResume credentials for PDF generation # Create an account at: https://rxresu.me -RXRESUME_EMAIL=your_email@example.com -RXRESUME_PASSWORD=your_password_here +# for reference: https://docs.rxresu.me/guides/using-the-api +RXRESUME_API_KEY= # Optional: Basic Auth for write access (read-only without auth) # When set, all write actions (POST/PATCH/DELETE) require Basic Auth. diff --git a/orchestrator/src/server/api/routes/settings.ts b/orchestrator/src/server/api/routes/settings.ts index 1d0bb4f..0301e55 100644 --- a/orchestrator/src/server/api/routes/settings.ts +++ b/orchestrator/src/server/api/routes/settings.ts @@ -301,7 +301,7 @@ settingsRouter.patch('/', async (req: Request, res: Response) => { settingsRouter.get('/rx-resumes', async (_req: Request, res: Response) => { try { const resumes = await listResumes(); - res.json({ success: true, resumes }); + res.json({ success: true, data: { resumes } }); } catch (error) { const message = error instanceof Error ? error.message : 'Unknown error'; console.error(`❌ Failed to fetch Reactive Resumes: ${message}`); diff --git a/orchestrator/src/server/services/rxresume.ts b/orchestrator/src/server/services/rxresume.ts index 6286a87..fd26939 100644 --- a/orchestrator/src/server/services/rxresume.ts +++ b/orchestrator/src/server/services/rxresume.ts @@ -20,14 +20,21 @@ export async function fetchRxResume(path: string, options: RequestInit = {}): Pr } const baseUrl = process.env.RXRESUME_URL || 'https://rxresu.me'; - const cleanBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl; + let cleanBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl; + + // Handle cases where the base URL already includes /api or /api/openapi + if (cleanBaseUrl.endsWith('/api/openapi')) { + cleanBaseUrl = cleanBaseUrl.slice(0, -12); + } else if (cleanBaseUrl.endsWith('/api')) { + cleanBaseUrl = cleanBaseUrl.slice(0, -4); + } - // The API endpoints are at /api/openapi/* const url = `${cleanBaseUrl}/api/openapi${path}`; const headers = { 'x-api-key': apiKey, - 'Content-Type': 'application/json', + // intentionally removed because it doesn't work with this added... + // 'Content-Type': 'application/json', ...(options.headers || {}), } as Record; @@ -83,9 +90,11 @@ export async function exportResumePdf(id: string): Promise { const result = await fetchRxResume(`/printer/resume/${id}/pdf`); return result.url; } + /** * List all resumes. + * According to official OpenAPI spec, the endpoint is /resume/list */ export async function listResumes(): Promise<{ id: string; name: string }[]> { - return fetchRxResume('/resume'); + return fetchRxResume('/resume/list'); }