@@ -900,6 +900,41 @@ async def get_csv_ticket(ticket_id: str):
900900 return jsonify (result ), 200
901901
902902
903+ @app .route ("/api/csv-tickets/by-incident/<incident_id>" , methods = ["GET" ])
904+ async def get_csv_ticket_by_incident (incident_id : str ):
905+ """
906+ Get one CSV ticket by Incident ID (e.g., INC000016346).
907+
908+ Query params:
909+ - fields: optional comma-separated list of fields to include
910+ """
911+ ticket = _csv_ticket_service .get_ticket_by_incident_id (incident_id )
912+ if ticket is None :
913+ return jsonify ({"error" : "Ticket not found" }), 404
914+
915+ fields_param = request .args .get ("fields" , "" )
916+ if fields_param :
917+ selected_fields = [f .strip () for f in fields_param .split ("," ) if f .strip ()]
918+ else :
919+ selected_fields = list (ticket .model_fields .keys ())
920+
921+ result = {}
922+ for field in selected_fields :
923+ val = getattr (ticket , field , None )
924+ if val is None :
925+ result [field ] = None
926+ elif hasattr (val , "value" ):
927+ result [field ] = val .value
928+ elif hasattr (val , "isoformat" ):
929+ result [field ] = val .isoformat ()
930+ elif hasattr (val , "hex" ):
931+ result [field ] = str (val )
932+ else :
933+ result [field ] = val
934+
935+ return jsonify (result ), 200
936+
937+
903938@app .route ("/api/csv-tickets/stats" , methods = ["GET" ])
904939async def get_csv_ticket_stats ():
905940 """Get statistics about CSV tickets."""
0 commit comments