1import { NextRequest, NextResponse } from 'next/server';
2import { fieldpineServerApi } from '@/lib/server/fieldpineApi';
3import { getRequestContext } from '@/lib/server/sessionUtils';
6 * eLink/BUCK Printer-Cartridge Relationships Endpoint
7 * Uses Fieldpine's BUCK API via eLink protocol
8 * Endpoint: retailmax.elink.printercartridge
10export async function GET(request: NextRequest) {
12 // Get request context with authentication
13 const context = await getRequestContext(request);
14 if (!context?.session) {
15 return NextResponse.json(
16 { error: 'Authentication required' },
22 const clientId = request.headers.get('x-forwarded-for') ||
23 request.headers.get('x-real-ip') ||
24 context.session.userId ||
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 limit = searchParams.get('limit') || '5000';
36 const want = searchParams.get('want');
37 const filter = searchParams.get('filter');
39 // Build BUCK API call parameters
40 const buckParams: Record<string, string> = {
41 "3": "retailmax.elink.printercartridge",
45 if (want) buckParams["10"] = want;
46 if (filter) buckParams["9"] = filter;
48 // Call Fieldpine BUCK API via eLink protocol
50 const result = await fieldpineServerApi.buckApiCall(buckParams, context.session.apiKey);
52 console.log(`[ELINK Printer-Cartridge] Loaded relationships`);
54 return NextResponse.json({
61 console.error('eLink printer-cartridge error:', error);
62 return NextResponse.json(
63 { error: 'eLink endpoint unavailable', source: 'elink' },
69 console.error('eLink printer-cartridge error:', error);
70 return NextResponse.json(
71 { error: 'Failed to fetch printer-cartridge relationships' },