Commit f89bdfdb authored by ThinhNC's avatar ThinhNC

docs(swagger): regenerate and sync openapi 3.0 swagger specification

parent f9b7f6d5
...@@ -83,7 +83,9 @@ ...@@ -83,7 +83,9 @@
"description": "Email hoặc mật khẩu không chính xác" "description": "Email hoặc mật khẩu không chính xác"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Đăng nhập người dùng", "summary": "Đăng nhập người dùng",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -139,7 +141,9 @@ ...@@ -139,7 +141,9 @@
} }
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Làm mới Access Token" "summary": "Làm mới Access Token"
} }
}, },
...@@ -178,7 +182,9 @@ ...@@ -178,7 +182,9 @@
} }
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Đăng xuất" "summary": "Đăng xuất"
} }
}, },
...@@ -209,7 +215,9 @@ ...@@ -209,7 +215,9 @@
"description": "Chưa xác thực hoặc token không hợp lệ" "description": "Chưa xác thực hoặc token không hợp lệ"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Lấy thông tin người dùng hiện tại" "summary": "Lấy thông tin người dùng hiện tại"
}, },
"put": { "put": {
...@@ -241,7 +249,9 @@ ...@@ -241,7 +249,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Cập nhật thông tin cá nhân", "summary": "Cập nhật thông tin cá nhân",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -338,7 +348,9 @@ ...@@ -338,7 +348,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Xem hạn mức và mức độ sử dụng Quota hiện tại" "summary": "Xem hạn mức và mức độ sử dụng Quota hiện tại"
} }
}, },
...@@ -403,7 +415,9 @@ ...@@ -403,7 +415,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Đổi mật khẩu tài khoản", "summary": "Đổi mật khẩu tài khoản",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -444,7 +458,9 @@ ...@@ -444,7 +458,9 @@
"description": "Email đã được sử dụng hoặc dữ liệu không hợp lệ" "description": "Email đã được sử dụng hoặc dữ liệu không hợp lệ"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Đăng ký tài khoản mới", "summary": "Đăng ký tài khoản mới",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -486,7 +502,9 @@ ...@@ -486,7 +502,9 @@
"description": "Email không hợp lệ" "description": "Email không hợp lệ"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Yêu cầu đặt lại mật khẩu", "summary": "Yêu cầu đặt lại mật khẩu",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -494,7 +512,9 @@ ...@@ -494,7 +512,9 @@
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"required": ["email"], "required": [
"email"
],
"properties": { "properties": {
"email": { "email": {
"type": "string", "type": "string",
...@@ -536,7 +556,9 @@ ...@@ -536,7 +556,9 @@
"description": "Token không hợp lệ, đã hết hạn hoặc mật khẩu không đúng định dạng" "description": "Token không hợp lệ, đã hết hạn hoặc mật khẩu không đúng định dạng"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Đặt lại mật khẩu mới", "summary": "Đặt lại mật khẩu mới",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -544,7 +566,10 @@ ...@@ -544,7 +566,10 @@
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"required": ["token", "password"], "required": [
"token",
"password"
],
"properties": { "properties": {
"token": { "token": {
"type": "string", "type": "string",
...@@ -589,7 +614,9 @@ ...@@ -589,7 +614,9 @@
"description": "Địa chỉ email không hợp lệ" "description": "Địa chỉ email không hợp lệ"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Gửi lại email xác thực", "summary": "Gửi lại email xác thực",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -631,7 +658,9 @@ ...@@ -631,7 +658,9 @@
"description": "Token không hợp lệ hoặc đã hết hạn" "description": "Token không hợp lệ hoặc đã hết hạn"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Xác thực địa chỉ email", "summary": "Xác thực địa chỉ email",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -639,7 +668,9 @@ ...@@ -639,7 +668,9 @@
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"required": ["token"], "required": [
"token"
],
"properties": { "properties": {
"token": { "token": {
"type": "string", "type": "string",
...@@ -683,7 +714,9 @@ ...@@ -683,7 +714,9 @@
"description": "Chưa xác thực hoặc mật khẩu không chính xác" "description": "Chưa xác thực hoặc mật khẩu không chính xác"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Yêu cầu vô hiệu hóa tài khoản", "summary": "Yêu cầu vô hiệu hóa tài khoản",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -725,7 +758,9 @@ ...@@ -725,7 +758,9 @@
"description": "Mã xác nhận không hợp lệ, đã hết hạn hoặc tài khoản đã bị vô hiệu hóa" "description": "Mã xác nhận không hợp lệ, đã hết hạn hoặc tài khoản đã bị vô hiệu hóa"
} }
}, },
"tags": ["Auth"], "tags": [
"Auth"
],
"summary": "Xác nhận vô hiệu hóa tài khoản", "summary": "Xác nhận vô hiệu hóa tài khoản",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -822,7 +857,9 @@ ...@@ -822,7 +857,9 @@
"description": "Không có quyền truy cập" "description": "Không có quyền truy cập"
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Lấy danh sách người dùng" "summary": "Lấy danh sách người dùng"
}, },
"post": { "post": {
...@@ -867,7 +904,9 @@ ...@@ -867,7 +904,9 @@
} }
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Tạo người dùng mới" "summary": "Tạo người dùng mới"
} }
}, },
...@@ -915,7 +954,9 @@ ...@@ -915,7 +954,9 @@
"description": "Không tìm thấy người dùng" "description": "Không tìm thấy người dùng"
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Lấy thông tin người dùng theo ID" "summary": "Lấy thông tin người dùng theo ID"
}, },
"put": { "put": {
...@@ -968,7 +1009,9 @@ ...@@ -968,7 +1009,9 @@
} }
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Cập nhật thông tin người dùng" "summary": "Cập nhật thông tin người dùng"
}, },
"delete": { "delete": {
...@@ -1009,7 +1052,9 @@ ...@@ -1009,7 +1052,9 @@
"description": "Không tìm thấy người dùng" "description": "Không tìm thấy người dùng"
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Xóa người dùng" "summary": "Xóa người dùng"
} }
}, },
...@@ -1038,7 +1083,9 @@ ...@@ -1038,7 +1083,9 @@
"description": "Không có quyền users.roles.read" "description": "Không có quyền users.roles.read"
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Xem Roles của User" "summary": "Xem Roles của User"
}, },
"put": { "put": {
...@@ -1071,7 +1118,9 @@ ...@@ -1071,7 +1118,9 @@
"description": "Không tìm thấy User hoặc Role" "description": "Không tìm thấy User hoặc Role"
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Cập nhật toàn bộ Roles của User", "summary": "Cập nhật toàn bộ Roles của User",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -1122,7 +1171,9 @@ ...@@ -1122,7 +1171,9 @@
"description": "Không tìm thấy User hoặc Role" "description": "Không tìm thấy User hoặc Role"
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Gán thêm một Role cho User" "summary": "Gán thêm một Role cho User"
}, },
"delete": { "delete": {
...@@ -1164,7 +1215,9 @@ ...@@ -1164,7 +1215,9 @@
"description": "Không tìm thấy User hoặc Role" "description": "Không tìm thấy User hoặc Role"
} }
}, },
"tags": ["Users"], "tags": [
"Users"
],
"summary": "Gỡ một Role khỏi User" "summary": "Gỡ một Role khỏi User"
} }
}, },
...@@ -1221,7 +1274,9 @@ ...@@ -1221,7 +1274,9 @@
"description": "Không có quyền roles.read" "description": "Không có quyền roles.read"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Danh sách Roles" "summary": "Danh sách Roles"
}, },
"post": { "post": {
...@@ -1243,7 +1298,9 @@ ...@@ -1243,7 +1298,9 @@
"description": "Role slug đã tồn tại" "description": "Role slug đã tồn tại"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Tạo Role tùy chỉnh", "summary": "Tạo Role tùy chỉnh",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -1285,7 +1342,9 @@ ...@@ -1285,7 +1342,9 @@
"description": "Không tìm thấy Role" "description": "Không tìm thấy Role"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Chi tiết Role" "summary": "Chi tiết Role"
}, },
"patch": { "patch": {
...@@ -1318,7 +1377,9 @@ ...@@ -1318,7 +1377,9 @@
"description": "Không tìm thấy Role" "description": "Không tìm thấy Role"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Cập nhật Role", "summary": "Cập nhật Role",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -1361,7 +1422,9 @@ ...@@ -1361,7 +1422,9 @@
"description": "Không tìm thấy Role" "description": "Không tìm thấy Role"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Xóa Role" "summary": "Xóa Role"
} }
}, },
...@@ -1393,7 +1456,9 @@ ...@@ -1393,7 +1456,9 @@
"description": "Không tìm thấy Role" "description": "Không tìm thấy Role"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Xem danh sách Permissions của Role" "summary": "Xem danh sách Permissions của Role"
}, },
"put": { "put": {
...@@ -1423,7 +1488,9 @@ ...@@ -1423,7 +1488,9 @@
"description": "Không tìm thấy Role" "description": "Không tìm thấy Role"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Gán danh sách Permissions cho Role", "summary": "Gán danh sách Permissions cho Role",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -1462,7 +1529,9 @@ ...@@ -1462,7 +1529,9 @@
"description": "Không có quyền roles.read" "description": "Không có quyền roles.read"
} }
}, },
"tags": ["Roles"], "tags": [
"Roles"
],
"summary": "Danh sách Users thuộc Role" "summary": "Danh sách Users thuộc Role"
} }
}, },
...@@ -1496,7 +1565,9 @@ ...@@ -1496,7 +1565,9 @@
"description": "Không có quyền permissions.read" "description": "Không có quyền permissions.read"
} }
}, },
"tags": ["Permissions"], "tags": [
"Permissions"
],
"summary": "Danh mục Permissions hệ thống" "summary": "Danh mục Permissions hệ thống"
} }
}, },
...@@ -1528,7 +1599,9 @@ ...@@ -1528,7 +1599,9 @@
"description": "Không tìm thấy Permission" "description": "Không tìm thấy Permission"
} }
}, },
"tags": ["Permissions"], "tags": [
"Permissions"
],
"summary": "Chi tiết Permission" "summary": "Chi tiết Permission"
} }
}, },
...@@ -1581,7 +1654,9 @@ ...@@ -1581,7 +1654,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Tạo crawl job mới", "summary": "Tạo crawl job mới",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -1670,7 +1745,9 @@ ...@@ -1670,7 +1745,9 @@
} }
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Lấy danh sách các crawl jobs" "summary": "Lấy danh sách các crawl jobs"
} }
}, },
...@@ -1712,7 +1789,9 @@ ...@@ -1712,7 +1789,9 @@
"description": "Không tìm thấy crawl job hoặc không có quyền truy cập" "description": "Không tìm thấy crawl job hoặc không có quyền truy cập"
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Lấy thông tin chi tiết một crawl job" "summary": "Lấy thông tin chi tiết một crawl job"
}, },
"delete": { "delete": {
...@@ -1863,7 +1942,9 @@ ...@@ -1863,7 +1942,9 @@
"description": "Không tìm thấy crawl job" "description": "Không tìm thấy crawl job"
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Hủy một crawl job đang chạy" "summary": "Hủy một crawl job đang chạy"
} }
}, },
...@@ -2067,7 +2148,10 @@ ...@@ -2067,7 +2148,10 @@
"in": "query", "in": "query",
"schema": { "schema": {
"type": "string", "type": "string",
"enum": ["asc", "desc"], "enum": [
"asc",
"desc"
],
"default": "asc" "default": "asc"
}, },
"description": "Thứ tự sắp xếp" "description": "Thứ tự sắp xếp"
...@@ -2128,7 +2212,9 @@ ...@@ -2128,7 +2212,9 @@
} }
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Lấy danh sách các trang đã crawl của job" "summary": "Lấy danh sách các trang đã crawl của job"
} }
}, },
...@@ -2332,7 +2418,10 @@ ...@@ -2332,7 +2418,10 @@
"in": "query", "in": "query",
"schema": { "schema": {
"type": "string", "type": "string",
"enum": ["asc", "desc"], "enum": [
"asc",
"desc"
],
"default": "asc" "default": "asc"
}, },
"description": "Thứ tự sắp xếp" "description": "Thứ tự sắp xếp"
...@@ -2467,7 +2556,9 @@ ...@@ -2467,7 +2556,9 @@
"description": "Không tìm thấy crawl job hoặc không có quyền truy cập" "description": "Không tìm thấy crawl job hoặc không có quyền truy cập"
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Xem preview dữ liệu clean/raw của các trang đã crawl" "summary": "Xem preview dữ liệu clean/raw của các trang đã crawl"
} }
}, },
...@@ -2509,7 +2600,9 @@ ...@@ -2509,7 +2600,9 @@
} }
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Lấy danh sách các bản export của job" "summary": "Lấy danh sách các bản export của job"
}, },
"post": { "post": {
...@@ -2546,7 +2639,9 @@ ...@@ -2546,7 +2639,9 @@
} }
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Yêu cầu xuất dữ liệu cho job", "summary": "Yêu cầu xuất dữ liệu cho job",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -2585,7 +2680,9 @@ ...@@ -2585,7 +2680,9 @@
} }
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Tải xuống file export mới nhất" "summary": "Tải xuống file export mới nhất"
} }
}, },
...@@ -2626,7 +2723,14 @@ ...@@ -2626,7 +2723,14 @@
"required": false, "required": false,
"schema": { "schema": {
"type": "string", "type": "string",
"enum": ["IMAGE", "LINK", "PDF", "FILE", "VIDEO", "OTHER"] "enum": [
"IMAGE",
"LINK",
"PDF",
"FILE",
"VIDEO",
"OTHER"
]
}, },
"description": "Lọc theo loại asset" "description": "Lọc theo loại asset"
} }
...@@ -2718,7 +2822,9 @@ ...@@ -2718,7 +2822,9 @@
"description": "Không tìm thấy crawl job hoặc không có quyền truy cập" "description": "Không tìm thấy crawl job hoặc không có quyền truy cập"
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Lấy danh sách assets của job (có phân trang)" "summary": "Lấy danh sách assets của job (có phân trang)"
} }
}, },
...@@ -2771,7 +2877,9 @@ ...@@ -2771,7 +2877,9 @@
"description": "Không tìm thấy crawl job" "description": "Không tìm thấy crawl job"
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Xem báo cáo thay đổi (Diff Report)" "summary": "Xem báo cáo thay đổi (Diff Report)"
} }
}, },
...@@ -2816,7 +2924,9 @@ ...@@ -2816,7 +2924,9 @@
"description": "Không tìm thấy crawl job hoặc diff report" "description": "Không tìm thấy crawl job hoặc diff report"
} }
}, },
"tags": ["Crawl Jobs"], "tags": [
"Crawl Jobs"
],
"summary": "Tải file diff_report.json" "summary": "Tải file diff_report.json"
} }
}, },
...@@ -2858,7 +2968,9 @@ ...@@ -2858,7 +2968,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Crawl Schedules"], "tags": [
"Crawl Schedules"
],
"summary": "Tạo lịch crawl định kỳ mới", "summary": "Tạo lịch crawl định kỳ mới",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -2887,7 +2999,12 @@ ...@@ -2887,7 +2999,12 @@
"in": "query", "in": "query",
"schema": { "schema": {
"type": "string", "type": "string",
"enum": ["DAILY", "WEEKLY", "MONTHLY", "CUSTOM"] "enum": [
"DAILY",
"WEEKLY",
"MONTHLY",
"CUSTOM"
]
}, },
"description": "Lọc theo tần suất" "description": "Lọc theo tần suất"
}, },
...@@ -2956,7 +3073,9 @@ ...@@ -2956,7 +3073,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Crawl Schedules"], "tags": [
"Crawl Schedules"
],
"summary": "Lấy danh sách lịch crawl định kỳ" "summary": "Lấy danh sách lịch crawl định kỳ"
} }
}, },
...@@ -2992,7 +3111,9 @@ ...@@ -2992,7 +3111,9 @@
"description": "Không tìm thấy lịch crawl" "description": "Không tìm thấy lịch crawl"
} }
}, },
"tags": ["Crawl Schedules"], "tags": [
"Crawl Schedules"
],
"summary": "Xem chi tiết lịch crawl" "summary": "Xem chi tiết lịch crawl"
}, },
"patch": { "patch": {
...@@ -3037,7 +3158,9 @@ ...@@ -3037,7 +3158,9 @@
"description": "Không tìm thấy lịch crawl" "description": "Không tìm thấy lịch crawl"
} }
}, },
"tags": ["Crawl Schedules"], "tags": [
"Crawl Schedules"
],
"summary": "Cập nhật lịch crawl", "summary": "Cập nhật lịch crawl",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -3087,7 +3210,9 @@ ...@@ -3087,7 +3210,9 @@
"description": "Không tìm thấy lịch crawl" "description": "Không tìm thấy lịch crawl"
} }
}, },
"tags": ["Crawl Schedules"], "tags": [
"Crawl Schedules"
],
"summary": "Xóa lịch crawl" "summary": "Xóa lịch crawl"
} }
}, },
...@@ -3132,7 +3257,9 @@ ...@@ -3132,7 +3257,9 @@
"description": "Không tìm thấy lịch crawl" "description": "Không tìm thấy lịch crawl"
} }
}, },
"tags": ["Crawl Schedules"], "tags": [
"Crawl Schedules"
],
"summary": "Kích hoạt chạy ngay lịch crawl" "summary": "Kích hoạt chạy ngay lịch crawl"
} }
}, },
...@@ -3209,7 +3336,9 @@ ...@@ -3209,7 +3336,9 @@
"description": "Không tìm thấy lịch crawl" "description": "Không tìm thấy lịch crawl"
} }
}, },
"tags": ["Crawl Schedules"], "tags": [
"Crawl Schedules"
],
"summary": "Xem lịch sử các lần chạy của lịch crawl" "summary": "Xem lịch sử các lần chạy của lịch crawl"
} }
}, },
...@@ -3251,7 +3380,9 @@ ...@@ -3251,7 +3380,9 @@
"description": "Không tìm thấy file export" "description": "Không tìm thấy file export"
} }
}, },
"tags": ["Crawl Exports"], "tags": [
"Crawl Exports"
],
"summary": "Tải xuống tệp export theo ID" "summary": "Tải xuống tệp export theo ID"
} }
}, },
...@@ -3389,7 +3520,9 @@ ...@@ -3389,7 +3520,9 @@
"description": "Không có quyền truy cập (không phải ADMIN)" "description": "Không có quyền truy cập (không phải ADMIN)"
} }
}, },
"tags": ["Audit Logs"], "tags": [
"Audit Logs"
],
"summary": "Lấy danh sách nhật ký hệ thống" "summary": "Lấy danh sách nhật ký hệ thống"
} }
}, },
...@@ -3423,7 +3556,9 @@ ...@@ -3423,7 +3556,9 @@
"description": "Dữ liệu không hợp lệ hoặc thời điểm hết hạn không ở trong tương lai" "description": "Dữ liệu không hợp lệ hoặc thời điểm hết hạn không ở trong tương lai"
} }
}, },
"tags": ["API Keys"], "tags": [
"API Keys"
],
"security": [ "security": [
{ {
"BearerAuth": [] "BearerAuth": []
...@@ -3470,7 +3605,9 @@ ...@@ -3470,7 +3605,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["API Keys"], "tags": [
"API Keys"
],
"security": [ "security": [
{ {
"BearerAuth": [] "BearerAuth": []
...@@ -3524,7 +3661,9 @@ ...@@ -3524,7 +3661,9 @@
"description": "Trạng thái không hợp lệ" "description": "Trạng thái không hợp lệ"
} }
}, },
"tags": ["API Keys"], "tags": [
"API Keys"
],
"security": [ "security": [
{ {
"BearerAuth": [] "BearerAuth": []
...@@ -3583,7 +3722,9 @@ ...@@ -3583,7 +3722,9 @@
"description": "Không tìm thấy API Key" "description": "Không tìm thấy API Key"
} }
}, },
"tags": ["API Keys"], "tags": [
"API Keys"
],
"security": [ "security": [
{ {
"BearerAuth": [] "BearerAuth": []
...@@ -3622,7 +3763,9 @@ ...@@ -3622,7 +3763,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Webhooks"], "tags": [
"Webhooks"
],
"summary": "Tạo cấu hình Webhook", "summary": "Tạo cấu hình Webhook",
"requestBody": { "requestBody": {
"required": true, "required": true,
...@@ -3664,7 +3807,9 @@ ...@@ -3664,7 +3807,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Webhooks"], "tags": [
"Webhooks"
],
"summary": "Xem danh sách Webhook configs" "summary": "Xem danh sách Webhook configs"
} }
}, },
...@@ -3727,7 +3872,9 @@ ...@@ -3727,7 +3872,9 @@
"description": "Không tìm thấy cấu hình Webhook" "description": "Không tìm thấy cấu hình Webhook"
} }
}, },
"tags": ["Webhooks"], "tags": [
"Webhooks"
],
"summary": "Xóa cấu hình Webhook" "summary": "Xóa cấu hình Webhook"
} }
}, },
...@@ -3799,7 +3946,9 @@ ...@@ -3799,7 +3946,9 @@
"description": "Chưa xác thực" "description": "Chưa xác thực"
} }
}, },
"tags": ["Webhooks"], "tags": [
"Webhooks"
],
"summary": "Xem lịch sử gửi Webhook" "summary": "Xem lịch sử gửi Webhook"
} }
}, },
...@@ -3930,7 +4079,11 @@ ...@@ -3930,7 +4079,11 @@
}, },
"role": { "role": {
"type": "string", "type": "string",
"enum": ["ADMIN", "CRAWLER_USER", "VIEWER"] "enum": [
"ADMIN",
"CRAWLER_USER",
"VIEWER"
]
}, },
"isActive": { "isActive": {
"type": "boolean" "type": "boolean"
...@@ -3959,7 +4112,12 @@ ...@@ -3959,7 +4112,12 @@
}, },
"mode": { "mode": {
"type": "string", "type": "string",
"enum": ["SCRAPE", "CRAWL", "SITEMAP", "URL_LIST"] "enum": [
"SCRAPE",
"CRAWL",
"SITEMAP",
"URL_LIST"
]
}, },
"status": { "status": {
"type": "string", "type": "string",
...@@ -4170,7 +4328,10 @@ ...@@ -4170,7 +4328,10 @@
}, },
"type": { "type": {
"type": "string", "type": "string",
"enum": ["internal", "external"] "enum": [
"internal",
"external"
]
} }
} }
} }
...@@ -4256,11 +4417,21 @@ ...@@ -4256,11 +4417,21 @@
}, },
"exportType": { "exportType": {
"type": "string", "type": "string",
"enum": ["JSON", "CSV", "XLSX", "MARKDOWN", "ZIP"] "enum": [
"JSON",
"CSV",
"XLSX",
"MARKDOWN",
"ZIP"
]
}, },
"status": { "status": {
"type": "string", "type": "string",
"enum": ["PENDING", "COMPLETED", "FAILED"] "enum": [
"PENDING",
"COMPLETED",
"FAILED"
]
}, },
"fileName": { "fileName": {
"type": "string" "type": "string"
...@@ -4283,7 +4454,10 @@ ...@@ -4283,7 +4454,10 @@
}, },
"LoginRequest": { "LoginRequest": {
"type": "object", "type": "object",
"required": ["email", "password"], "required": [
"email",
"password"
],
"properties": { "properties": {
"email": { "email": {
"type": "string", "type": "string",
...@@ -4298,7 +4472,10 @@ ...@@ -4298,7 +4472,10 @@
}, },
"RegisterRequest": { "RegisterRequest": {
"type": "object", "type": "object",
"required": ["email", "password"], "required": [
"email",
"password"
],
"properties": { "properties": {
"email": { "email": {
"type": "string", "type": "string",
...@@ -4317,7 +4494,9 @@ ...@@ -4317,7 +4494,9 @@
}, },
"ResendVerificationRequest": { "ResendVerificationRequest": {
"type": "object", "type": "object",
"required": ["email"], "required": [
"email"
],
"properties": { "properties": {
"email": { "email": {
"type": "string", "type": "string",
...@@ -4328,7 +4507,9 @@ ...@@ -4328,7 +4507,9 @@
}, },
"RequestDeactivationRequest": { "RequestDeactivationRequest": {
"type": "object", "type": "object",
"required": ["password"], "required": [
"password"
],
"properties": { "properties": {
"password": { "password": {
"type": "string", "type": "string",
...@@ -4339,7 +4520,9 @@ ...@@ -4339,7 +4520,9 @@
}, },
"ConfirmDeactivationRequest": { "ConfirmDeactivationRequest": {
"type": "object", "type": "object",
"required": ["token"], "required": [
"token"
],
"properties": { "properties": {
"token": { "token": {
"type": "string", "type": "string",
...@@ -4350,7 +4533,9 @@ ...@@ -4350,7 +4533,9 @@
}, },
"RefreshRequest": { "RefreshRequest": {
"type": "object", "type": "object",
"required": ["refreshToken"], "required": [
"refreshToken"
],
"properties": { "properties": {
"refreshToken": { "refreshToken": {
"type": "string", "type": "string",
...@@ -4360,7 +4545,9 @@ ...@@ -4360,7 +4545,9 @@
}, },
"LogoutRequest": { "LogoutRequest": {
"type": "object", "type": "object",
"required": ["refreshToken"], "required": [
"refreshToken"
],
"properties": { "properties": {
"refreshToken": { "refreshToken": {
"type": "string", "type": "string",
...@@ -4379,7 +4566,11 @@ ...@@ -4379,7 +4566,11 @@
}, },
"ChangePasswordRequest": { "ChangePasswordRequest": {
"type": "object", "type": "object",
"required": ["currentPassword", "newPassword", "confirmPassword"], "required": [
"currentPassword",
"newPassword",
"confirmPassword"
],
"properties": { "properties": {
"currentPassword": { "currentPassword": {
"type": "string", "type": "string",
...@@ -4397,7 +4588,10 @@ ...@@ -4397,7 +4588,10 @@
}, },
"CreateUserRequest": { "CreateUserRequest": {
"type": "object", "type": "object",
"required": ["email", "password"], "required": [
"email",
"password"
],
"properties": { "properties": {
"email": { "email": {
"type": "string", "type": "string",
...@@ -4414,7 +4608,11 @@ ...@@ -4414,7 +4608,11 @@
}, },
"role": { "role": {
"type": "string", "type": "string",
"enum": ["ADMIN", "CRAWLER_USER", "VIEWER"], "enum": [
"ADMIN",
"CRAWLER_USER",
"VIEWER"
],
"example": "CRAWLER_USER" "example": "CRAWLER_USER"
}, },
"maxPagesLimit": { "maxPagesLimit": {
...@@ -4440,7 +4638,11 @@ ...@@ -4440,7 +4638,11 @@
}, },
"role": { "role": {
"type": "string", "type": "string",
"enum": ["ADMIN", "CRAWLER_USER", "VIEWER"], "enum": [
"ADMIN",
"CRAWLER_USER",
"VIEWER"
],
"example": "VIEWER" "example": "VIEWER"
}, },
"isActive": { "isActive": {
...@@ -4471,7 +4673,12 @@ ...@@ -4471,7 +4673,12 @@
}, },
"mode": { "mode": {
"type": "string", "type": "string",
"enum": ["SCRAPE", "CRAWL", "SITEMAP", "URL_LIST"], "enum": [
"SCRAPE",
"CRAWL",
"SITEMAP",
"URL_LIST"
],
"example": "CRAWL" "example": "CRAWL"
}, },
"maxPages": { "maxPages": {
...@@ -4492,25 +4699,38 @@ ...@@ -4492,25 +4699,38 @@
"type": "string", "type": "string",
"format": "uri" "format": "uri"
}, },
"example": ["https://example.com/1", "https://example.com/2"], "example": [
"https://example.com/1",
"https://example.com/2"
],
"description": "Bắt buộc khi mode là URL_LIST" "description": "Bắt buộc khi mode là URL_LIST"
} }
} }
}, },
"CreateExportRequest": { "CreateExportRequest": {
"type": "object", "type": "object",
"required": ["exportType"], "required": [
"exportType"
],
"properties": { "properties": {
"exportType": { "exportType": {
"type": "string", "type": "string",
"enum": ["JSON", "CSV", "XLSX", "MARKDOWN", "ZIP"], "enum": [
"JSON",
"CSV",
"XLSX",
"MARKDOWN",
"ZIP"
],
"example": "JSON" "example": "JSON"
} }
} }
}, },
"CreateApiKeyRequest": { "CreateApiKeyRequest": {
"type": "object", "type": "object",
"required": ["name"], "required": [
"name"
],
"properties": { "properties": {
"name": { "name": {
"type": "string", "type": "string",
...@@ -4529,7 +4749,9 @@ ...@@ -4529,7 +4749,9 @@
}, },
"UpdateApiKeyStatusRequest": { "UpdateApiKeyStatusRequest": {
"type": "object", "type": "object",
"required": ["isActive"], "required": [
"isActive"
],
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"isActive": { "isActive": {
...@@ -4626,7 +4848,11 @@ ...@@ -4626,7 +4848,11 @@
}, },
"CreateWebhookConfigRequest": { "CreateWebhookConfigRequest": {
"type": "object", "type": "object",
"required": ["url", "secret", "events"], "required": [
"url",
"secret",
"events"
],
"properties": { "properties": {
"url": { "url": {
"type": "string", "type": "string",
...@@ -4641,9 +4867,15 @@ ...@@ -4641,9 +4867,15 @@
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"enum": ["job.completed", "job.failed"] "enum": [
"job.completed",
"job.failed"
]
}, },
"example": ["job.completed", "job.failed"] "example": [
"job.completed",
"job.failed"
]
} }
} }
}, },
...@@ -4704,7 +4936,11 @@ ...@@ -4704,7 +4936,11 @@
}, },
"status": { "status": {
"type": "string", "type": "string",
"enum": ["PENDING", "SUCCESS", "FAILED"] "enum": [
"PENDING",
"SUCCESS",
"FAILED"
]
}, },
"statusCode": { "statusCode": {
"type": "integer", "type": "integer",
...@@ -4768,11 +5004,21 @@ ...@@ -4768,11 +5004,21 @@
}, },
"mode": { "mode": {
"type": "string", "type": "string",
"enum": ["SCRAPE", "CRAWL", "SITEMAP", "URL_LIST"] "enum": [
"SCRAPE",
"CRAWL",
"SITEMAP",
"URL_LIST"
]
}, },
"frequency": { "frequency": {
"type": "string", "type": "string",
"enum": ["DAILY", "WEEKLY", "MONTHLY", "CUSTOM"] "enum": [
"DAILY",
"WEEKLY",
"MONTHLY",
"CUSTOM"
]
}, },
"cronExpression": { "cronExpression": {
"type": "string", "type": "string",
...@@ -4835,7 +5081,10 @@ ...@@ -4835,7 +5081,10 @@
}, },
"CreateCrawlScheduleRequest": { "CreateCrawlScheduleRequest": {
"type": "object", "type": "object",
"required": ["name", "startUrl"], "required": [
"name",
"startUrl"
],
"properties": { "properties": {
"name": { "name": {
"type": "string", "type": "string",
...@@ -4848,12 +5097,22 @@ ...@@ -4848,12 +5097,22 @@
}, },
"mode": { "mode": {
"type": "string", "type": "string",
"enum": ["SCRAPE", "CRAWL", "SITEMAP", "URL_LIST"], "enum": [
"SCRAPE",
"CRAWL",
"SITEMAP",
"URL_LIST"
],
"example": "CRAWL" "example": "CRAWL"
}, },
"frequency": { "frequency": {
"type": "string", "type": "string",
"enum": ["DAILY", "WEEKLY", "MONTHLY", "CUSTOM"], "enum": [
"DAILY",
"WEEKLY",
"MONTHLY",
"CUSTOM"
],
"example": "DAILY" "example": "DAILY"
}, },
"cronExpression": { "cronExpression": {
...@@ -4916,11 +5175,21 @@ ...@@ -4916,11 +5175,21 @@
}, },
"mode": { "mode": {
"type": "string", "type": "string",
"enum": ["SCRAPE", "CRAWL", "SITEMAP", "URL_LIST"] "enum": [
"SCRAPE",
"CRAWL",
"SITEMAP",
"URL_LIST"
]
}, },
"frequency": { "frequency": {
"type": "string", "type": "string",
"enum": ["DAILY", "WEEKLY", "MONTHLY", "CUSTOM"] "enum": [
"DAILY",
"WEEKLY",
"MONTHLY",
"CUSTOM"
]
}, },
"cronExpression": { "cronExpression": {
"type": "string" "type": "string"
...@@ -5120,7 +5389,10 @@ ...@@ -5120,7 +5389,10 @@
}, },
"CreateRoleRequest": { "CreateRoleRequest": {
"type": "object", "type": "object",
"required": ["name", "slug"], "required": [
"name",
"slug"
],
"properties": { "properties": {
"name": { "name": {
"type": "string", "type": "string",
...@@ -5159,7 +5431,9 @@ ...@@ -5159,7 +5431,9 @@
}, },
"AssignRolePermissionsRequest": { "AssignRolePermissionsRequest": {
"type": "object", "type": "object",
"required": ["permissionIds"], "required": [
"permissionIds"
],
"properties": { "properties": {
"permissionIds": { "permissionIds": {
"type": "array", "type": "array",
...@@ -5172,7 +5446,9 @@ ...@@ -5172,7 +5446,9 @@
}, },
"AssignUserRolesRequest": { "AssignUserRolesRequest": {
"type": "object", "type": "object",
"required": ["roleIds"], "required": [
"roleIds"
],
"properties": { "properties": {
"roleIds": { "roleIds": {
"type": "array", "type": "array",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment