#pragma once #include class ApiController : public drogon::HttpController { 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 void health(const drogon::HttpRequestPtr &req, std::function &&callback); void ready(const drogon::HttpRequestPtr &req, std::function &&callback); void openApi(const drogon::HttpRequestPtr &req, std::function &&callback); void docs(const drogon::HttpRequestPtr &req, std::function &&callback); };