diff --git a/changelog.d/5-internal/fix-swagger-errors b/changelog.d/5-internal/fix-swagger-errors new file mode 100644 index 0000000000..85628ccf63 --- /dev/null +++ b/changelog.d/5-internal/fix-swagger-errors @@ -0,0 +1 @@ +Fix more Swagger validation errors. diff --git a/services/brig/src/Brig/API/Public.hs b/services/brig/src/Brig/API/Public.hs index 4b2ec723dc..96b9fdaedc 100644 --- a/services/brig/src/Brig/API/Public.hs +++ b/services/brig/src/Brig/API/Public.hs @@ -56,7 +56,7 @@ import Brig.User.Phone import qualified Cassandra as C import qualified Cassandra as Data import Control.Error hiding (bool) -import Control.Lens (view, (%~), (.~), (?~), (^.)) +import Control.Lens (view, (%~), (.~), (?~), (^.), _Just) import Control.Monad.Catch (throwM) import Data.Aeson hiding (json) import Data.ByteString.Conversion @@ -134,10 +134,24 @@ swaggerDocsAPI = & S.info . S.title .~ "Wire-Server API" & S.info . S.description ?~ desc & S.security %~ nub + -- sanitise definitions & S.definitions . traverse %~ sanitise + -- sanitise general responses + & S.responses . traverse . S.schema . _Just . S._Inline %~ sanitise + -- sanitise all responses of all paths + & S.allOperations . S.responses . S.responses + . traverse + . S._Inline + . S.schema + . _Just + . S._Inline + %~ sanitise where sanitise :: S.Schema -> S.Schema - sanitise = (S.properties . traverse . S._Inline %~ sanitise) . (S.required %~ nubOrd) + sanitise = + (S.properties . traverse . S._Inline %~ sanitise) + . (S.required %~ nubOrd) + . (S.enum_ . _Just %~ nub) desc = Text.pack [QQ.i|