From f5a1e21cba93a24e5e669eb7a6e196c09ab5aa23 Mon Sep 17 00:00:00 2001 From: Lin-April Date: Wed, 19 Mar 2025 11:37:05 -0700 Subject: [PATCH 1/6] Create idea_april_lin_api_explorer.md --- .../2025/gsoc/idea_april_lin_api_explorer.md | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md diff --git a/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md b/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md new file mode 100644 index 00000000..8aa32864 --- /dev/null +++ b/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md @@ -0,0 +1,118 @@ +### Initial Idea Submission + +**Full Name:** April Lin +**University Name:** University of Illinois Urbana-Champaign +**Program (Degree & Major/Minor):** Master in Electrical and Computer Engineering +**Year:** first year +**Expected Graduation Date:** 2026 + +**Project Title:** API Explorer +**Relevant Issues:** [https://github.com/foss42/apidash/issues/619](https://github.com/foss42/apidash/issues/619) + +**Idea Description:** + +I have divided the design of the API explorer into three major steps: + +1. **Designing the UI** +2. **Designing the API template model** +3. **Using AI tools to automatically extract API information from a given website** + +--- + +## 1. UI Design (User Journey) + +In this step, I primarily designed two interfaces for the API explorer: the first is the main API Explorer interface, and the second is a detailed interface for each API template. + +### API Explorer +![api explorer](images/API_Explorer_Main.png) +1. **Accessing the API Explorer** + - In the left-hand sidebar, users will find an “API Explorer” icon. + - Clicking this icon reveals the main API template search interface on the right side of the screen. + +2. **Browsing API Templates** + - At the top of the main area, there is a search bar that supports fuzzy matching by API name. + - Directly beneath the search bar are category filters (e.g., AI, Finance, Web3, Social Media). + - Users can click “More” to view an expanded list of all available categories. + - The page displays each template in a **card layout**, showing the API’s name, a short description, and (optionally) an image or icon. + +### API Templates +![api explorer](images/API_Explorer_Template.png) +1. **Selecting a Template** + - When a user clicks on a card (for example, **OpenAI**), they navigate to a dedicated page for that API template. + - This page lists all the available API endpoints or methods in a collapsible/expandable format (e.g., “API name 2,” “API name 3,” etc.). + - Each listed endpoint describes what it does—users can select which methods they want to explore or import into their workspace. + +2. **Exploring an API Method** + - Within this detailed view, users see request details such as **HTTP method**, **path**, **headers**, **body**, and **sample response**. + - If the user wants to try out an endpoint, they can import it into their API collections by clicking **import**. + - Each method will include all the fields parsed through the automated process. For the detailed API field design, please refer to **Step Two**. + +--- + +## 2. Updated Table Design + +Below is the model design for the API explorer. + +### **Base Table: `api_templates`** +- **Purpose:** + Stores the common properties for all API templates, regardless of their type. + +- **Key Fields:** + - **id**: + - Primary key (integer or UUID) for unique identification. + - **name**: + - The API name (e.g., “OpenAI”). + - **api_type**: + - Enumerated string indicating the API type (e.g., `restful`, `graphql`, `soap`, `grpc`, `sse`, `websocket`). + - **base_url**: + - The base URL or service address (applicable for HTTP-based APIs and used as host:port for gRPC). + - **image**: + - A text or string field that references an image (URL or path) representing the API’s logo or icon. + - **category**: + - A field (array or string) used for search and classification (e.g., "finance", "ai", "devtool"). + - **description**: + - Textual description of the API’s purpose and functionality. + +### **RESTful & GraphQL Methods Table: `api_methods`** +- **Purpose:** + Manages detailed configurations for individual API requests/methods, specifically tailored for RESTful and GraphQL APIs. + +- **Key Fields:** + - **id**: + - Primary key (UUID). + - **template_id**: + - Foreign key linking back to `api_templates`. + - **method_type**: + - The HTTP method (e.g., `GET`, `POST`, `PUT`, `DELETE`) or the operation type (`query`, `mutation` for GraphQL). + - **method_name**: + - A human-readable name for the method (e.g., “Get User List,” “Create Order”). + - **url_path**: + - The relative path appended to the `base_url` (for RESTful APIs). + - **description**: + - Detailed explanation of the method’s functionality. + - **headers**: + - A JSON field storing default header configurations (e.g., `Content-Type`, `Authorization`). + - **authentication**: + - A JSON field for storing default authentication details (e.g., Bearer Token, Basic Auth). + - **query_params**: + - A JSON field for any default query parameters (optional, typically for RESTful requests). + - **body**: + - A JSON field containing the default request payload, including required fields and default values. + - **sample_response**: + - A JSON field providing an example of the expected response for testing/validation. + +--- + +## 3. Automated Extraction (Parser Design) + +I think there are two ways to design the automated pipeline: the first is to use AI tools for automated parsing, and the second is to employ a rule-based approach. + +### **AI-Based Parser** +- For each parser type (OpenAPI, HTML, Markdown), design a dedicated prompt agent to parse the API methods. +- The prompt includes model fields (matching the data structures from [Step Two](#2-updated-table-design)) and the required API category, along with the API URL to be parsed. +- The AI model is instructed to output the parsed result in **JSON format**, aligned with the schema defined in `api_templates` and `api_methods`. + +### **Non-AI (Rule-Based) Parser** +- **OpenAPI**: Use existing libraries (e.g., Swagger/OpenAPI parser libraries) to read and interpret JSON or YAML specs. +- **HTML**: Perform DOM-based parsing or use regex patterns to identify endpoints, parameter names, and descriptions. +- **Markdown**: Utilize Markdown parsers (e.g., remark, markdown-it) to convert the text into a syntax tree and extract relevant sections. From f58b33ad16f1d13ae854e078ddd0a4a4d41beed2 Mon Sep 17 00:00:00 2001 From: Lin-April Date: Wed, 19 Mar 2025 11:40:06 -0700 Subject: [PATCH 2/6] docs: add UI images --- .../2025/gsoc/images/Api_Explorer_Main.png | Bin 0 -> 65032 bytes .../2025/gsoc/images/Api_Explorer_Template.png | Bin 0 -> 43588 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/proposals/2025/gsoc/images/Api_Explorer_Main.png create mode 100644 doc/proposals/2025/gsoc/images/Api_Explorer_Template.png diff --git a/doc/proposals/2025/gsoc/images/Api_Explorer_Main.png b/doc/proposals/2025/gsoc/images/Api_Explorer_Main.png new file mode 100644 index 0000000000000000000000000000000000000000..c802a50f49c8151646a4b6e50c1791b0645eee79 GIT binary patch literal 65032 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 T;AtlfmC4T9;drT~=biropZ?zP literal 0 HcmV?d00001 diff --git a/doc/proposals/2025/gsoc/images/Api_Explorer_Template.png b/doc/proposals/2025/gsoc/images/Api_Explorer_Template.png new file mode 100644 index 0000000000000000000000000000000000000000..4c967b735a99fdf2833218d7afc94f9cfda6f673 GIT binary patch literal 43588 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 Date: Wed, 19 Mar 2025 11:49:15 -0700 Subject: [PATCH 3/6] Rename Api_Explorer_Main.png to API_Explorer_Main.png --- ...{Api_Explorer_Main.png => API_Explorer_Main.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/proposals/2025/gsoc/images/{Api_Explorer_Main.png => API_Explorer_Main.png} (100%) diff --git a/doc/proposals/2025/gsoc/images/Api_Explorer_Main.png b/doc/proposals/2025/gsoc/images/API_Explorer_Main.png similarity index 100% rename from doc/proposals/2025/gsoc/images/Api_Explorer_Main.png rename to doc/proposals/2025/gsoc/images/API_Explorer_Main.png From 071a08b715b73c3eebe865cd3cf88d31e6e24750 Mon Sep 17 00:00:00 2001 From: Lin-April Date: Wed, 19 Mar 2025 11:49:26 -0700 Subject: [PATCH 4/6] Rename Api_Explorer_Template.png to API_Explorer_Template.png --- ...lorer_Template.png => API_Explorer_Template.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/proposals/2025/gsoc/images/{Api_Explorer_Template.png => API_Explorer_Template.png} (100%) diff --git a/doc/proposals/2025/gsoc/images/Api_Explorer_Template.png b/doc/proposals/2025/gsoc/images/API_Explorer_Template.png similarity index 100% rename from doc/proposals/2025/gsoc/images/Api_Explorer_Template.png rename to doc/proposals/2025/gsoc/images/API_Explorer_Template.png From d884b814dde1dc7fbbd4b79cc2181153e7f6f1e7 Mon Sep 17 00:00:00 2001 From: Lin-April Date: Wed, 19 Mar 2025 11:50:38 -0700 Subject: [PATCH 5/6] Update idea_april_lin_api_explorer.md --- doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md b/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md index 8aa32864..1dfcd619 100644 --- a/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md +++ b/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md @@ -1,8 +1,8 @@ ### Initial Idea Submission **Full Name:** April Lin -**University Name:** University of Illinois Urbana-Champaign -**Program (Degree & Major/Minor):** Master in Electrical and Computer Engineering +**University Name:** University of Illinois Urbana-Champaign +**Program (Degree & Major/Minor):** Master in Electrical and Computer Engineering **Year:** first year **Expected Graduation Date:** 2026 From 2396b4f46964ef949d53e11aba1549bdf4db7f05 Mon Sep 17 00:00:00 2001 From: Lin-April Date: Wed, 19 Mar 2025 12:30:51 -0700 Subject: [PATCH 6/6] docs: add question for proposal --- .../2025/gsoc/idea_april_lin_api_explorer.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md b/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md index 1dfcd619..2fc205e2 100644 --- a/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md +++ b/doc/proposals/2025/gsoc/idea_april_lin_api_explorer.md @@ -116,3 +116,14 @@ I think there are two ways to design the automated pipeline: the first is to use - **OpenAPI**: Use existing libraries (e.g., Swagger/OpenAPI parser libraries) to read and interpret JSON or YAML specs. - **HTML**: Perform DOM-based parsing or use regex patterns to identify endpoints, parameter names, and descriptions. - **Markdown**: Utilize Markdown parsers (e.g., remark, markdown-it) to convert the text into a syntax tree and extract relevant sections. + +## Questions + +1. **Database Selection** + - Which type of database should be used for storing API templates and methods? Are there any specific constraints or preferences (e.g., relational vs. NoSQL, performance requirements, ease of integration) we should consider? + +2. **Priority of Automated Parsing** + - What is the preferred approach for automated parsing of OpenAPI/HTML files? Would an AI-based parsing solution be acceptable, or should we prioritize rule-based methods for reliability and simplicity? + +3. **UI Interaction Flow** + - Can I add a dedicated “api explorer” menu in the left navigation bar for api explorer?