""" Programs Endpoint ================= /api/programs - 지원 마일리지 프로그램 목록 API 키 불필요 (공개 정보) """ from starlette.requests import Request from starlette.responses import JSONResponse from app.config import MILEAGE_PROGRAMS, CABIN_DISPLAY_NAMES async def list_programs(request: Request) -> JSONResponse: """ 지원되는 마일리지 프로그램 목록 반환 (API 키 불필요) """ formatted_programs = [] for prog in MILEAGE_PROGRAMS: cabin_names = [CABIN_DISPLAY_NAMES.get(c, c) for c in prog["cabins"]] formatted_programs.append({ "code": prog["code"], "name": prog["name"], "cabins": cabin_names, "provides_seat_count": prog["has_seat_count"], "provides_trip_details": prog["has_trip_data"], "notes": prog.get("notes"), }) return JSONResponse({ "success": True, "count": len(formatted_programs), "programs": formatted_programs, "usage": { "search": "Use 'code' in the 'programs' parameter of /api/award/search", "routes": "Use 'code' as 'source' parameter of /api/award/routes", "example": "/api/award/search with programs='aeroplan,united'" } })