diff --git a/openapi.yml b/openapi.yml index 1d32b6b..26c9407 100644 --- a/openapi.yml +++ b/openapi.yml @@ -13,6 +13,37 @@ servers: port: default: "8000" paths: + /config: + get: + summary: describes server configuration + description: | + An overview over the configuration currently + used by this server. + responses: + "200": + description: OK + content: + "application/json": + schema: + type: object + properties: + name: + type: string + example: "my awesome beammp server" + description: + type: string + example: "join!" + max_players: + type: integer + example: 7 + max_cars: + type: integer + example: 2 + map: + type: string + example: "/levels/gridmap_v2/info.json" + private: + type: boolean /ready: get: summary: whether the server has started fully diff --git a/src/Http.cpp b/src/Http.cpp index 87bfe07..6bfdbad 100644 --- a/src/Http.cpp +++ b/src/Http.cpp @@ -157,6 +157,20 @@ void Http::Server::THttpServerInstance::operator()() try { HttpLibServerInstance->Get("/", [](const httplib::Request&, httplib::Response& res) { res.set_content("

Hello World!

BeamMP Server can now serve HTTP requests!

", "text/html"); }); + HttpLibServerInstance->Get(API_V1 "/config", [](const httplib::Request&, httplib::Response& res) { + res.status = 200; + res.set_content(json { + { "name", Application::Settings.ServerName }, + { "description", Application::Settings.ServerDesc }, + { "max_players", Application::Settings.MaxPlayers }, + { "max_cars", Application::Settings.MaxCars }, + { "map", Application::Settings.MapName }, + { "private", Application::Settings.Private }, + } + .dump(), + "application/json"); + }); + HttpLibServerInstance->Get(API_V1 "/ready", [](const httplib::Request&, httplib::Response& res) { auto Statuses = Application::GetSubsystemStatuses(); bool Started = true;