import { NextResponse } from "next/server"; import { KiroService } from "@/lib/oauth/services/kiro"; import { createProviderConnection } from "@/models"; /** * POST /api/oauth/kiro/import * Import and validate refresh token from Kiro IDE */ export async function POST(request) { try { const { refreshToken } = await request.json(); if (!refreshToken || typeof refreshToken !== "string") { return NextResponse.json( { error: "Refresh token is required" }, { status: 400 } ); } const kiroService = new KiroService(); // Validate and refresh token const tokenData = await kiroService.validateImportToken(refreshToken.trim()); // Extract email from JWT if available const email = kiroService.extractEmailFromJWT(tokenData.accessToken); // Save to database const connection = await createProviderConnection({ provider: "kiro", authType: "oauth", accessToken: tokenData.accessToken, refreshToken: tokenData.refreshToken, expiresAt: new Date(Date.now() + tokenData.expiresIn * 1000).toISOString(), email: email || null, providerSpecificData: { profileArn: tokenData.profileArn, authMethod: "imported", provider: "Imported", }, testStatus: "active", }); return NextResponse.json({ success: true, connection: { id: connection.id, provider: connection.provider, email: connection.email, }, }); } catch (error) { console.log("Kiro import token error:", error); return NextResponse.json({ error: error.message }, { status: 500 }); } }