Если все в порядке с возвратом 404, когда конечная точка выключена, вы можете сделать это, выдав соответствующую ошибку Servant:
server = toServant MyEndpointsRecord
{ ...
, cleverEndpoint = do
shouldServe <- isCleverEndpointEnabled
if shouldServe
then serveCleverEndpoint
else throwError err404
...
}
Вы также можете обернуть это для повторного использования, если вам нужно делайте это часто:
guarded checkConfig f = do
shouldServe <- checkConfig
if shouldServe
then f
else throwError err404
server = toServant MyEndpointsRecord
{ ...
, cleverEndpoint = guarded isCleverEndpointEnabled serveCleverEndpoint
...
}