Clean up OpenAPI scripts
This commit is contained in:
@@ -6,23 +6,113 @@ class AdminController : public drogon::HttpController<AdminController>
|
||||
{
|
||||
public:
|
||||
METHOD_LIST_BEGIN
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: List categories
|
||||
* description: Lists active report categories.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Report category list.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::listCategories,
|
||||
"/api/v1/admin/categories",
|
||||
drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: Create category
|
||||
* description: Creates a report category.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Created category result.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::createCategory,
|
||||
"/api/v1/admin/categories",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: List areas
|
||||
* description: Lists configured municipal areas.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Area list.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::listAreas, "/api/v1/admin/areas", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: Create area
|
||||
* description: Creates a municipal area with GeoJSON boundary.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Created area result.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::createArea, "/api/v1/admin/areas", drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: List teams
|
||||
* description: Lists intervention teams.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Team list.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::listTeams, "/api/v1/admin/teams", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: Create team
|
||||
* description: Creates an intervention team.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Created team result.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::createTeam, "/api/v1/admin/teams", drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: Overview stats
|
||||
* description: Returns report statistics for administration dashboards.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Aggregated report statistics.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::overviewStats,
|
||||
"/api/v1/admin/stats/overview",
|
||||
drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: List users
|
||||
* description: Lists platform users with role information.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: User list.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::listUsers, "/api/v1/admin/users", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: Update user roles
|
||||
* description: Replaces the roles assigned to a user.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Role update result.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::updateUserRoles,
|
||||
"/api/v1/admin/users/{1}/roles",
|
||||
drogon::Patch);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Admin
|
||||
* summary: Ban or unban user
|
||||
* description: Updates a user's banned flag.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Ban update result.
|
||||
*/
|
||||
ADD_METHOD_TO(AdminController::updateUserBan,
|
||||
"/api/v1/admin/users/{1}/ban",
|
||||
drogon::Patch);
|
||||
@@ -61,4 +151,3 @@ class AdminController : public drogon::HttpController<AdminController>
|
||||
std::function<void(const drogon::HttpResponsePtr &)> &&callback,
|
||||
long long userId);
|
||||
};
|
||||
|
||||
|
||||
@@ -6,9 +6,45 @@ class ApiController : public drogon::HttpController<ApiController>
|
||||
{
|
||||
public:
|
||||
METHOD_LIST_BEGIN
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Technical
|
||||
* summary: Health check
|
||||
* description: Returns process health without checking dependencies.
|
||||
* auth: public
|
||||
* body: none
|
||||
* response: Service health status.
|
||||
*/
|
||||
ADD_METHOD_TO(ApiController::health, "/api/v1/health", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Technical
|
||||
* summary: Readiness check
|
||||
* description: Checks whether MySQL is reachable.
|
||||
* auth: public
|
||||
* body: none
|
||||
* response: Dependency readiness status.
|
||||
*/
|
||||
ADD_METHOD_TO(ApiController::ready, "/api/v1/ready", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Technical
|
||||
* summary: OpenAPI document
|
||||
* description: Returns the generated OpenAPI JSON document.
|
||||
* auth: public
|
||||
* body: none
|
||||
* response: OpenAPI 3 JSON document.
|
||||
*/
|
||||
ADD_METHOD_TO(ApiController::openApi, "/api/v1/openapi.json", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Technical
|
||||
* summary: Swagger UI
|
||||
* description: Serves a local Swagger UI page backed by openapi.json.
|
||||
* auth: public
|
||||
* body: none
|
||||
* response: HTML documentation page.
|
||||
*/
|
||||
ADD_METHOD_TO(ApiController::docs, "/api/v1/docs", drogon::Get);
|
||||
METHOD_LIST_END
|
||||
|
||||
|
||||
@@ -6,21 +6,75 @@ class AuthController : public drogon::HttpController<AuthController>
|
||||
{
|
||||
public:
|
||||
METHOD_LIST_BEGIN
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Auth
|
||||
* summary: Register citizen
|
||||
* description: Creates a citizen account with personal data and password.
|
||||
* auth: public
|
||||
* body: json
|
||||
* response: Registration result.
|
||||
*/
|
||||
ADD_METHOD_TO(AuthController::registerCitizen,
|
||||
"/api/v1/auth/register",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Auth
|
||||
* summary: Request OTP
|
||||
* description: Sends a one-time code by email through MailHog locally.
|
||||
* auth: public
|
||||
* body: json
|
||||
* response: OTP challenge result.
|
||||
*/
|
||||
ADD_METHOD_TO(AuthController::requestOtp,
|
||||
"/api/v1/auth/otp/request",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Auth
|
||||
* summary: Verify OTP
|
||||
* description: Verifies an email OTP and creates an API token.
|
||||
* auth: public
|
||||
* body: json
|
||||
* response: Bearer token when verification succeeds.
|
||||
*/
|
||||
ADD_METHOD_TO(AuthController::verifyOtp,
|
||||
"/api/v1/auth/otp/verify",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Auth
|
||||
* summary: Password login
|
||||
* description: Password-based login fallback for local development.
|
||||
* auth: public
|
||||
* body: json
|
||||
* response: Bearer token when credentials are valid.
|
||||
*/
|
||||
ADD_METHOD_TO(AuthController::loginWithPassword,
|
||||
"/api/v1/auth/login/password",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Auth
|
||||
* summary: Change password
|
||||
* description: Changes the authenticated user's password.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Password change result.
|
||||
*/
|
||||
ADD_METHOD_TO(AuthController::changePassword,
|
||||
"/api/v1/auth/change-password",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Auth
|
||||
* summary: Current user
|
||||
* description: Returns the authenticated user's profile and permissions.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Authenticated user context.
|
||||
*/
|
||||
ADD_METHOD_TO(AuthController::me, "/api/v1/me", drogon::Get);
|
||||
METHOD_LIST_END
|
||||
|
||||
|
||||
@@ -6,27 +6,117 @@ class ReportController : public drogon::HttpController<ReportController>
|
||||
{
|
||||
public:
|
||||
METHOD_LIST_BEGIN
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Create report
|
||||
* description: Creates a citizen urban issue report.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Created report id and inferred area.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::create, "/api/v1/reports", drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: List reports
|
||||
* description: Lists reports visible to the authenticated user.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Report list.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::list, "/api/v1/reports", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Report detail
|
||||
* description: Returns report detail, status history and media.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Report detail.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::detail, "/api/v1/reports/{1}", drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Update report status
|
||||
* description: Updates a report status following allowed transitions.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Status update result.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::updateStatus,
|
||||
"/api/v1/reports/{1}/status",
|
||||
drogon::Patch);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Take report
|
||||
* description: Assigns an open report to the current operator.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Take report result.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::takeReport,
|
||||
"/api/v1/reports/{1}/take",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Add message
|
||||
* description: Adds a citizen/operator message to a report.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Message creation result.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::addMessage,
|
||||
"/api/v1/reports/{1}/messages",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: List messages
|
||||
* description: Lists messages for a report conversation.
|
||||
* auth: bearer
|
||||
* body: none
|
||||
* response: Message list.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::listMessages,
|
||||
"/api/v1/reports/{1}/messages",
|
||||
drogon::Get);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Assign team
|
||||
* description: Assigns an intervention team to a report.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Assignment result.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::assignTeam,
|
||||
"/api/v1/reports/{1}/assignments",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Add feedback
|
||||
* description: Adds citizen feedback after report resolution.
|
||||
* auth: bearer
|
||||
* body: json
|
||||
* response: Feedback result.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::addFeedback,
|
||||
"/api/v1/reports/{1}/feedback",
|
||||
drogon::Post);
|
||||
/*
|
||||
* openapi:
|
||||
* tags: Reports
|
||||
* summary: Upload media
|
||||
* description: Uploads report images or videos as multipart files.
|
||||
* auth: bearer
|
||||
* body: multipart
|
||||
* response: Uploaded media list.
|
||||
*/
|
||||
ADD_METHOD_TO(ReportController::uploadMedia,
|
||||
"/api/v1/reports/{1}/media",
|
||||
drogon::Post);
|
||||
|
||||
Reference in New Issue
Block a user