1import { NextRequest, NextResponse } from 'next/server';
2import { fieldpineServerApi } from '@/lib/server/fieldpineApi';
3import { getStoredAuth } from '@/lib/server/auth';
6 * OpenAPI Suppliers Endpoint
7 * Uses Fieldpine's OpenAPI2_RmSystem endpoints
8 * Documentation: https://docs.fieldpine.com/openapi/
10export async function GET(request: NextRequest) {
12 // Verify authentication
13 const authData = await getStoredAuth();
14 if (!authData || !authData.authenticated) {
15 return NextResponse.json(
16 { error: 'Authentication required' },
22 const clientId = request.headers.get('x-forwarded-for') ||
23 request.headers.get('x-real-ip') ||
26 if (!fieldpineServerApi.checkClientRateLimit(clientId)) {
27 return NextResponse.json(
28 { error: 'Rate limit exceeded' },
33 // Parse query parameters
34 const { searchParams } = new URL(request.url);
35 const params: Record<string, string | number> = {};
37 const search = searchParams.get('search');
38 if (search) params.search = search;
40 const supplierId = searchParams.get('supplierId');
41 if (supplierId) params.supplierId = supplierId;
43 const limit = searchParams.get('limit');
44 if (limit) params.limit = parseInt(limit);
46 // Call Fieldpine OpenAPI directly (no BUCK fallback)
48 const suppliers = await fieldpineServerApi.apiCall("/Suppliers", {
50 cookie: authData.apiKey,
54 return NextResponse.json({
61 console.error('OpenAPI suppliers error:', error);
62 return NextResponse.json(
63 { error: 'OpenAPI endpoint unavailable', source: 'openapi' },
69 console.error('OpenAPI suppliers error:', error);
70 return NextResponse.json(
71 { error: 'Failed to fetch suppliers' },