Jasperserver internally uses PostgreSQL database to store all its data. To get list of reports you can create view like this:

CREATE OR REPLACE VIEW jasperserver.all_reports AS
 SELECT s.id AS report_id,
    s.version AS report_version,
    s.name AS report_name,
    fp.uri AS report_parent_uri,
    (fp.uri::text || '/'::text) || s.name::text AS report_url,
    fch.uri AS report_files_uri,
    s.label AS report_label,
    s.description AS report_description,
    ( SELECT count(*) AS count
           FROM jasperserver.jiresource kam
          WHERE kam.name::text = 'KAMreport'::text AND kam.parent_folder = s.childrenfolder) AS kamreport,
    ( SELECT count(*) AS count
           FROM jasperserver.jiresource kam
          WHERE kam.name::text = 'QAreport'::text AND kam.parent_folder = s.childrenfolder) AS qareport,
    ( SELECT count(*) AS count
           FROM jasperserver.jiresource kam
             JOIN jasperserver.jifileresource fr ON kam.id = fr.id AND fr.file_type::text = 'img'::text
          WHERE kam.name::text = 'thumbnail'::text AND kam.parent_folder = s.childrenfolder) AS is_thumbnail,
    ( SELECT fr.data
           FROM jasperserver.jiresource kam
             JOIN jasperserver.jifileresource fr ON kam.id = fr.id AND fr.file_type::text = 'img'::text
          WHERE kam.name::text = 'thumbnail'::text AND kam.parent_folder = s.childrenfolder) AS thumbnail
   FROM jasperserver.jiresource s
     LEFT JOIN jasperserver.jiresourcefolder fp ON s.parent_folder = fp.id
     LEFT JOIN jasperserver.jiresourcefolder fch ON s.childrenfolder = fch.id
  WHERE s.resourcetype::text = 'com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit'::text AND s.version > 0;

I use specific resources names to get more functionality. For example I link specific Images to reports to mark them by departments (see in conde ‘KAMreport’ or ‘QAreport’). Plus I add special image “thumbnail.jpg” to every report to have my own thumbnail image for selected reports.