Skip to content

Commit 864dbe5

Browse files
committed
Swagger UI Added
1 parent 626eddf commit 864dbe5

35 files changed

+823
-9
lines changed

backend/app.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,19 @@
1818
from routes.t5_base import t5_base_bp
1919
from routes.admin import admin_bp
2020

21+
from flasgger import Swagger
22+
from utils.api_spec import swagger_template, swagger_config
23+
2124
# Load environment variables
2225
load_dotenv()
2326

2427
app = Flask(__name__)
2528
CORS(app)
2629
bcrypt = Bcrypt(app)
2730

31+
# Initialize Swagger
32+
swagger = Swagger(app, template=swagger_template,config=swagger_config)
33+
2834
# JWT configuration
2935
app.config["JWT_SECRET_KEY"] = os.getenv("JWT_SECRET_KEY")
3036
if not app.config["JWT_SECRET_KEY"]:

backend/requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@ google-generativeai
1818
transformers
1919
torch
2020
flask_sqlalchemy
21+
flasgger
22+
apispec-pydantic-plugin

backend/routes/History.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
from schemas.history_dto import ScanHistoryResponse, HistoryErrorResponse
44
import logging
55

6+
from flasgger import swag_from
67
history_bp = Blueprint("history", __name__)
78
logger = logging.getLogger(__name__)
89

910
@history_bp.route("/history", methods=["GET"])
11+
@swag_from("../specs/history_specs.yml")
1012
def get_scan_history_route():
1113
user_id = request.headers.get("X-User-ID")
1214
scan_type = request.args.get("scan_type")

backend/routes/admin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
from schemas.admin_dto import AdminStatsResponse
55
from pydantic import ValidationError
66

7+
from flasgger import swag_from
78
admin_bp = Blueprint("admin", __name__)
89

910
@admin_bp.route("/api/admin-stats", methods=["GET"])
1011
@jwt_required()
12+
@swag_from("../specs/admin_specs.yml")
1113
def get_admin_stats_route():
1214
try:
1315
user_id = get_jwt_identity()

backend/routes/checkov.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import os
66
import logging
77

8+
from flasgger import swag_from
89
checkov_bp = Blueprint("checkov", __name__)
910

1011
# Configure upload folder
@@ -15,6 +16,7 @@
1516
logger = logging.getLogger(__name__)
1617

1718
@checkov_bp.route("/checkov", methods=["POST"])
19+
@swag_from("../specs/checkov_specs.yml")
1820
def validate():
1921
try:
2022
user_id = request.headers.get("X-User-ID") or (request.json and request.json.get("user_id"))

backend/routes/dashboard_routes.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22
from services.dashboard_service import get_user_stats
33
from schemas.dashboard_dto import DashboardStatsResponse, DashboardErrorResponse
44

5+
from flasgger import swag_from
6+
57
dashboard_bp = Blueprint("dashboard", __name__)
68

79
@dashboard_bp.route("/stats", methods=["GET"])
10+
@swag_from("../specs/dashboard_specs.yml")
811
def get_stats():
912
user_id = request.headers.get("X-User-ID")
1013
if not user_id:

backend/routes/full_scan_routes.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
from pydantic import ValidationError
66
import logging
77

8+
from flasgger import swag_from
89
full_scan_bp = Blueprint("full_scan", __name__)
910
logger = logging.getLogger(__name__)
1011

1112
@full_scan_bp.route("/full-scan", methods=["POST"])
1213
@jwt_required()
14+
@swag_from("../specs/full_scan_specs.yml")
1315
def full_scan():
1416
try:
1517
data = FullScanRequest(**request.get_json())

backend/routes/github_routes.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
from pydantic import ValidationError
66
import logging
77

8+
from flasgger import swag_from
89
github_bp = Blueprint("github", __name__)
910
logger = logging.getLogger(__name__)
1011

1112
@github_bp.route("/auth/github")
13+
@swag_from("../specs/github/auth_github_specs.yml")
1214
def github_login_route():
1315
try:
1416
auth_url = github_login()
@@ -18,6 +20,7 @@ def github_login_route():
1820
return jsonify(GithubErrorResponse(error=str(e)).dict()), 400
1921

2022
@github_bp.route("/auth/github/callback")
23+
@swag_from("../specs/github/auth_github_callback_specs.yml")
2124
def github_callback_route():
2225
try:
2326
code = request.args.get("code")
@@ -32,6 +35,7 @@ def github_callback_route():
3235

3336
@github_bp.route("/github/repos", methods=["GET"])
3437
@jwt_required()
38+
@swag_from("../specs/github/github_repos_specs.yml")
3539
def get_github_repos_route():
3640
try:
3741
user_id = get_jwt_identity()
@@ -46,6 +50,7 @@ def get_github_repos_route():
4650

4751
@github_bp.route("/github/validate-token", methods=["POST"])
4852
@jwt_required()
53+
@swag_from("../specs/github/github_validate_token_specs.yml")
4954
def validate_github_token_route():
5055
try:
5156
user_id = get_jwt_identity()
@@ -64,6 +69,7 @@ def validate_github_token_route():
6469

6570
@github_bp.route("/github/save-repos", methods=["POST"])
6671
@jwt_required()
72+
@swag_from("../specs/github/github_save_repos_specs.yml")
6773
def save_selected_repos_route():
6874
try:
6975
user_id = get_jwt_identity()
@@ -88,6 +94,7 @@ def save_selected_repos_route():
8894

8995
@github_bp.route("/github/repo-configs", methods=["GET"])
9096
@jwt_required()
97+
@swag_from("../specs/github/github_repo_configs_specs.yml")
9198
def get_repo_configs_route():
9299
try:
93100
user_id = get_jwt_identity()

backend/routes/google_routes.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
from schemas.google_dto import GoogleAuthResponse, GoogleCallbackResponse, GoogleErrorResponse
44
import logging
55

6+
from flasgger import swag_from
67
google_bp = Blueprint("google", __name__)
78
logger = logging.getLogger(__name__)
89

910
@google_bp.route("/auth/google", methods=["GET"])
11+
@swag_from("../specs/google/auth_google_specs.yml")
1012
def google_login_route():
1113
try:
1214
auth_url = google_login()
@@ -16,6 +18,7 @@ def google_login_route():
1618
return jsonify(GoogleErrorResponse(error=str(e)).dict()), 400
1719

1820
@google_bp.route("/auth/google/callback", methods=["GET"])
21+
@swag_from("../specs/google/auth_google_callback_specs.yml")
1922
def google_callback_route():
2023
try:
2124
code = request.args.get("code")

backend/routes/risks.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
from schemas.risks_dto import RisksResponse, RisksErrorResponse
44
import logging
55

6+
from flasgger import swag_from
67
risks_bp = Blueprint("risks", __name__)
78
logger = logging.getLogger(__name__)
89

910
@risks_bp.route("/risks", methods=["GET"])
11+
@swag_from("../specs/risks_specs.yml")
1012
def get_risks_route():
1113
user_id = request.headers.get("X-User-ID")
1214
try:

0 commit comments

Comments
 (0)