Fix includes

Clang-tidy misc-include-cleaner appears to now be enforcing
significantly more headers than previously.  That is overall a good
thing, but forces us to fix some issues.  This commit is largely just
taking the clang-recommended fixes and checking them in.  Subsequent
patches will fix the more unique issues.

Note, that a number of new ignores are added into the .clang-tidy file.
These can be cleaned up over time as they're understood.  The majority
are places where boost includes a impl/x.hpp and x.hpp, but expects you
to use the later.  include-cleaner opts for the impl, but it isn't clear
why.

Change-Id: Id3fdd7ee6df6c33b2fd35626898523048dd51bfb
Signed-off-by: Ed Tanous <etanous@nvidia.com>
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
diff --git a/http/app.hpp b/http/app.hpp
index 68f1642..f982618 100644
--- a/http/app.hpp
+++ b/http/app.hpp
@@ -2,28 +2,31 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
+#include "bmcweb_config.h"
+
 #include "async_resp.hpp"
 #include "http_request.hpp"
 #include "http_server.hpp"
 #include "logging.hpp"
-#include "privileges.hpp"
 #include "routing.hpp"
-#include "utility.hpp"
+#include "routing/dynamicrule.hpp"
 
+#include <sys/socket.h>
 #include <systemd/sd-daemon.h>
 
 #include <boost/asio/io_context.hpp>
+#include <boost/asio/ip/address.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/ssl/context.hpp>
 #include <boost/asio/ssl/stream.hpp>
 
-#include <chrono>
 #include <cstdint>
-#include <functional>
-#include <future>
 #include <memory>
+#include <optional>
 #include <string>
+#include <type_traits>
 #include <utility>
+#include <vector>
 
 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage, clang-diagnostic-unused-macros)
 #define BMCWEB_ROUTE(app, url)                                                 \
diff --git a/http/complete_response_fields.hpp b/http/complete_response_fields.hpp
index 46e0c66..486b699 100644
--- a/http/complete_response_fields.hpp
+++ b/http/complete_response_fields.hpp
@@ -2,20 +2,20 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
-#include "authentication.hpp"
 #include "boost_formatters.hpp"
-#include "http_request.hpp"
 #include "http_response.hpp"
 #include "http_utility.hpp"
 #include "json_html_serializer.hpp"
 #include "logging.hpp"
 #include "security_headers.hpp"
-#include "utils/hex_utils.hpp"
 
-#include <boost/beast/http/message.hpp>
+#include <boost/beast/http/field.hpp>
 #include <nlohmann/json.hpp>
 
 #include <array>
+#include <string>
+#include <string_view>
+#include <utility>
 
 namespace crow
 {
diff --git a/http/http2_connection.hpp b/http/http2_connection.hpp
index b3ba012..68ffc1f 100644
--- a/http/http2_connection.hpp
+++ b/http/http2_connection.hpp
@@ -6,33 +6,41 @@
 #include "async_resp.hpp"
 #include "authentication.hpp"
 #include "complete_response_fields.hpp"
+#include "forward_unauthorized.hpp"
 #include "http_body.hpp"
+#include "http_request.hpp"
 #include "http_response.hpp"
-#include "http_utility.hpp"
 #include "logging.hpp"
-#include "mutual_tls.hpp"
-#include "nghttp2_adapters.hpp"
-#include "ssl_key_handler.hpp"
-#include "utility.hpp"
 
-#include <boost/asio/io_context.hpp>
+// NOLINTNEXTLINE(misc-include-cleaner)
+#include "nghttp2_adapters.hpp"
+
+#include <nghttp2/nghttp2.h>
+#include <unistd.h>
+
+#include <boost/asio/buffer.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/ssl/stream.hpp>
-#include <boost/asio/steady_timer.hpp>
-#include <boost/beast/http/error.hpp>
-#include <boost/beast/http/parser.hpp>
-#include <boost/beast/http/read.hpp>
-#include <boost/beast/http/serializer.hpp>
-#include <boost/beast/http/write.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/core/error.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
+#include <boost/beast/http/message.hpp>
+#include <boost/beast/http/verb.hpp>
+#include <boost/optional/optional.hpp>
 #include <boost/system/error_code.hpp>
 
 #include <array>
-#include <atomic>
-#include <chrono>
+#include <bit>
+#include <cstddef>
+#include <cstdint>
 #include <functional>
+#include <map>
 #include <memory>
+#include <optional>
+#include <span>
 #include <string>
+#include <string_view>
+#include <utility>
 #include <vector>
 
 namespace crow
diff --git a/http/http_body.hpp b/http/http_body.hpp
index 9da892f..834c8d3 100644
--- a/http/http_body.hpp
+++ b/http/http_body.hpp
@@ -7,16 +7,27 @@
 #include "utility.hpp"
 
 #include <fcntl.h>
-#include <unistd.h>
 
+#include <boost/asio/buffer.hpp>
+#include <boost/beast/core/buffer_traits.hpp>
 #include <boost/beast/core/buffers_range.hpp>
+#include <boost/beast/core/error.hpp>
+#include <boost/beast/core/file_base.hpp>
 #include <boost/beast/core/file_posix.hpp>
 #include <boost/beast/http/message.hpp>
+#include <boost/none.hpp>
+#include <boost/optional/optional.hpp>
 #include <boost/system/error_code.hpp>
 
+#include <algorithm>
+#include <array>
+#include <cstddef>
 #include <cstdint>
+#include <limits>
 #include <optional>
+#include <string>
 #include <string_view>
+#include <utility>
 
 namespace bmcweb
 {
diff --git a/http/http_client.hpp b/http/http_client.hpp
index 58078c4..6e5613b 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -3,38 +3,60 @@
 // SPDX-FileCopyrightText: Copyright 2020 Intel Corporation
 #pragma once
 
+#include "bmcweb_config.h"
+
 #include "async_resolve.hpp"
+#include "boost_formatters.hpp"
 #include "http_body.hpp"
 #include "http_response.hpp"
 #include "logging.hpp"
 #include "ssl_key_handler.hpp"
 
+#include <openssl/err.h>
+#include <openssl/ssl.h>
+#include <openssl/tls1.h>
+
 #include <boost/asio/connect.hpp>
+#include <boost/asio/error.hpp>
 #include <boost/asio/io_context.hpp>
 #include <boost/asio/ip/address.hpp>
-#include <boost/asio/ip/basic_endpoint.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/ssl/context.hpp>
 #include <boost/asio/ssl/error.hpp>
 #include <boost/asio/ssl/stream.hpp>
+#include <boost/asio/ssl/stream_base.hpp>
 #include <boost/asio/steady_timer.hpp>
+#include <boost/beast/core/error.hpp>
 #include <boost/beast/core/flat_static_buffer.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
 #include <boost/beast/http/message.hpp>
-#include <boost/beast/http/message_generator.hpp>
 #include <boost/beast/http/parser.hpp>
 #include <boost/beast/http/read.hpp>
+#include <boost/beast/http/status.hpp>
+#include <boost/beast/http/verb.hpp>
 #include <boost/beast/http/write.hpp>
 #include <boost/container/devector.hpp>
+#include <boost/optional/optional.hpp>
+#include <boost/system/errc.hpp>
 #include <boost/system/error_code.hpp>
-#include <boost/url/format.hpp>
+#include <boost/url/host_type.hpp>
 #include <boost/url/url.hpp>
 #include <boost/url/url_view_base.hpp>
 
+#include <chrono>
+#include <cstdint>
 #include <cstdlib>
+#include <format>
 #include <functional>
 #include <memory>
-#include <queue>
+#include <optional>
 #include <string>
+#include <string_view>
+#include <type_traits>
+#include <unordered_map>
+#include <utility>
+#include <vector>
 
 namespace crow
 {
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 9106764..7069331 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -6,34 +6,48 @@
 #include "async_resp.hpp"
 #include "authentication.hpp"
 #include "complete_response_fields.hpp"
+#include "forward_unauthorized.hpp"
 #include "http2_connection.hpp"
 #include "http_body.hpp"
+#include "http_request.hpp"
 #include "http_response.hpp"
 #include "http_utility.hpp"
 #include "logging.hpp"
 #include "mutual_tls.hpp"
-#include "ssl_key_handler.hpp"
+#include "sessions.hpp"
 #include "str_utility.hpp"
-#include "utility.hpp"
 
-#include <boost/asio/io_context.hpp>
+#include <boost/asio/error.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/ssl/stream.hpp>
+#include <boost/asio/ssl/stream_base.hpp>
+#include <boost/asio/ssl/verify_context.hpp>
 #include <boost/asio/steady_timer.hpp>
 #include <boost/beast/_experimental/test/stream.hpp>
 #include <boost/beast/core/buffers_generator.hpp>
 #include <boost/beast/core/flat_static_buffer.hpp>
 #include <boost/beast/http/error.hpp>
+#include <boost/beast/http/field.hpp>
 #include <boost/beast/http/message_generator.hpp>
 #include <boost/beast/http/parser.hpp>
 #include <boost/beast/http/read.hpp>
-#include <boost/beast/http/write.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/http/status.hpp>
+#include <boost/beast/http/verb.hpp>
+#include <boost/none.hpp>
+#include <boost/optional/optional.hpp>
 
-#include <atomic>
+#include <bit>
 #include <chrono>
+#include <cstddef>
+#include <cstdint>
+#include <functional>
 #include <memory>
-#include <vector>
+#include <optional>
+#include <string>
+#include <string_view>
+#include <system_error>
+#include <type_traits>
+#include <utility>
 
 namespace crow
 {
diff --git a/http/http_request.hpp b/http/http_request.hpp
index c2e7d8d..160216b 100644
--- a/http/http_request.hpp
+++ b/http/http_request.hpp
@@ -7,13 +7,20 @@
 
 #include <boost/asio/io_context.hpp>
 #include <boost/asio/ip/address.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
 #include <boost/beast/http/message.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/http/verb.hpp>
+#include <boost/beast/websocket/rfc6455.hpp>
+#include <boost/url/parse.hpp>
 #include <boost/url/url.hpp>
+#include <boost/url/url_view.hpp>
 
+#include <memory>
 #include <string>
 #include <string_view>
 #include <system_error>
+#include <utility>
 
 namespace crow
 {
@@ -146,6 +153,7 @@
 
     bool isUpgrade() const
     {
+        // NOLINTNEXTLINE(misc-include-cleaner)
         return boost::beast::websocket::is_upgrade(req);
     }
 
diff --git a/http/http_response.hpp b/http/http_response.hpp
index 93cd4ac..e6c9f72 100644
--- a/http/http_response.hpp
+++ b/http/http_response.hpp
@@ -7,9 +7,18 @@
 
 #include <fcntl.h>
 
+#include <boost/beast/core/error.hpp>
+#include <boost/beast/core/file_base.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/fields.hpp>
 #include <boost/beast/http/message.hpp>
+#include <boost/beast/http/status.hpp>
 #include <nlohmann/json.hpp>
 
+#include <cstddef>
+#include <cstdint>
+#include <filesystem>
+#include <functional>
 #include <optional>
 #include <string>
 #include <string_view>
diff --git a/http/http_server.hpp b/http/http_server.hpp
index 97c57ef..b48137f 100644
--- a/http/http_server.hpp
+++ b/http/http_server.hpp
@@ -2,10 +2,13 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
+#include "bmcweb_config.h"
+
 #include "http_connection.hpp"
 #include "logging.hpp"
 #include "ssl_key_handler.hpp"
 
+#include <boost/asio/io_context.hpp>
 #include <boost/asio/ip/address.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/signal_set.hpp>
@@ -14,15 +17,15 @@
 #include <boost/asio/steady_timer.hpp>
 #include <boost/beast/core/stream_traits.hpp>
 
-#include <atomic>
 #include <chrono>
-#include <cstdint>
-#include <filesystem>
-#include <future>
+#include <csignal>
+#include <cstddef>
+#include <ctime>
+#include <functional>
 #include <memory>
 #include <string>
+#include <type_traits>
 #include <utility>
-#include <vector>
 
 namespace crow
 {
@@ -37,6 +40,7 @@
            std::shared_ptr<boost::asio::ssl::context> adaptorCtxIn,
            std::shared_ptr<boost::asio::io_context> io) :
         ioService(std::move(io)), acceptor(std::move(acceptorIn)),
+        // NOLINTNEXTLINE(misc-include-cleaner)
         signals(*ioService, SIGINT, SIGTERM, SIGHUP), handler(handlerIn),
         adaptorCtx(std::move(adaptorCtxIn))
     {}
diff --git a/http/logging.hpp b/http/logging.hpp
index 1028ca6..a8d85e2 100644
--- a/http/logging.hpp
+++ b/http/logging.hpp
@@ -4,12 +4,16 @@
 
 #include "bmcweb_config.h"
 
+#include <algorithm>
+#include <array>
 #include <bit>
+#include <cstddef>
+#include <cstdio>
 #include <format>
-#include <iostream>
 #include <source_location>
+#include <string>
 #include <string_view>
-#include <system_error>
+#include <type_traits>
 
 // NOLINTBEGIN(readability-convert-member-functions-to-static, cert-dcl58-cpp)
 template <>
diff --git a/http/mutual_tls.hpp b/http/mutual_tls.hpp
index e37bef5..aec7ae1 100644
--- a/http/mutual_tls.hpp
+++ b/http/mutual_tls.hpp
@@ -2,12 +2,13 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
-#include "persistent_data.hpp"
+#include "sessions.hpp"
 
 #include <boost/asio/ip/address.hpp>
 #include <boost/asio/ssl/verify_context.hpp>
 
 #include <memory>
+#include <string>
 #include <string_view>
 
 std::string getUsernameFromCommonName(std::string_view commonName);
diff --git a/http/mutual_tls_meta.hpp b/http/mutual_tls_meta.hpp
index 499d9a8..d87ce19 100644
--- a/http/mutual_tls_meta.hpp
+++ b/http/mutual_tls_meta.hpp
@@ -4,6 +4,7 @@
 
 #include "logging.hpp"
 
+#include <cstddef>
 #include <format>
 #include <optional>
 #include <string>
diff --git a/http/parsing.hpp b/http/parsing.hpp
index 3f83e49..b129402 100644
--- a/http/parsing.hpp
+++ b/http/parsing.hpp
@@ -2,14 +2,15 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
+#include "bmcweb_config.h"
+
 #include "http/http_request.hpp"
 #include "http_utility.hpp"
 #include "logging.hpp"
-#include "str_utility.hpp"
 
+#include <boost/beast/http/field.hpp>
 #include <nlohmann/json.hpp>
 
-#include <algorithm>
 #include <cctype>
 #include <string_view>
 
diff --git a/http/routing.hpp b/http/routing.hpp
index 010ee2d..6c39939 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
@@ -4,33 +4,30 @@
 
 #include "async_resp.hpp"
 #include "dbus_privileges.hpp"
-#include "dbus_utility.hpp"
-#include "error_messages.hpp"
 #include "http_request.hpp"
 #include "http_response.hpp"
 #include "logging.hpp"
-#include "privileges.hpp"
 #include "routing/baserule.hpp"
 #include "routing/dynamicrule.hpp"
-#include "routing/sserule.hpp"
 #include "routing/taggedrule.hpp"
-#include "routing/websocketrule.hpp"
-#include "sessions.hpp"
-#include "utility.hpp"
-#include "utils/dbus_utils.hpp"
 #include "verb.hpp"
-#include "websocket.hpp"
 
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/status.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/container/small_vector.hpp>
 
 #include <algorithm>
+#include <array>
 #include <cerrno>
 #include <cstdint>
 #include <cstdlib>
-#include <limits>
+#include <format>
+#include <functional>
 #include <memory>
 #include <optional>
+#include <stdexcept>
+#include <string>
 #include <string_view>
 #include <tuple>
 #include <utility>
diff --git a/http/routing/baserule.hpp b/http/routing/baserule.hpp
index 770405b..8ef1afc 100644
--- a/http/routing/baserule.hpp
+++ b/http/routing/baserule.hpp
@@ -9,9 +9,14 @@
 
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/ssl/stream.hpp>
+#include <boost/beast/http/status.hpp>
 
+#include <cstddef>
+#include <limits>
 #include <memory>
 #include <string>
+#include <utility>
+#include <vector>
 
 namespace crow
 {
diff --git a/http/routing/dynamicrule.hpp b/http/routing/dynamicrule.hpp
index 35753b7..38db744 100644
--- a/http/routing/dynamicrule.hpp
+++ b/http/routing/dynamicrule.hpp
@@ -1,16 +1,20 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
-#include "baserule.hpp"
-#include "ruleparametertraits.hpp"
-#include "websocket.hpp"
 
-#include <boost/beast/http/verb.hpp>
+#include "async_resp.hpp"
+#include "baserule.hpp"
+#include "http_request.hpp"
+#include "ruleparametertraits.hpp"
+
+#include <boost/callable_traits/args.hpp>
 
 #include <functional>
-#include <limits>
+#include <memory>
+#include <stdexcept>
 #include <string>
-#include <type_traits>
+#include <tuple>
+#include <vector>
 
 namespace crow
 {
diff --git a/http/routing/ruleparametertraits.hpp b/http/routing/ruleparametertraits.hpp
index ed5311e..0d5417d 100644
--- a/http/routing/ruleparametertraits.hpp
+++ b/http/routing/ruleparametertraits.hpp
@@ -2,11 +2,15 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
+#include "privileges.hpp"
 #include "sserule.hpp"
+#include "verb.hpp"
 #include "websocketrule.hpp"
 
 #include <boost/beast/http/verb.hpp>
 
+#include <array>
+#include <cstddef>
 #include <initializer_list>
 #include <optional>
 
diff --git a/http/routing/sserule.hpp b/http/routing/sserule.hpp
index 0c9295e..e32af57 100644
--- a/http/routing/sserule.hpp
+++ b/http/routing/sserule.hpp
@@ -2,16 +2,22 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
+#include "async_resp.hpp"
 #include "baserule.hpp"
 #include "http_request.hpp"
 #include "http_response.hpp"
+#include "logging.hpp"
 #include "server_sent_event.hpp"
 
-#include <boost/beast/http/verb.hpp>
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/ssl/stream.hpp>
+#include <boost/beast/http/status.hpp>
 
 #include <functional>
 #include <memory>
 #include <string>
+#include <utility>
+#include <vector>
 
 namespace crow
 {
diff --git a/http/routing/taggedrule.hpp b/http/routing/taggedrule.hpp
index c6d60d4..b785d88 100644
--- a/http/routing/taggedrule.hpp
+++ b/http/routing/taggedrule.hpp
@@ -1,14 +1,16 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
+#include "async_resp.hpp"
 #include "baserule.hpp"
-#include "dynamicrule.hpp"
+#include "http_request.hpp"
 #include "ruleparametertraits.hpp"
 
-#include <boost/beast/http/verb.hpp>
-
+#include <functional>
 #include <memory>
+#include <stdexcept>
 #include <string>
+#include <type_traits>
 #include <vector>
 
 namespace crow
diff --git a/http/routing/websocketrule.hpp b/http/routing/websocketrule.hpp
index 61743d5..0341022 100644
--- a/http/routing/websocketrule.hpp
+++ b/http/routing/websocketrule.hpp
@@ -2,13 +2,21 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 
+#include "async_resp.hpp"
 #include "baserule.hpp"
+#include "http_request.hpp"
+#include "logging.hpp"
 #include "websocket.hpp"
 
-#include <boost/beast/http/verb.hpp>
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/ssl/stream.hpp>
+#include <boost/beast/http/status.hpp>
 
+#include <functional>
 #include <memory>
 #include <string>
+#include <string_view>
+#include <utility>
 #include <vector>
 
 namespace crow
diff --git a/http/server_sent_event.hpp b/http/server_sent_event.hpp
index dd28705..a0105f1 100644
--- a/http/server_sent_event.hpp
+++ b/http/server_sent_event.hpp
@@ -4,17 +4,27 @@
 #include "boost_formatters.hpp"
 #include "http_body.hpp"
 #include "http_request.hpp"
-#include "http_response.hpp"
+#include "logging.hpp"
 
 #include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_context.hpp>
 #include <boost/asio/steady_timer.hpp>
+#include <boost/beast/core/error.hpp>
 #include <boost/beast/core/multi_buffer.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/serializer.hpp>
+#include <boost/beast/http/write.hpp>
 
 #include <array>
+#include <chrono>
 #include <cstddef>
 #include <functional>
+#include <memory>
 #include <optional>
+#include <string>
+#include <string_view>
+#include <utility>
 
 namespace crow
 {
diff --git a/http/utility.hpp b/http/utility.hpp
index edc34ad..48985fd 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -4,25 +4,23 @@
 
 #include "bmcweb_config.h"
 
-#include <boost/callable_traits.hpp>
-#include <boost/url/parse.hpp>
+#include <sys/types.h>
+
+#include <boost/url/segments_view.hpp>
 #include <boost/url/url.hpp>
-#include <boost/url/url_view.hpp>
 #include <boost/url/url_view_base.hpp>
 #include <nlohmann/json.hpp>
 
 #include <array>
-#include <chrono>
+#include <concepts>
 #include <cstddef>
 #include <cstdint>
 #include <ctime>
 #include <functional>
-#include <iomanip>
+#include <initializer_list>
 #include <limits>
-#include <stdexcept>
 #include <string>
 #include <string_view>
-#include <tuple>
 #include <type_traits>
 #include <utility>
 #include <variant>
diff --git a/http/verb.hpp b/http/verb.hpp
index 92bc360..e24ca88 100644
--- a/http/verb.hpp
+++ b/http/verb.hpp
@@ -4,7 +4,11 @@
 
 #include <boost/beast/http/verb.hpp>
 
+#include <cstddef>
 #include <optional>
+// boost/beast/http/verb for whatever reason requires this?
+// NOLINTNEXTLINE(misc-include-cleaner)
+#include <ostream>
 #include <string_view>
 
 enum class HttpVerb
diff --git a/http/websocket.hpp b/http/websocket.hpp
index 6e5d1ed..1f22890 100644
--- a/http/websocket.hpp
+++ b/http/websocket.hpp
@@ -1,18 +1,40 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
-#include "async_resp.hpp"
+#include "bmcweb_config.h"
+
+#include "boost_formatters.hpp"
 #include "http_body.hpp"
 #include "http_request.hpp"
+#include "logging.hpp"
+#include "ossl_random.hpp"
+#include "sessions.hpp"
 
 #include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_context.hpp>
 #include <boost/asio/ssl/error.hpp>
+#include <boost/beast/core/error.hpp>
 #include <boost/beast/core/multi_buffer.hpp>
-#include <boost/beast/websocket.hpp>
+#include <boost/beast/core/role.hpp>
+#include <boost/beast/http/field.hpp>
+#include <boost/beast/http/message.hpp>
+#include <boost/beast/http/status.hpp>
+#include <boost/beast/websocket/error.hpp>
+#include <boost/beast/websocket/rfc6455.hpp>
+#include <boost/beast/websocket/stream.hpp>
+#include <boost/beast/websocket/stream_base.hpp>
+#include <boost/url/url_view.hpp>
+
+// NOLINTNEXTLINE(misc-include-cleaner)
 #include <boost/beast/websocket/ssl.hpp>
 
-#include <array>
+#include <cstddef>
 #include <functional>
+#include <memory>
+#include <string>
+#include <string_view>
+#include <utility>
 
 namespace crow
 {