====== Aerospace Field Catalog ====== === Links === * [[http://staging.aero.und.edu:53028|Staging Site]] * [[https://catalog.aero.und.edu|Aerospace Field Catalog]] * [[http://catalog.atmos.und.edu|Atmos Field Catalog]] ===== Hierarchical Structure ===== The [[https://catalog.aero.und.edu|Aerospace Field Catalog]] is designed designed to support field project conducting observations using research aircraft. The Field Catalog structure is hierarchical with Project, Missions, and Flights. * Project - Different field project that are typically conducted over several weeks to months. * Missions - Different mission conducted one one day that could have one or more aircraft flights, involving one or more aircraft. * Flights - A single flight of a research aircraft. ===== Usage Summary ===== * Flights and Report Upload * Reports such as Flight Scientist reports can be added directly under the mission. Click on the mission or the dropdown arrow and select the icon in the applicable table. * Non-report Mission Uploads and/or Mission Flight Uploads * Need to add at least one Upload Type to the project. * For each of the Missions and Mission Flights, use the icon in the applicable table under the mission to upload the files. ===== API Summary ===== Tested the APIs directly using Postman (curl -o- "https://dl-cli.pstmn.io/install/linux64.sh" | sh), but whatever utility you use that is capable of uploading binary data is probably a little different in its approach. The general flow for uploading a file with the API is as follows: * POST https://catalog.aero.und.edu/api/upload-temp-file * Body: * fileName -> the current filename (e.g. upload.pdf) * no key) -> the file itself * This returns the name of the file as saved on the server (e.g. upload-15976465.pdf) * POST to one of the following, depending on what the file is: * General project upload: https://catalog.aero.und.edu/api/projects/{projectId}/uploads/new * Project mission report: https://catalog.aero.und.edu/api/projects/{projectId}/missions/{missionId}/reports/new * Project mission upload: https://catalog.aero.und.edu/api/projects/{projectId}/missions/{missionId}/uploads/new * Project mission flight upload: https://catalog.aero.und.edu/api/projects/{projectId}/missions/{missionId}/flights/{flightId}/uploads/new * For each of the above you will need the project, mission, and flight IDs (as applicable) * The body should contain tempFilename (the filename returned by the upload-temp-file route), as well as any additional data as applicable (name, etc.) When testing with Postman it gave me the following code snippet for a test upload using cURL if this helps: curl --location 'https://catalog.aero.und.edu/api/upload-temp-file' \ --header 'X-API-Key: ' \ --form '=@""' \ --form 'fileName=""' ===== Overview Aerospace Field Catalog ===== * Login * Users are required to have a user account to use the website, and are presented with a login page upon browsing to any part of the site * There is a “Forgot Password” page for any user that has forgotten their password * Currently only a website admin user can create new user accounts * Home * Upon logging in users will be presented with a list of any projects that are available to them * In the header on all website pages is a user menu with links to the home page, admin section (if applicable), account page, and logout * Account * Users can change their name here, as well as change their login credentials (email address and password) * A user may create an API key here for use with the as-yet-uncreated set of APIs; an API key may have an expiration date, but doesn’t need one; a user may only have one API key at any one time * Admin * Website admin users have access to the admin area, where they can administer projects and users * Projects * Admin users can create new projects using the “plus” icon button; data includes name, and start and end dates; a newly-created project is disabled by default so can’t be viewed by non-admin users * Clicking the “pencil” icon button takes you to an individual project page in the admin area, where users can update the project information. * Project uploads, missions, pages, user permissions, and upload types can be updated here as well * Project uploads are general project-related uploads (think http://catalog.atmos.und.edu/saudisummer2023/project/index.html); all uploads for projects, missions, mission flights, etc. are given a user-defined name, and a server-generated filename (a GUID) that cannot be changed * Project missions are what I called what is on http://catalog.atmos.und.edu/saudisummer2023/reports/index.html; a mission has a number, description, and start and end dates; clicking the “eye” icon button brings you to the mission admin page. * A project mission can have any number of flights (consisting of a flight identifier), reports (PDF file uploads), and other uploads (as defined by the project upload types below); clicking on a flight “eye” icon button brings you to the mission flight admin page * A project mission flight can have uploads associated with it (as defined by the project upload types below) * Project pages are custom pages that can be defined for displaying static information related to the project, as well as additional static information related to built-in pages (those that display project uploads, missions, reports, etc.) * Project upload types are what can be defined for project mission and project mission flight uploads (e.g. the types I would assign for the Saudi Summer 2023 project, from http://catalog.atmos.und.edu/saudisummer2023/aircraft/index.html are: 1) flight tracks, associated with a mission, 2) temperature profile, associated with a mission flight, 3) time vs. altitude, associated with a mission flight, 4) cloud droplet probe, associated with a mission flight, 5) flight tracks, associated with a mission flight (the KML files), 6) raw data, associated with a mission flight (the SEA files), and 7) data parameters, associated with a mission flight (the saudi2023 files)) * NOTE: most of this is unnecessary to keep in the admin area if not desired, as all functionality (aside from creating a project and editing its data) are available within the non-admin area of the site; let me know what you think of having it in two areas; I am also up for splitting the admin pages into smaller chunks (project -> project uploads, project missions, etc.) * Users * Admin users can create new user accounts using the “plus” icon button; data includes name and email address; an email will be sent to the email address so the new user can set their password; the password reset link is valid for 24 hours, but a new one can be generated from the “forgot password” page * Clicking the “pencil” icon button takes you to an individual user page in the admin area, where admin users can update the user information; users can be made application admins, or be disabled if they should no longer be able to access the website (users cannot be deleted within the system) * User logins, API keys, and project permissions can be updated here as well * Project Permissions * Users can be given different permissions for a project: read, write, and admin. A user with read permission for a project can view the project, its pages, and uploaded files. A user with write permission can edit project pages and uploaded files. A user with admin permission can edit the project and administer user permissions. Currently these permissions are cumulative, so write permission gives read permission implicitly, etc. This may change in the future. * Non-Admin Area * Clicking on an “eye” icon button for a project brings a user to the project landing/home page; the project area consists of pages with a sidenav * The home page is empty by default, but can be given some static content (like http://catalog.atmos.und.edu/saudisummer2023/index.html) using the project page feature * The other built-in pages are Uploads, Missions, Users, and Upload Types, and can similarly be given some static content * The Uploads page displays all general project uploads (like http://catalog.atmos.und.edu/saudisummer2023/project/index.html) * The Missions page displays all project missions and all content underneath them; clicking on a mission row expands it to display mission flights, reports, uploads, and mission flight uploads; if this is too complex I can split this into separate pages (like http://catalog.atmos.und.edu/saudisummer2023/reports/index.html and http://catalog.atmos.und.edu/saudisummer2023/aircraft/index.html, or some other configuration; mission flights could also have separate pages if desired) * The Users page displays all users with permissions in the project, and is available to project admin users * The Upload Types page displays all project upload types, and is available to project admin users * A Project Info page could be created for updating the project (available to project admin users) if desired * If a user has project write permission an “Add Page” button is at the bottom of the sidenav and allows the user to create a new page; additionally there are “pencil” and “trash” icon buttons next to pages in the sidenav if they can be edited/deleted * If a user has project write permission, they are able to create/edit uploads, etc. on the Uploads and Missions pages ===== Manual Flight Uploads =====