-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Swagger 2.0 data model -- -- This library is intended to be used for decoding and encoding Swagger -- 2.0 API specifications as well as manipulating them. -- -- The original Swagger 2.0 specification is available at -- http://swagger.io/specification/. @package swagger2 @version 2.7 -- | Declare monad transformer and associated functions. module Data.Swagger.Declare -- | A declare monad transformer parametrized by: -- --
-- >>> import Data.Aeson -- -- >>> import Optics.Core -- -- >>> :set -XOverloadedLabels ---- -- Example from the Data.Swagger module using optics: -- --
-- >>> :{
-- encode $ (mempty :: Swagger)
-- & #definitions .~ [ ("User", mempty & #type ?~ SwaggerString) ]
-- & #paths .~
-- [ ("/user", mempty & #get ?~ (mempty
-- & #produces ?~ MimeList ["application/json"]
-- & at 200 ?~ ("OK" & #_Inline % #schema ?~ Ref (Reference "User"))
-- & at 404 ?~ "User info not found")) ]
-- :}
-- "{\"swagger\":\"2.0\",\"info\":{\"title\":\"\",\"version\":\"\"},\"paths\":{\"/user\":{\"get\":{\"produces\":[\"application/json\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/User\"}},\"404\":{\"description\":\"User info not found\"}}}}},\"definitions\":{\"User\":{\"type\":\"string\"}}}"
--
--
-- For convenience optics are defined as labels. It means that
-- field accessor names can be overloaded for different types. One such
-- common field is #description. Many components of a Swagger
-- specification can have descriptions, and you can use the same name for
-- them:
--
--
-- >>> encode $ (mempty :: Response) & #description .~ "No content"
-- "{\"description\":\"No content\"}"
--
-- >>> :{
-- encode $ (mempty :: Schema)
-- & #type ?~ SwaggerBoolean
-- & #description ?~ "To be or not to be"
-- :}
-- "{\"description\":\"To be or not to be\",\"type\":\"boolean\"}"
--
--
-- ParamSchema is basically the base schema
-- specification and many types contain it. So for convenience, all
-- ParamSchema fields are transitively made fields of the
-- type that has it. For example, you can use #type to access
-- SwaggerType of Header schema without
-- having to use #paramSchema:
--
--
-- >>> encode $ (mempty :: Header) & #type ?~ SwaggerNumber
-- "{\"type\":\"number\"}"
--
--
-- Additionally, to simplify working with Response, both
-- Operation and Responses have direct
-- access to it via at. Example:
--
--
-- >>> :{
-- encode $ (mempty :: Operation)
-- & at 404 ?~ "Not found"
-- :}
-- "{\"responses\":{\"404\":{\"description\":\"Not found\"}}}"
--
module Data.Swagger.Optics
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism, a1 GHC.Types.~ Data.Swagger.Internal.Reference, b GHC.Types.~ Data.Swagger.Internal.Reference) => Optics.Label.LabelOptic "_Ref" k (Data.Swagger.Internal.Referenced a2) (Data.Swagger.Internal.Referenced a2) a1 b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism, a1 GHC.Types.~ a2, b GHC.Types.~ a3) => Optics.Label.LabelOptic "_Inline" k (Data.Swagger.Internal.Referenced a2) (Data.Swagger.Internal.Referenced a3) a1 b
instance (a GHC.Types.~ [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema], b GHC.Types.~ [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema]) => Optics.Label.LabelOptic "_SwaggerItemsArray" Optics.Internal.Optic.Types.A_Review (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema) (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema) a b
instance (a GHC.Types.~ Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema, b GHC.Types.~ Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema) => Optics.Label.LabelOptic "_SwaggerItemsObject" Optics.Internal.Optic.Types.A_Review (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema) (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema) a b
instance (a GHC.Types.~ (GHC.Maybe.Maybe (Data.Swagger.Internal.CollectionFormat t), Data.Swagger.Internal.ParamSchema t), b GHC.Types.~ (GHC.Maybe.Maybe (Data.Swagger.Internal.CollectionFormat t), Data.Swagger.Internal.ParamSchema t)) => Optics.Label.LabelOptic "_SwaggerItemsPrimitive" Optics.Internal.Optic.Types.A_Review (Data.Swagger.Internal.SwaggerItems t) (Data.Swagger.Internal.SwaggerItems t) a b
instance Optics.At.Core.Ixed Data.Swagger.Internal.Responses
instance Optics.At.Core.At Data.Swagger.Internal.Responses
instance Optics.At.Core.Ixed Data.Swagger.Internal.Operation
instance Optics.At.Core.At Data.Swagger.Internal.Operation
instance (a GHC.Types.~ Data.Swagger.Internal.ParamSchema 'Data.Swagger.Internal.SwaggerKindSchema, b GHC.Types.~ Data.Swagger.Internal.ParamSchema 'Data.Swagger.Internal.SwaggerKindSchema) => Optics.Label.LabelOptic "paramSchema" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType ('Data.Swagger.Internal.SwaggerKindNormal Data.Swagger.Internal.Header)), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType ('Data.Swagger.Internal.SwaggerKindNormal Data.Swagger.Internal.Header))) => Optics.Label.LabelOptic "type" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType 'Data.Swagger.Internal.SwaggerKindSchema), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType 'Data.Swagger.Internal.SwaggerKindSchema)) => Optics.Label.LabelOptic "type" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType 'Data.Swagger.Internal.SwaggerKindSchema), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType 'Data.Swagger.Internal.SwaggerKindSchema)) => Optics.Label.LabelOptic "type" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType 'Data.Swagger.Internal.SwaggerKindParamOtherSchema), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType 'Data.Swagger.Internal.SwaggerKindParamOtherSchema)) => Optics.Label.LabelOptic "type" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value, b GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value) => Optics.Label.LabelOptic "default" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value, b GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value) => Optics.Label.LabelOptic "default" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value, b GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value) => Optics.Label.LabelOptic "default" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value, b GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value) => Optics.Label.LabelOptic "default" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format) => Optics.Label.LabelOptic "format" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format) => Optics.Label.LabelOptic "format" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format) => Optics.Label.LabelOptic "format" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format) => Optics.Label.LabelOptic "format" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems ('Data.Swagger.Internal.SwaggerKindNormal Data.Swagger.Internal.Header)), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems ('Data.Swagger.Internal.SwaggerKindNormal Data.Swagger.Internal.Header))) => Optics.Label.LabelOptic "items" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema)) => Optics.Label.LabelOptic "items" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindSchema)) => Optics.Label.LabelOptic "items" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindParamOtherSchema), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems 'Data.Swagger.Internal.SwaggerKindParamOtherSchema)) => Optics.Label.LabelOptic "items" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "maximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "maximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "maximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "maximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMaximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMaximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMaximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMaximum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "minimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "minimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "minimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "minimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMinimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMinimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMinimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMinimum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minLength" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "pattern" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "pattern" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "pattern" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "pattern" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "uniqueItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "uniqueItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "uniqueItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "uniqueItems" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value], b GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value]) => Optics.Label.LabelOptic "enum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value], b GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value]) => Optics.Label.LabelOptic "enum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value], b GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value]) => Optics.Label.LabelOptic "enum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value], b GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value]) => Optics.Label.LabelOptic "enum" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "multipleOf" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "multipleOf" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "multipleOf" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "multipleOf" Optics.Internal.Optic.Types.A_Lens Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism, a GHC.Types.~ (), b GHC.Types.~ ()) => Optics.Label.LabelOptic "_SecuritySchemeBasic" k Data.Swagger.Internal.SecuritySchemeType Data.Swagger.Internal.SecuritySchemeType a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism, a GHC.Types.~ Data.Swagger.Internal.ApiKeyParams, b GHC.Types.~ Data.Swagger.Internal.ApiKeyParams) => Optics.Label.LabelOptic "_SecuritySchemeApiKey" k Data.Swagger.Internal.SecuritySchemeType Data.Swagger.Internal.SecuritySchemeType a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism, a GHC.Types.~ Data.Swagger.Internal.OAuth2Params, b GHC.Types.~ Data.Swagger.Internal.OAuth2Params) => Optics.Label.LabelOptic "_SecuritySchemeOAuth2" k Data.Swagger.Internal.SecuritySchemeType Data.Swagger.Internal.SecuritySchemeType a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism, a GHC.Types.~ Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema, b GHC.Types.~ Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema) => Optics.Label.LabelOptic "_ParamBody" k Data.Swagger.Internal.ParamAnySchema Data.Swagger.Internal.ParamAnySchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism, a GHC.Types.~ Data.Swagger.Internal.ParamOtherSchema, b GHC.Types.~ Data.Swagger.Internal.ParamOtherSchema) => Optics.Label.LabelOptic "_ParamOther" k Data.Swagger.Internal.ParamAnySchema Data.Swagger.Internal.ParamAnySchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.ExternalDocs Data.Swagger.Internal.ExternalDocs a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.URL, b GHC.Types.~ Data.Swagger.Internal.URL) => Optics.Label.LabelOptic "url" k Data.Swagger.Internal.ExternalDocs Data.Swagger.Internal.ExternalDocs a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.SecurityScheme Data.Swagger.Internal.SecurityScheme a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.SecuritySchemeType, b GHC.Types.~ Data.Swagger.Internal.SecuritySchemeType) => Optics.Label.LabelOptic "type" k Data.Swagger.Internal.SecurityScheme Data.Swagger.Internal.SecurityScheme a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Text.Internal.Text, b GHC.Types.~ Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.Response Data.Swagger.Internal.Response a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Example, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Example) => Optics.Label.LabelOptic "examples" k Data.Swagger.Internal.Response Data.Swagger.Internal.Response a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap Data.Swagger.Internal.HeaderName Data.Swagger.Internal.Header, b GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap Data.Swagger.Internal.HeaderName Data.Swagger.Internal.Header) => Optics.Label.LabelOptic "headers" k Data.Swagger.Internal.Response Data.Swagger.Internal.Response a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema)) => Optics.Label.LabelOptic "schema" k Data.Swagger.Internal.Response Data.Swagger.Internal.Response a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Response), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Response)) => Optics.Label.LabelOptic "default" k Data.Swagger.Internal.Responses Data.Swagger.Internal.Responses a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap Data.Swagger.Internal.HttpStatusCode (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Response), b GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap Data.Swagger.Internal.HttpStatusCode (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Response)) => Optics.Label.LabelOptic "responses" k Data.Swagger.Internal.Responses Data.Swagger.Internal.Responses a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "attribute" k Data.Swagger.Internal.Xml Data.Swagger.Internal.Xml a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "name" k Data.Swagger.Internal.Xml Data.Swagger.Internal.Xml a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "namespace" k Data.Swagger.Internal.Xml Data.Swagger.Internal.Xml a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "prefix" k Data.Swagger.Internal.Xml Data.Swagger.Internal.Xml a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "wrapped" k Data.Swagger.Internal.Xml Data.Swagger.Internal.Xml a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value, b GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value) => Optics.Label.LabelOptic "default" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value], b GHC.Types.~ GHC.Maybe.Maybe [Data.Aeson.Types.Internal.Value]) => Optics.Label.LabelOptic "enum" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMaximum" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "exclusiveMinimum" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Format) => Optics.Label.LabelOptic "format" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems t), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerItems t)) => Optics.Label.LabelOptic "items" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxItems" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxLength" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "maximum" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minItems" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minLength" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "minimum" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific, b GHC.Types.~ GHC.Maybe.Maybe Data.Scientific.Scientific) => Optics.Label.LabelOptic "multipleOf" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Pattern, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Pattern) => Optics.Label.LabelOptic "pattern" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType t), b GHC.Types.~ GHC.Maybe.Maybe (Data.Swagger.Internal.SwaggerType t)) => Optics.Label.LabelOptic "type" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "uniqueItems" k (Data.Swagger.Internal.ParamSchema t) (Data.Swagger.Internal.ParamSchema t) a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "name" k Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.Schema, b GHC.Types.~ Data.Swagger.Internal.Schema) => Optics.Label.LabelOptic "schema" k Data.Swagger.Internal.NamedSchema Data.Swagger.Internal.NamedSchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.AdditionalProperties, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.AdditionalProperties) => Optics.Label.LabelOptic "additionalProperties" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema], b GHC.Types.~ GHC.Maybe.Maybe [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema]) => Optics.Label.LabelOptic "allOf" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "discriminator" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value, b GHC.Types.~ GHC.Maybe.Maybe Data.Aeson.Types.Internal.Value) => Optics.Label.LabelOptic "example" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs) => Optics.Label.LabelOptic "externalDocs" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "maxProperties" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer, b GHC.Types.~ GHC.Maybe.Maybe GHC.Integer.Type.Integer) => Optics.Label.LabelOptic "minProperties" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.ParamSchema 'Data.Swagger.Internal.SwaggerKindSchema, b GHC.Types.~ Data.Swagger.Internal.ParamSchema 'Data.Swagger.Internal.SwaggerKindSchema) => Optics.Label.LabelOptic "paramSchema" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap Data.Text.Internal.Text (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema), b GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap Data.Text.Internal.Text (Data.Swagger.Internal.Referenced Data.Swagger.Internal.Schema)) => Optics.Label.LabelOptic "properties" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "readOnly" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ [Data.Swagger.Internal.ParamName], b GHC.Types.~ [Data.Swagger.Internal.ParamName]) => Optics.Label.LabelOptic "required" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "title" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Xml, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Xml) => Optics.Label.LabelOptic "xml" k Data.Swagger.Internal.Schema Data.Swagger.Internal.Schema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.ParamSchema ('Data.Swagger.Internal.SwaggerKindNormal Data.Swagger.Internal.Header), b GHC.Types.~ Data.Swagger.Internal.ParamSchema ('Data.Swagger.Internal.SwaggerKindNormal Data.Swagger.Internal.Header)) => Optics.Label.LabelOptic "paramSchema" k Data.Swagger.Internal.Header Data.Swagger.Internal.Header a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "allowEmptyValue" k Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.ParamLocation, b GHC.Types.~ Data.Swagger.Internal.ParamLocation) => Optics.Label.LabelOptic "in" k Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.ParamSchema 'Data.Swagger.Internal.SwaggerKindParamOtherSchema, b GHC.Types.~ Data.Swagger.Internal.ParamSchema 'Data.Swagger.Internal.SwaggerKindParamOtherSchema) => Optics.Label.LabelOptic "paramSchema" k Data.Swagger.Internal.ParamOtherSchema Data.Swagger.Internal.ParamOtherSchema a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.Param Data.Swagger.Internal.Param a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Text.Internal.Text, b GHC.Types.~ Data.Text.Internal.Text) => Optics.Label.LabelOptic "name" k Data.Swagger.Internal.Param Data.Swagger.Internal.Param a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "required" k Data.Swagger.Internal.Param Data.Swagger.Internal.Param a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.ParamAnySchema, b GHC.Types.~ Data.Swagger.Internal.ParamAnySchema) => Optics.Label.LabelOptic "schema" k Data.Swagger.Internal.Param Data.Swagger.Internal.Param a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.MimeList, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.MimeList) => Optics.Label.LabelOptic "consumes" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool, b GHC.Types.~ GHC.Maybe.Maybe GHC.Types.Bool) => Optics.Label.LabelOptic "deprecated" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs) => Optics.Label.LabelOptic "externalDocs" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "operationId" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Param], b GHC.Types.~ [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Param]) => Optics.Label.LabelOptic "parameters" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.MimeList, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.MimeList) => Optics.Label.LabelOptic "produces" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.Responses, b GHC.Types.~ Data.Swagger.Internal.Responses) => Optics.Label.LabelOptic "responses" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe [Data.Swagger.Internal.Scheme], b GHC.Types.~ GHC.Maybe.Maybe [Data.Swagger.Internal.Scheme]) => Optics.Label.LabelOptic "schemes" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ [Data.Swagger.Internal.SecurityRequirement], b GHC.Types.~ [Data.Swagger.Internal.SecurityRequirement]) => Optics.Label.LabelOptic "security" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "summary" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.HashSet.InsOrd.InsOrdHashSet Data.Swagger.Internal.TagName, b GHC.Types.~ Data.HashSet.InsOrd.InsOrdHashSet Data.Swagger.Internal.TagName) => Optics.Label.LabelOptic "tags" k Data.Swagger.Internal.Operation Data.Swagger.Internal.Operation a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.Tag Data.Swagger.Internal.Tag a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs) => Optics.Label.LabelOptic "externalDocs" k Data.Swagger.Internal.Tag Data.Swagger.Internal.Tag a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.TagName, b GHC.Types.~ Data.Swagger.Internal.TagName) => Optics.Label.LabelOptic "name" k Data.Swagger.Internal.Tag Data.Swagger.Internal.Tag a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation) => Optics.Label.LabelOptic "delete" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation) => Optics.Label.LabelOptic "get" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation) => Optics.Label.LabelOptic "head" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation) => Optics.Label.LabelOptic "options" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Param], b GHC.Types.~ [Data.Swagger.Internal.Referenced Data.Swagger.Internal.Param]) => Optics.Label.LabelOptic "parameters" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation) => Optics.Label.LabelOptic "patch" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation) => Optics.Label.LabelOptic "post" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Operation) => Optics.Label.LabelOptic "put" k Data.Swagger.Internal.PathItem Data.Swagger.Internal.PathItem a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Text.Internal.Text, b GHC.Types.~ Data.Text.Internal.Text) => Optics.Label.LabelOptic "name" k Data.Swagger.Internal.License Data.Swagger.Internal.License a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.URL, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.URL) => Optics.Label.LabelOptic "url" k Data.Swagger.Internal.License Data.Swagger.Internal.License a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "email" k Data.Swagger.Internal.Contact Data.Swagger.Internal.Contact a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "name" k Data.Swagger.Internal.Contact Data.Swagger.Internal.Contact a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.URL, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.URL) => Optics.Label.LabelOptic "url" k Data.Swagger.Internal.Contact Data.Swagger.Internal.Contact a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Contact, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Contact) => Optics.Label.LabelOptic "contact" k Data.Swagger.Internal.Info Data.Swagger.Internal.Info a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "description" k Data.Swagger.Internal.Info Data.Swagger.Internal.Info a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.License, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.License) => Optics.Label.LabelOptic "license" k Data.Swagger.Internal.Info Data.Swagger.Internal.Info a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text, b GHC.Types.~ GHC.Maybe.Maybe Data.Text.Internal.Text) => Optics.Label.LabelOptic "termsOfService" k Data.Swagger.Internal.Info Data.Swagger.Internal.Info a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Text.Internal.Text, b GHC.Types.~ Data.Text.Internal.Text) => Optics.Label.LabelOptic "title" k Data.Swagger.Internal.Info Data.Swagger.Internal.Info a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Text.Internal.Text, b GHC.Types.~ Data.Text.Internal.Text) => Optics.Label.LabelOptic "version" k Data.Swagger.Internal.Info Data.Swagger.Internal.Info a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Network.Socket.Info.HostName, b GHC.Types.~ Network.Socket.Info.HostName) => Optics.Label.LabelOptic "name" k Data.Swagger.Internal.Host Data.Swagger.Internal.Host a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Network.Socket.Types.PortNumber, b GHC.Types.~ GHC.Maybe.Maybe Network.Socket.Types.PortNumber) => Optics.Label.LabelOptic "port" k Data.Swagger.Internal.Host Data.Swagger.Internal.Host a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe GHC.IO.FilePath, b GHC.Types.~ GHC.Maybe.Maybe GHC.IO.FilePath) => Optics.Label.LabelOptic "basePath" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.MimeList, b GHC.Types.~ Data.Swagger.Internal.MimeList) => Optics.Label.LabelOptic "consumes" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.Definitions Data.Swagger.Internal.Schema, b GHC.Types.~ Data.Swagger.Internal.Definitions Data.Swagger.Internal.Schema) => Optics.Label.LabelOptic "definitions" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.ExternalDocs) => Optics.Label.LabelOptic "externalDocs" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Host, b GHC.Types.~ GHC.Maybe.Maybe Data.Swagger.Internal.Host) => Optics.Label.LabelOptic "host" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.Info, b GHC.Types.~ Data.Swagger.Internal.Info) => Optics.Label.LabelOptic "info" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.Definitions Data.Swagger.Internal.Param, b GHC.Types.~ Data.Swagger.Internal.Definitions Data.Swagger.Internal.Param) => Optics.Label.LabelOptic "parameters" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap GHC.IO.FilePath Data.Swagger.Internal.PathItem, b GHC.Types.~ Data.HashMap.Strict.InsOrd.InsOrdHashMap GHC.IO.FilePath Data.Swagger.Internal.PathItem) => Optics.Label.LabelOptic "paths" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.MimeList, b GHC.Types.~ Data.Swagger.Internal.MimeList) => Optics.Label.LabelOptic "produces" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.Definitions Data.Swagger.Internal.Response, b GHC.Types.~ Data.Swagger.Internal.Definitions Data.Swagger.Internal.Response) => Optics.Label.LabelOptic "responses" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ GHC.Maybe.Maybe [Data.Swagger.Internal.Scheme], b GHC.Types.~ GHC.Maybe.Maybe [Data.Swagger.Internal.Scheme]) => Optics.Label.LabelOptic "schemes" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ [Data.Swagger.Internal.SecurityRequirement], b GHC.Types.~ [Data.Swagger.Internal.SecurityRequirement]) => Optics.Label.LabelOptic "security" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.Swagger.Internal.SecurityDefinitions, b GHC.Types.~ Data.Swagger.Internal.SecurityDefinitions) => Optics.Label.LabelOptic "securityDefinitions" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens, a GHC.Types.~ Data.HashSet.InsOrd.InsOrdHashSet Data.Swagger.Internal.Tag, b GHC.Types.~ Data.HashSet.InsOrd.InsOrdHashSet Data.Swagger.Internal.Tag) => Optics.Label.LabelOptic "tags" k Data.Swagger.Internal.Swagger Data.Swagger.Internal.Swagger a b
-- | Generic deriving options for ToParamSchema and
-- ToSchema.
module Data.Swagger.SchemaOptions
-- | Options that specify how to encode your type to Swagger schema.
data SchemaOptions
SchemaOptions :: (String -> String) -> (String -> String) -> (String -> String) -> Bool -> Bool -> SchemaOptions
-- | Function applied to field labels. Handy for removing common record
-- prefixes for example.
[fieldLabelModifier] :: SchemaOptions -> String -> String
-- | Function applied to constructor tags which could be handy for
-- lower-casing them for example.
[constructorTagModifier] :: SchemaOptions -> String -> String
-- | Function applied to datatype name.
[datatypeNameModifier] :: SchemaOptions -> String -> String
-- | If True the constructors of a datatype, with all
-- nullary constructors, will be encoded to a string enumeration schema
-- with the constructor tags as possible values.
[allNullaryToStringTag] :: SchemaOptions -> Bool
-- | Hide the field name when a record constructor has only one field, like
-- a newtype.
[unwrapUnaryRecords] :: SchemaOptions -> Bool
-- | Default encoding SchemaOptions.
--
--
-- SchemaOptions
-- { fieldLabelModifier = id
-- , constructorTagModifier = id
-- , datatypeNameModifier = id
-- , allNullaryToStringTag = True
-- , unwrapUnaryRecords = False
-- }
--
defaultSchemaOptions :: SchemaOptions
-- | Convert Options to SchemaOptions.
--
-- Specifically the following fields get copied:
--
--
--
-- Note that these fields have no effect on SchemaOptions:
--
--
-- {-# LANGUAGE OverloadedStrings #-} -- allows to write Text literals
--
-- import Control.Lens
--
-- data Direction = Up | Down
--
-- instance ToParamSchema Direction where
-- toParamSchema _ = mempty
-- & type_ ?~ SwaggerString
-- & enum_ ?~ [ "Up", "Down" ]
--
--
-- Instead of manually writing your ToParamSchema
-- instance you can use a default generic implementation of
-- toParamSchema.
--
-- To do that, simply add deriving Generic clause to your
-- datatype and declare a ToParamSchema instance for your
-- datatype without giving definition for toParamSchema.
--
-- For instance, the previous example can be simplified into this:
--
--
-- {-# LANGUAGE DeriveGeneric #-}
--
-- import GHC.Generics (Generic)
--
-- data Direction = Up | Down deriving Generic
--
-- instance ToParamSchema Direction
--
class ToParamSchema a
-- | Convert a type into a plain parameter schema.
--
--
-- >>> encode $ toParamSchema (Proxy :: Proxy Integer)
-- "{\"type\":\"integer\"}"
--
toParamSchema :: ToParamSchema a => Proxy a -> ParamSchema t
-- | Convert a type into a plain parameter schema.
--
--
-- >>> encode $ toParamSchema (Proxy :: Proxy Integer)
-- "{\"type\":\"integer\"}"
--
toParamSchema :: (ToParamSchema a, Generic a, GToParamSchema (Rep a)) => Proxy a -> ParamSchema t
-- | Default plain schema for Bounded,
-- Integral types.
--
--
-- >>> encode $ toParamSchemaBoundedIntegral (Proxy :: Proxy Int8)
-- "{\"maximum\":127,\"minimum\":-128,\"type\":\"integer\"}"
--
toParamSchemaBoundedIntegral :: forall a t. (Bounded a, Integral a) => Proxy a -> ParamSchema t
timeParamSchema :: String -> ParamSchema t
type family ToParamSchemaByteStringError bs
-- | A configurable generic ParamSchema creator.
--
--
-- >>> :set -XDeriveGeneric
--
-- >>> data Color = Red | Blue deriving Generic
--
-- >>> encode $ genericToParamSchema defaultSchemaOptions (Proxy :: Proxy Color)
-- "{\"enum\":[\"Red\",\"Blue\"],\"type\":\"string\"}"
--
genericToParamSchema :: forall a t. (Generic a, GToParamSchema (Rep a)) => SchemaOptions -> Proxy a -> ParamSchema t
class GToParamSchema (f :: * -> *)
gtoParamSchema :: GToParamSchema f => SchemaOptions -> Proxy f -> ParamSchema t -> ParamSchema t
class GEnumParamSchema (f :: * -> *)
genumParamSchema :: GEnumParamSchema f => SchemaOptions -> Proxy f -> ParamSchema t -> ParamSchema t
data Proxy3 a b c
Proxy3 :: Proxy3 a b c
instance GHC.Generics.Constructor c => Data.Swagger.Internal.ParamSchema.GEnumParamSchema (GHC.Generics.C1 c GHC.Generics.U1)
instance GHC.Generics.Constructor c => Data.Swagger.Internal.ParamSchema.GToParamSchema (GHC.Generics.C1 c GHC.Generics.U1)
instance (Data.Swagger.Internal.ParamSchema.GEnumParamSchema f, Data.Swagger.Internal.ParamSchema.GEnumParamSchema g) => Data.Swagger.Internal.ParamSchema.GToParamSchema (f GHC.Generics.:+: g)
instance (Data.Swagger.Internal.ParamSchema.GEnumParamSchema f, Data.Swagger.Internal.ParamSchema.GEnumParamSchema g) => Data.Swagger.Internal.ParamSchema.GEnumParamSchema (f GHC.Generics.:+: g)
instance Data.Swagger.Internal.ParamSchema.ToParamSchemaByteStringError Data.ByteString.Internal.ByteString => Data.Swagger.Internal.ParamSchema.ToParamSchema Data.ByteString.Internal.ByteString
instance Data.Swagger.Internal.ParamSchema.ToParamSchemaByteStringError Data.ByteString.Lazy.Internal.ByteString => Data.Swagger.Internal.ParamSchema.ToParamSchema Data.ByteString.Lazy.Internal.ByteString
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Base.String
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Types.Bool
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Integer.Type.Integer
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Natural.Natural
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Types.Int
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Int.Int8
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Int.Int16
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Int.Int32
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Int.Int64
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Types.Word
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Word.Word8
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Word.Word16
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Word.Word32
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Word.Word64
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Types.Char
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Scientific.Scientific
instance Data.Fixed.HasResolution a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Fixed.Fixed a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Types.Double
instance Data.Swagger.Internal.ParamSchema.ToParamSchema GHC.Types.Float
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Time.Calendar.Days.Day
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Time.Clock.Internal.UTCTime.UTCTime
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Text.Internal.Text
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Text.Internal.Lazy.Text
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Version.Version
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Web.Cookie.SetCookie
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Semigroup.Internal.All
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.Semigroup.Internal.Any
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Semigroup.Internal.Sum a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Semigroup.Internal.Product a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Monoid.First a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Monoid.Last a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Semigroup.Internal.Dual a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Functor.Identity.Identity a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema [a]
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Vector.Vector a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Vector.Primitive.Vector a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Vector.Storable.Vector a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Vector.Unboxed.Base.Vector a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.Set.Internal.Set a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema a => Data.Swagger.Internal.ParamSchema.ToParamSchema (Data.HashSet.Internal.HashSet a)
instance Data.Swagger.Internal.ParamSchema.ToParamSchema ()
instance Data.Swagger.Internal.ParamSchema.ToParamSchema Data.UUID.Types.Internal.UUID
instance Data.Swagger.Internal.ParamSchema.ToParamSchema c => Data.Swagger.Internal.ParamSchema.GToParamSchema (GHC.Generics.K1 i c)
instance Data.Swagger.Internal.ParamSchema.GToParamSchema f => Data.Swagger.Internal.ParamSchema.GToParamSchema (GHC.Generics.D1 d f)
instance Data.Swagger.Internal.ParamSchema.GToParamSchema f => Data.Swagger.Internal.ParamSchema.GToParamSchema (GHC.Generics.C1 c (GHC.Generics.S1 s f))
-- | Types and functions for working with Swagger parameter schema.
module Data.Swagger.ParamSchema
-- | Convert a type into a plain ParamSchema.
--
-- An example type and instance:
--
--
-- {-# LANGUAGE OverloadedStrings #-} -- allows to write Text literals
--
-- import Control.Lens
--
-- data Direction = Up | Down
--
-- instance ToParamSchema Direction where
-- toParamSchema _ = mempty
-- & type_ ?~ SwaggerString
-- & enum_ ?~ [ "Up", "Down" ]
--
--
-- Instead of manually writing your ToParamSchema
-- instance you can use a default generic implementation of
-- toParamSchema.
--
-- To do that, simply add deriving Generic clause to your
-- datatype and declare a ToParamSchema instance for your
-- datatype without giving definition for toParamSchema.
--
-- For instance, the previous example can be simplified into this:
--
--
-- {-# LANGUAGE DeriveGeneric #-}
--
-- import GHC.Generics (Generic)
--
-- data Direction = Up | Down deriving Generic
--
-- instance ToParamSchema Direction
--
class ToParamSchema a
-- | Convert a type into a plain parameter schema.
--
--
-- >>> encode $ toParamSchema (Proxy :: Proxy Integer)
-- "{\"type\":\"integer\"}"
--
toParamSchema :: ToParamSchema a => Proxy a -> ParamSchema t
-- | Convert a type into a plain parameter schema.
--
--
-- >>> encode $ toParamSchema (Proxy :: Proxy Integer)
-- "{\"type\":\"integer\"}"
--
toParamSchema :: (ToParamSchema a, Generic a, GToParamSchema (Rep a)) => Proxy a -> ParamSchema t
-- | A configurable generic ParamSchema creator.
--
--
-- >>> :set -XDeriveGeneric
--
-- >>> data Color = Red | Blue deriving Generic
--
-- >>> encode $ genericToParamSchema defaultSchemaOptions (Proxy :: Proxy Color)
-- "{\"enum\":[\"Red\",\"Blue\"],\"type\":\"string\"}"
--
genericToParamSchema :: forall a t. (Generic a, GToParamSchema (Rep a)) => SchemaOptions -> Proxy a -> ParamSchema t
-- | Default plain schema for Bounded,
-- Integral types.
--
--
-- >>> encode $ toParamSchemaBoundedIntegral (Proxy :: Proxy Int8)
-- "{\"maximum\":127,\"minimum\":-128,\"type\":\"integer\"}"
--
toParamSchemaBoundedIntegral :: forall a t. (Bounded a, Integral a) => Proxy a -> ParamSchema t
-- | Default schema for password string. "password" format is used
-- to hint UIs the input needs to be obscured.
passwordParamSchema :: ParamSchema t
-- | Default schema for binary data (any sequence of octets).
binaryParamSchema :: ParamSchema t
-- | Default schema for binary data (base64 encoded).
byteParamSchema :: ParamSchema t
-- | Options that specify how to encode your type to Swagger schema.
data SchemaOptions
SchemaOptions :: (String -> String) -> (String -> String) -> (String -> String) -> Bool -> Bool -> SchemaOptions
-- | Function applied to field labels. Handy for removing common record
-- prefixes for example.
[fieldLabelModifier] :: SchemaOptions -> String -> String
-- | Function applied to constructor tags which could be handy for
-- lower-casing them for example.
[constructorTagModifier] :: SchemaOptions -> String -> String
-- | Function applied to datatype name.
[datatypeNameModifier] :: SchemaOptions -> String -> String
-- | If True the constructors of a datatype, with all
-- nullary constructors, will be encoded to a string enumeration schema
-- with the constructor tags as possible values.
[allNullaryToStringTag] :: SchemaOptions -> Bool
-- | Hide the field name when a record constructor has only one field, like
-- a newtype.
[unwrapUnaryRecords] :: SchemaOptions -> Bool
-- | Default encoding SchemaOptions.
--
--
-- SchemaOptions
-- { fieldLabelModifier = id
-- , constructorTagModifier = id
-- , datatypeNameModifier = id
-- , allNullaryToStringTag = True
-- , unwrapUnaryRecords = False
-- }
--
defaultSchemaOptions :: SchemaOptions
module Data.Swagger.Internal.Schema
unnamed :: Schema -> NamedSchema
named :: Text -> Schema -> NamedSchema
plain :: Schema -> Declare (Definitions Schema) NamedSchema
unname :: NamedSchema -> NamedSchema
rename :: Maybe Text -> NamedSchema -> NamedSchema
-- | Convert a type into Schema.
--
-- An example type and instance:
--
--
-- {-# LANGUAGE OverloadedStrings #-} -- allows to write Text literals
-- {-# LANGUAGE OverloadedLists #-} -- allows to write Map and HashMap as lists
--
-- import Control.Lens
-- import Data.Proxy
-- import Data.Swagger
--
-- data Coord = Coord { x :: Double, y :: Double }
--
-- instance ToSchema Coord where
-- declareNamedSchema _ = do
-- doubleSchema <- declareSchemaRef (Proxy :: Proxy Double)
-- return $ NamedSchema (Just "Coord") $ mempty
-- & type_ ?~ SwaggerObject
-- & properties .~
-- [ ("x", doubleSchema)
-- , ("y", doubleSchema)
-- ]
-- & required .~ [ "x", "y" ]
--
--
-- Instead of manually writing your ToSchema instance you
-- can use a default generic implementation of
-- declareNamedSchema.
--
-- To do that, simply add deriving Generic clause to your
-- datatype and declare a ToSchema instance for your
-- datatype without giving definition for
-- declareNamedSchema.
--
-- For instance, the previous example can be simplified into this:
--
--
-- {-# LANGUAGE DeriveGeneric #-}
--
-- import GHC.Generics (Generic)
--
-- data Coord = Coord { x :: Double, y :: Double } deriving Generic
--
-- instance ToSchema Coord
--
class ToSchema a
-- | Convert a type into an optionally named schema together with all used
-- definitions. Note that the schema itself is included in definitions
-- only if it is recursive (and thus needs its definition in scope).
declareNamedSchema :: ToSchema a => Proxy a -> Declare (Definitions Schema) NamedSchema
-- | Convert a type into an optionally named schema together with all used
-- definitions. Note that the schema itself is included in definitions
-- only if it is recursive (and thus needs its definition in scope).
declareNamedSchema :: (ToSchema a, Generic a, GToSchema (Rep a), TypeHasSimpleShape a "genericDeclareNamedSchemaUnrestricted") => Proxy a -> Declare (Definitions Schema) NamedSchema
-- | Convert a type into a schema and declare all used schema definitions.
declareSchema :: ToSchema a => Proxy a -> Declare (Definitions Schema) Schema
-- | Convert a type into an optionally named schema.
--
--
-- >>> toNamedSchema (Proxy :: Proxy String) ^. name
-- Nothing
--
-- >>> encode (toNamedSchema (Proxy :: Proxy String) ^. schema)
-- "{\"type\":\"string\"}"
--
--
--
-- >>> toNamedSchema (Proxy :: Proxy Day) ^. name
-- Just "Day"
--
-- >>> encode (toNamedSchema (Proxy :: Proxy Day) ^. schema)
-- "{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"}"
--
toNamedSchema :: ToSchema a => Proxy a -> NamedSchema
-- | Get type's schema name according to its ToSchema
-- instance.
--
-- -- >>> schemaName (Proxy :: Proxy Int) -- Nothing ---- --
-- >>> schemaName (Proxy :: Proxy UTCTime) -- Just "UTCTime" --schemaName :: ToSchema a => Proxy a -> Maybe Text -- | Convert a type into a schema. -- --
-- >>> encode $ toSchema (Proxy :: Proxy Int8)
-- "{\"maximum\":127,\"minimum\":-128,\"type\":\"integer\"}"
--
--
--
-- >>> encode $ toSchema (Proxy :: Proxy [Day])
-- "{\"items\":{\"$ref\":\"#/definitions/Day\"},\"type\":\"array\"}"
--
toSchema :: ToSchema a => Proxy a -> Schema
-- | Convert a type into a referenced schema if possible. Only named
-- schemas can be referenced, nameless schemas are inlined.
--
--
-- >>> encode $ toSchemaRef (Proxy :: Proxy Integer)
-- "{\"type\":\"integer\"}"
--
--
--
-- >>> encode $ toSchemaRef (Proxy :: Proxy Day)
-- "{\"$ref\":\"#/definitions/Day\"}"
--
toSchemaRef :: ToSchema a => Proxy a -> Referenced Schema
-- | Convert a type into a referenced schema if possible and declare all
-- used schema definitions. Only named schemas can be referenced,
-- nameless schemas are inlined.
--
-- Schema definitions are typically declared for every referenced schema.
-- If declareSchemaRef returns a reference, a
-- corresponding schema will be declared (regardless of whether it is
-- recusive or not).
declareSchemaRef :: ToSchema a => Proxy a -> Declare (Definitions Schema) (Referenced Schema)
-- | Inline any referenced schema if its name satisfies given predicate.
--
-- NOTE: if a referenced schema is not found in definitions the
-- predicate is ignored and schema stays referenced.
--
-- WARNING: inlineSchemasWhen will produce
-- infinite schemas when inlining recursive schemas.
inlineSchemasWhen :: Data s => (Text -> Bool) -> Definitions Schema -> s -> s
-- | Inline any referenced schema if its name is in the given list.
--
-- NOTE: if a referenced schema is not found in definitions it
-- stays referenced even if it appears in the list of names.
--
-- WARNING: inlineSchemas will produce infinite
-- schemas when inlining recursive schemas.
inlineSchemas :: Data s => [Text] -> Definitions Schema -> s -> s
-- | Inline all schema references for which the definition can be found in
-- Definitions.
--
-- WARNING: inlineAllSchemas will produce infinite
-- schemas when inlining recursive schemas.
inlineAllSchemas :: Data s => Definitions Schema -> s -> s
-- | Convert a type into a schema without references.
--
--
-- >>> encode $ toInlinedSchema (Proxy :: Proxy [Day])
-- "{\"items\":{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"},\"type\":\"array\"}"
--
--
-- WARNING: toInlinedSchema will produce infinite
-- schema when inlining recursive schemas.
toInlinedSchema :: ToSchema a => Proxy a -> Schema
-- | Inline all non-recursive schemas for which the definition can
-- be found in Definitions.
inlineNonRecursiveSchemas :: Data s => Definitions Schema -> s -> s
-- | Default schema for binary data (any sequence of octets).
binarySchema :: Schema
-- | Default schema for binary data (base64 encoded).
byteSchema :: Schema
-- | Default schema for password string. "password" format is used
-- to hint UIs the input needs to be obscured.
passwordSchema :: Schema
-- | Make an unrestrictive sketch of a Schema based on a
-- ToJSON instance. Produced schema can be used for
-- further refinement.
--
--
-- >>> encode $ sketchSchema "hello"
-- "{\"example\":\"hello\",\"type\":\"string\"}"
--
--
--
-- >>> encode $ sketchSchema (1, 2, 3)
-- "{\"example\":[1,2,3],\"items\":{\"type\":\"number\"},\"type\":\"array\"}"
--
--
--
-- >>> encode $ sketchSchema ("Jack", 25)
-- "{\"example\":[\"Jack\",25],\"items\":[{\"type\":\"string\"},{\"type\":\"number\"}],\"type\":\"array\"}"
--
--
--
-- >>> data Person = Person { name :: String, age :: Int } deriving (Generic)
--
-- >>> instance ToJSON Person
--
-- >>> encode $ sketchSchema (Person "Jack" 25)
-- "{\"required\":[\"name\",\"age\"],\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"number\"}},\"example\":{\"age\":25,\"name\":\"Jack\"},\"type\":\"object\"}"
--
sketchSchema :: ToJSON a => a -> Schema
-- | Make a restrictive sketch of a Schema based on a
-- ToJSON instance. Produced schema uses as much
-- constraints as possible.
--
--
-- >>> encode $ sketchStrictSchema "hello"
-- "{\"enum\":[\"hello\"],\"maxLength\":5,\"minLength\":5,\"pattern\":\"hello\",\"type\":\"string\"}"
--
--
--
-- >>> encode $ sketchStrictSchema (1, 2, 3)
-- "{\"enum\":[[1,2,3]],\"items\":[{\"enum\":[1],\"maximum\":1,\"minimum\":1,\"multipleOf\":1,\"type\":\"number\"},{\"enum\":[2],\"maximum\":2,\"minimum\":2,\"multipleOf\":2,\"type\":\"number\"},{\"enum\":[3],\"maximum\":3,\"minimum\":3,\"multipleOf\":3,\"type\":\"number\"}],\"maxItems\":3,\"minItems\":3,\"type\":\"array\",\"uniqueItems\":true}"
--
--
--
-- >>> encode $ sketchStrictSchema ("Jack", 25)
-- "{\"enum\":[[\"Jack\",25]],\"items\":[{\"enum\":[\"Jack\"],\"maxLength\":4,\"minLength\":4,\"pattern\":\"Jack\",\"type\":\"string\"},{\"enum\":[25],\"maximum\":25,\"minimum\":25,\"multipleOf\":25,\"type\":\"number\"}],\"maxItems\":2,\"minItems\":2,\"type\":\"array\",\"uniqueItems\":true}"
--
--
--
-- >>> data Person = Person { name :: String, age :: Int } deriving (Generic)
--
-- >>> instance ToJSON Person
--
-- >>> encode $ sketchStrictSchema (Person "Jack" 25)
-- "{\"required\":[\"name\",\"age\"],\"properties\":{\"name\":{\"enum\":[\"Jack\"],\"maxLength\":4,\"minLength\":4,\"pattern\":\"Jack\",\"type\":\"string\"},\"age\":{\"enum\":[25],\"maximum\":25,\"minimum\":25,\"multipleOf\":25,\"type\":\"number\"}},\"maxProperties\":2,\"minProperties\":2,\"enum\":[{\"age\":25,\"name\":\"Jack\"}],\"type\":\"object\"}"
--
sketchStrictSchema :: ToJSON a => a -> Schema
class GToSchema (f :: * -> *)
gdeclareNamedSchema :: GToSchema f => SchemaOptions -> Proxy f -> Schema -> Declare (Definitions Schema) NamedSchema
timeSchema :: Text -> Schema
type family ToSchemaByteStringError bs
-- | Default schema for Bounded, Integral
-- types.
--
--
-- >>> encode $ toSchemaBoundedIntegral (Proxy :: Proxy Int16)
-- "{\"maximum\":32767,\"minimum\":-32768,\"type\":\"integer\"}"
--
toSchemaBoundedIntegral :: forall a. (Bounded a, Integral a) => Proxy a -> Schema
-- | Default generic named schema for Bounded,
-- Integral types.
genericToNamedSchemaBoundedIntegral :: forall a d f. (Bounded a, Integral a, Generic a, Rep a ~ D1 d f, Datatype d) => SchemaOptions -> Proxy a -> NamedSchema
-- | Declare a named schema for a newtype wrapper.
genericDeclareNamedSchemaNewtype :: forall a d c s i inner. (Generic a, Datatype d, Rep a ~ D1 d (C1 c (S1 s (K1 i inner)))) => SchemaOptions -> (Proxy inner -> Declare (Definitions Schema) Schema) -> Proxy a -> Declare (Definitions Schema) NamedSchema
-- | Declare Schema for a mapping with Bounded Enum
-- keys. This makes a much more useful schema when there aren't many
-- options for key values.
--
--
-- >>> data ButtonState = Neutral | Focus | Active | Hover | Disabled deriving (Show, Bounded, Enum, Generic)
--
-- >>> instance ToJSON ButtonState
--
-- >>> instance ToSchema ButtonState
--
-- >>> instance ToJSONKey ButtonState where toJSONKey = toJSONKeyText (T.pack . show)
--
-- >>> type ImageUrl = T.Text
--
-- >>> encode $ toSchemaBoundedEnumKeyMapping (Proxy :: Proxy (Map ButtonState ImageUrl))
-- "{\"properties\":{\"Neutral\":{\"type\":\"string\"},\"Focus\":{\"type\":\"string\"},\"Active\":{\"type\":\"string\"},\"Hover\":{\"type\":\"string\"},\"Disabled\":{\"type\":\"string\"}},\"type\":\"object\"}"
--
--
-- Note: this is only useful when key is encoded with
-- ToJSONKeyText. If it is encoded with ToJSONKeyValue then
-- a regular schema for [(key, value)] is used.
declareSchemaBoundedEnumKeyMapping :: forall map key value. (Bounded key, Enum key, ToJSONKey key, ToSchema key, ToSchema value) => Proxy (map key value) -> Declare (Definitions Schema) Schema
-- | A Schema for a mapping with Bounded Enum keys.
-- This makes a much more useful schema when there aren't many options
-- for key values.
--
--
-- >>> data ButtonState = Neutral | Focus | Active | Hover | Disabled deriving (Show, Bounded, Enum, Generic)
--
-- >>> instance ToJSON ButtonState
--
-- >>> instance ToSchema ButtonState
--
-- >>> instance ToJSONKey ButtonState where toJSONKey = toJSONKeyText (T.pack . show)
--
-- >>> type ImageUrl = T.Text
--
-- >>> encode $ toSchemaBoundedEnumKeyMapping (Proxy :: Proxy (Map ButtonState ImageUrl))
-- "{\"properties\":{\"Neutral\":{\"type\":\"string\"},\"Focus\":{\"type\":\"string\"},\"Active\":{\"type\":\"string\"},\"Hover\":{\"type\":\"string\"},\"Disabled\":{\"type\":\"string\"}},\"type\":\"object\"}"
--
--
-- Note: this is only useful when key is encoded with
-- ToJSONKeyText. If it is encoded with ToJSONKeyValue then
-- a regular schema for [(key, value)] is used.
toSchemaBoundedEnumKeyMapping :: forall map key value. (Bounded key, Enum key, ToJSONKey key, ToSchema key, ToSchema value) => Proxy (map key value) -> Schema
-- | A configurable generic Schema creator.
genericDeclareSchema :: (Generic a, GToSchema (Rep a), TypeHasSimpleShape a "genericDeclareSchemaUnrestricted") => SchemaOptions -> Proxy a -> Declare (Definitions Schema) Schema
-- | A configurable generic NamedSchema creator. This
-- function applied to defaultSchemaOptions is used as
-- the default for declareNamedSchema when the type is an
-- instance of Generic.
genericDeclareNamedSchema :: (Generic a, GToSchema (Rep a), TypeHasSimpleShape a "genericDeclareNamedSchemaUnrestricted") => SchemaOptions -> Proxy a -> Declare (Definitions Schema) NamedSchema
-- | A configurable generic Schema creator.
--
-- Unlike genericDeclareSchema also works for mixed sum types. Use
-- with care since some Swagger tools do not support well schemas for
-- mixed sum types.
genericDeclareSchemaUnrestricted :: (Generic a, GToSchema (Rep a)) => SchemaOptions -> Proxy a -> Declare (Definitions Schema) Schema
-- | A configurable generic NamedSchema creator.
--
-- Unlike genericDeclareNamedSchema also works for mixed sum
-- types. Use with care since some Swagger tools do not support well
-- schemas for mixed sum types.
genericDeclareNamedSchemaUnrestricted :: forall a. (Generic a, GToSchema (Rep a)) => SchemaOptions -> Proxy a -> Declare (Definitions Schema) NamedSchema
-- | Derive a Generic-based name for a datatype and assign it to a
-- given Schema.
genericNameSchema :: forall a d f. (Generic a, Rep a ~ D1 d f, Datatype d) => SchemaOptions -> Proxy a -> Schema -> NamedSchema
gdatatypeSchemaName :: forall d. Datatype d => SchemaOptions -> Proxy d -> Maybe Text
-- | Lift a plain ParamSchema into a model
-- NamedSchema.
paramSchemaToNamedSchema :: (ToParamSchema a, Generic a, Rep a ~ D1 d f, Datatype d) => SchemaOptions -> Proxy a -> NamedSchema
-- | Lift a plain ParamSchema into a model
-- Schema.
paramSchemaToSchema :: ToParamSchema a => Proxy a -> Schema
nullarySchema :: Schema
gtoNamedSchema :: GToSchema f => SchemaOptions -> Proxy f -> NamedSchema
gdeclareSchema :: GToSchema f => SchemaOptions -> Proxy f -> Declare (Definitions Schema) Schema
gdeclareSchemaRef :: GToSchema a => SchemaOptions -> Proxy a -> Declare (Definitions Schema) (Referenced Schema)
appendItem :: Referenced Schema -> Maybe (SwaggerItems 'SwaggerKindSchema) -> Maybe (SwaggerItems 'SwaggerKindSchema)
withFieldSchema :: forall proxy s f. (Selector s, GToSchema f) => SchemaOptions -> proxy s f -> Bool -> Schema -> Declare (Definitions Schema) Schema
gdeclareNamedSumSchema :: GSumToSchema f => SchemaOptions -> Proxy f -> Schema -> Declare (Definitions Schema) NamedSchema
type AllNullary = All
class GSumToSchema (f :: * -> *)
gsumToSchema :: GSumToSchema f => SchemaOptions -> Proxy f -> Schema -> WriterT AllNullary (Declare (Definitions Schema)) Schema
gsumConToSchemaWith :: forall c f. (GToSchema (C1 c f), Constructor c) => Referenced Schema -> SchemaOptions -> Proxy (C1 c f) -> Schema -> Schema
gsumConToSchema :: (GToSchema (C1 c f), Constructor c) => SchemaOptions -> Proxy (C1 c f) -> Schema -> Declare (Definitions Schema) Schema
data Proxy2 a b
Proxy2 :: Proxy2 a b
data Proxy3 a b c
Proxy3 :: Proxy3 a b c
instance (GHC.Generics.Selector s, Data.Swagger.Internal.Schema.ToSchema c) => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.S1 s (GHC.Generics.K1 i (GHC.Maybe.Maybe c)))
instance (GHC.Generics.Selector s, Data.Swagger.Internal.Schema.GToSchema f) => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.S1 s f)
instance (Data.Swagger.Internal.Schema.GSumToSchema f, Data.Swagger.Internal.Schema.GSumToSchema g) => Data.Swagger.Internal.Schema.GToSchema (f GHC.Generics.:+: g)
instance (Data.Swagger.Internal.Schema.GSumToSchema f, Data.Swagger.Internal.Schema.GSumToSchema g) => Data.Swagger.Internal.Schema.GSumToSchema (f GHC.Generics.:+: g)
instance (GHC.Generics.Constructor c, Data.Swagger.Internal.Schema.GToSchema f) => Data.Swagger.Internal.Schema.GSumToSchema (GHC.Generics.C1 c f)
instance (GHC.Generics.Constructor c, GHC.Generics.Selector s, Data.Swagger.Internal.Schema.GToSchema f) => Data.Swagger.Internal.Schema.GSumToSchema (GHC.Generics.C1 c (GHC.Generics.S1 s f))
instance GHC.Generics.Constructor c => Data.Swagger.Internal.Schema.GSumToSchema (GHC.Generics.C1 c GHC.Generics.U1)
instance Data.Swagger.Internal.Schema.ToSchemaByteStringError Data.ByteString.Internal.ByteString => Data.Swagger.Internal.Schema.ToSchema Data.ByteString.Internal.ByteString
instance Data.Swagger.Internal.Schema.ToSchemaByteStringError Data.ByteString.Lazy.Internal.ByteString => Data.Swagger.Internal.Schema.ToSchema Data.ByteString.Lazy.Internal.ByteString
instance Data.Swagger.Internal.Schema.ToSchema Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema [a]
instance Data.Swagger.Internal.Schema.ToSchema GHC.Base.String
instance Data.Swagger.Internal.Schema.ToSchema GHC.Types.Bool
instance Data.Swagger.Internal.Schema.ToSchema GHC.Integer.Type.Integer
instance Data.Swagger.Internal.Schema.ToSchema GHC.Natural.Natural
instance Data.Swagger.Internal.Schema.ToSchema GHC.Types.Int
instance Data.Swagger.Internal.Schema.ToSchema GHC.Int.Int8
instance Data.Swagger.Internal.Schema.ToSchema GHC.Int.Int16
instance Data.Swagger.Internal.Schema.ToSchema GHC.Int.Int32
instance Data.Swagger.Internal.Schema.ToSchema GHC.Int.Int64
instance Data.Swagger.Internal.Schema.ToSchema GHC.Types.Word
instance Data.Swagger.Internal.Schema.ToSchema GHC.Word.Word8
instance Data.Swagger.Internal.Schema.ToSchema GHC.Word.Word16
instance Data.Swagger.Internal.Schema.ToSchema GHC.Word.Word32
instance Data.Swagger.Internal.Schema.ToSchema GHC.Word.Word64
instance Data.Swagger.Internal.Schema.ToSchema GHC.Types.Char
instance Data.Swagger.Internal.Schema.ToSchema Data.Scientific.Scientific
instance Data.Swagger.Internal.Schema.ToSchema GHC.Types.Double
instance Data.Swagger.Internal.Schema.ToSchema GHC.Types.Float
instance Data.Fixed.HasResolution a => Data.Swagger.Internal.Schema.ToSchema (Data.Fixed.Fixed a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (GHC.Maybe.Maybe a)
instance (Data.Swagger.Internal.Schema.ToSchema a, Data.Swagger.Internal.Schema.ToSchema b) => Data.Swagger.Internal.Schema.ToSchema (Data.Either.Either a b)
instance Data.Swagger.Internal.Schema.ToSchema ()
instance Data.Swagger.Internal.Schema.ToSchema Data.UUID.Types.Internal.UUID
instance (Data.Swagger.Internal.Schema.ToSchema a, Data.Swagger.Internal.Schema.ToSchema b) => Data.Swagger.Internal.Schema.ToSchema (a, b)
instance (Data.Swagger.Internal.Schema.ToSchema a, Data.Swagger.Internal.Schema.ToSchema b, Data.Swagger.Internal.Schema.ToSchema c) => Data.Swagger.Internal.Schema.ToSchema (a, b, c)
instance (Data.Swagger.Internal.Schema.ToSchema a, Data.Swagger.Internal.Schema.ToSchema b, Data.Swagger.Internal.Schema.ToSchema c, Data.Swagger.Internal.Schema.ToSchema d) => Data.Swagger.Internal.Schema.ToSchema (a, b, c, d)
instance (Data.Swagger.Internal.Schema.ToSchema a, Data.Swagger.Internal.Schema.ToSchema b, Data.Swagger.Internal.Schema.ToSchema c, Data.Swagger.Internal.Schema.ToSchema d, Data.Swagger.Internal.Schema.ToSchema e) => Data.Swagger.Internal.Schema.ToSchema (a, b, c, d, e)
instance (Data.Swagger.Internal.Schema.ToSchema a, Data.Swagger.Internal.Schema.ToSchema b, Data.Swagger.Internal.Schema.ToSchema c, Data.Swagger.Internal.Schema.ToSchema d, Data.Swagger.Internal.Schema.ToSchema e, Data.Swagger.Internal.Schema.ToSchema f) => Data.Swagger.Internal.Schema.ToSchema (a, b, c, d, e, f)
instance (Data.Swagger.Internal.Schema.ToSchema a, Data.Swagger.Internal.Schema.ToSchema b, Data.Swagger.Internal.Schema.ToSchema c, Data.Swagger.Internal.Schema.ToSchema d, Data.Swagger.Internal.Schema.ToSchema e, Data.Swagger.Internal.Schema.ToSchema f, Data.Swagger.Internal.Schema.ToSchema g) => Data.Swagger.Internal.Schema.ToSchema (a, b, c, d, e, f, g)
instance Data.Swagger.Internal.Schema.ToSchema Data.Time.Calendar.Days.Day
instance Data.Swagger.Internal.Schema.ToSchema Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Data.Swagger.Internal.Schema.ToSchema Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
instance Data.Swagger.Internal.Schema.ToSchema Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime
instance Data.Swagger.Internal.Schema.ToSchema Data.Time.Clock.Internal.UTCTime.UTCTime
instance Data.Swagger.Internal.Schema.ToSchema Data.Text.Internal.Text
instance Data.Swagger.Internal.Schema.ToSchema Data.Text.Internal.Lazy.Text
instance Data.Swagger.Internal.Schema.ToSchema Data.Version.Version
instance Data.Swagger.Internal.Schema.ToSchema Data.IntSet.Internal.IntSet
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.IntMap.Internal.IntMap a)
instance (Data.Aeson.Types.ToJSON.ToJSONKey k, Data.Swagger.Internal.Schema.ToSchema k, Data.Swagger.Internal.Schema.ToSchema v) => Data.Swagger.Internal.Schema.ToSchema (Data.Map.Internal.Map k v)
instance (Data.Aeson.Types.ToJSON.ToJSONKey k, Data.Swagger.Internal.Schema.ToSchema k, Data.Swagger.Internal.Schema.ToSchema v) => Data.Swagger.Internal.Schema.ToSchema (Data.HashMap.Internal.HashMap k v)
instance Data.Swagger.Internal.Schema.ToSchema Data.Aeson.Types.Internal.Object
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Vector.Vector a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Vector.Unboxed.Base.Vector a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Vector.Storable.Vector a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Vector.Primitive.Vector a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Set.Internal.Set a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.HashSet.Internal.HashSet a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (GHC.Base.NonEmpty a)
instance Data.Swagger.Internal.Schema.ToSchema Data.Semigroup.Internal.All
instance Data.Swagger.Internal.Schema.ToSchema Data.Semigroup.Internal.Any
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Semigroup.Internal.Sum a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Semigroup.Internal.Product a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Monoid.First a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Monoid.Last a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Semigroup.Internal.Dual a)
instance Data.Swagger.Internal.Schema.ToSchema a => Data.Swagger.Internal.Schema.ToSchema (Data.Functor.Identity.Identity a)
instance Data.Swagger.Internal.Schema.ToSchema c => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.K1 i (GHC.Maybe.Maybe c))
instance Data.Swagger.Internal.Schema.ToSchema c => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.K1 i c)
instance (Data.Swagger.Internal.Schema.GToSchema f, Data.Swagger.Internal.Schema.GToSchema g) => Data.Swagger.Internal.Schema.GToSchema (f GHC.Generics.:*: g)
instance (GHC.Generics.Datatype d, Data.Swagger.Internal.Schema.GToSchema f) => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.D1 d f)
instance Data.Swagger.Internal.Schema.GToSchema f => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.C1 c f)
instance GHC.Generics.Constructor c => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.C1 c GHC.Generics.U1)
instance (GHC.Generics.Selector s, Data.Swagger.Internal.Schema.GToSchema f, Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.S1 s f)) => Data.Swagger.Internal.Schema.GToSchema (GHC.Generics.C1 c (GHC.Generics.S1 s f))
-- | Types and functions for working with Swagger schema.
module Data.Swagger.Schema
-- | Convert a type into Schema.
--
-- An example type and instance:
--
--
-- {-# LANGUAGE OverloadedStrings #-} -- allows to write Text literals
-- {-# LANGUAGE OverloadedLists #-} -- allows to write Map and HashMap as lists
--
-- import Control.Lens
-- import Data.Proxy
-- import Data.Swagger
--
-- data Coord = Coord { x :: Double, y :: Double }
--
-- instance ToSchema Coord where
-- declareNamedSchema _ = do
-- doubleSchema <- declareSchemaRef (Proxy :: Proxy Double)
-- return $ NamedSchema (Just "Coord") $ mempty
-- & type_ ?~ SwaggerObject
-- & properties .~
-- [ ("x", doubleSchema)
-- , ("y", doubleSchema)
-- ]
-- & required .~ [ "x", "y" ]
--
--
-- Instead of manually writing your ToSchema instance you
-- can use a default generic implementation of
-- declareNamedSchema.
--
-- To do that, simply add deriving Generic clause to your
-- datatype and declare a ToSchema instance for your
-- datatype without giving definition for
-- declareNamedSchema.
--
-- For instance, the previous example can be simplified into this:
--
--
-- {-# LANGUAGE DeriveGeneric #-}
--
-- import GHC.Generics (Generic)
--
-- data Coord = Coord { x :: Double, y :: Double } deriving Generic
--
-- instance ToSchema Coord
--
class ToSchema a
-- | Convert a type into an optionally named schema together with all used
-- definitions. Note that the schema itself is included in definitions
-- only if it is recursive (and thus needs its definition in scope).
declareNamedSchema :: ToSchema a => Proxy a -> Declare (Definitions Schema) NamedSchema
-- | Convert a type into an optionally named schema together with all used
-- definitions. Note that the schema itself is included in definitions
-- only if it is recursive (and thus needs its definition in scope).
declareNamedSchema :: (ToSchema a, Generic a, GToSchema (Rep a), TypeHasSimpleShape a "genericDeclareNamedSchemaUnrestricted") => Proxy a -> Declare (Definitions Schema) NamedSchema
-- | Convert a type into a schema and declare all used schema definitions.
declareSchema :: ToSchema a => Proxy a -> Declare (Definitions Schema) Schema
-- | Convert a type into a referenced schema if possible and declare all
-- used schema definitions. Only named schemas can be referenced,
-- nameless schemas are inlined.
--
-- Schema definitions are typically declared for every referenced schema.
-- If declareSchemaRef returns a reference, a
-- corresponding schema will be declared (regardless of whether it is
-- recusive or not).
declareSchemaRef :: ToSchema a => Proxy a -> Declare (Definitions Schema) (Referenced Schema)
-- | Convert a type into a schema.
--
--
-- >>> encode $ toSchema (Proxy :: Proxy Int8)
-- "{\"maximum\":127,\"minimum\":-128,\"type\":\"integer\"}"
--
--
--
-- >>> encode $ toSchema (Proxy :: Proxy [Day])
-- "{\"items\":{\"$ref\":\"#/definitions/Day\"},\"type\":\"array\"}"
--
toSchema :: ToSchema a => Proxy a -> Schema
-- | Convert a type into a referenced schema if possible. Only named
-- schemas can be referenced, nameless schemas are inlined.
--
--
-- >>> encode $ toSchemaRef (Proxy :: Proxy Integer)
-- "{\"type\":\"integer\"}"
--
--
--
-- >>> encode $ toSchemaRef (Proxy :: Proxy Day)
-- "{\"$ref\":\"#/definitions/Day\"}"
--
toSchemaRef :: ToSchema a => Proxy a -> Referenced Schema
-- | Get type's schema name according to its ToSchema
-- instance.
--
-- -- >>> schemaName (Proxy :: Proxy Int) -- Nothing ---- --
-- >>> schemaName (Proxy :: Proxy UTCTime) -- Just "UTCTime" --schemaName :: ToSchema a => Proxy a -> Maybe Text -- | Convert a type into a schema without references. -- --
-- >>> encode $ toInlinedSchema (Proxy :: Proxy [Day])
-- "{\"items\":{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"},\"type\":\"array\"}"
--
--
-- WARNING: toInlinedSchema will produce infinite
-- schema when inlining recursive schemas.
toInlinedSchema :: ToSchema a => Proxy a -> Schema
-- | A configurable generic NamedSchema creator. This
-- function applied to defaultSchemaOptions is used as
-- the default for declareNamedSchema when the type is an
-- instance of Generic.
genericDeclareNamedSchema :: (Generic a, GToSchema (Rep a), TypeHasSimpleShape a "genericDeclareNamedSchemaUnrestricted") => SchemaOptions -> Proxy a -> Declare (Definitions Schema) NamedSchema
-- | A configurable generic Schema creator.
genericDeclareSchema :: (Generic a, GToSchema (Rep a), TypeHasSimpleShape a "genericDeclareSchemaUnrestricted") => SchemaOptions -> Proxy a -> Declare (Definitions Schema) Schema
-- | Declare a named schema for a newtype wrapper.
genericDeclareNamedSchemaNewtype :: forall a d c s i inner. (Generic a, Datatype d, Rep a ~ D1 d (C1 c (S1 s (K1 i inner)))) => SchemaOptions -> (Proxy inner -> Declare (Definitions Schema) Schema) -> Proxy a -> Declare (Definitions Schema) NamedSchema
-- | Derive a Generic-based name for a datatype and assign it to a
-- given Schema.
genericNameSchema :: forall a d f. (Generic a, Rep a ~ D1 d f, Datatype d) => SchemaOptions -> Proxy a -> Schema -> NamedSchema
-- | Default generic named schema for Bounded,
-- Integral types.
genericToNamedSchemaBoundedIntegral :: forall a d f. (Bounded a, Integral a, Generic a, Rep a ~ D1 d f, Datatype d) => SchemaOptions -> Proxy a -> NamedSchema
-- | Default schema for Bounded, Integral
-- types.
--
--
-- >>> encode $ toSchemaBoundedIntegral (Proxy :: Proxy Int16)
-- "{\"maximum\":32767,\"minimum\":-32768,\"type\":\"integer\"}"
--
toSchemaBoundedIntegral :: forall a. (Bounded a, Integral a) => Proxy a -> Schema
-- | Declare Schema for a mapping with Bounded Enum
-- keys. This makes a much more useful schema when there aren't many
-- options for key values.
--
--
-- >>> data ButtonState = Neutral | Focus | Active | Hover | Disabled deriving (Show, Bounded, Enum, Generic)
--
-- >>> instance ToJSON ButtonState
--
-- >>> instance ToSchema ButtonState
--
-- >>> instance ToJSONKey ButtonState where toJSONKey = toJSONKeyText (T.pack . show)
--
-- >>> type ImageUrl = T.Text
--
-- >>> encode $ toSchemaBoundedEnumKeyMapping (Proxy :: Proxy (Map ButtonState ImageUrl))
-- "{\"properties\":{\"Neutral\":{\"type\":\"string\"},\"Focus\":{\"type\":\"string\"},\"Active\":{\"type\":\"string\"},\"Hover\":{\"type\":\"string\"},\"Disabled\":{\"type\":\"string\"}},\"type\":\"object\"}"
--
--
-- Note: this is only useful when key is encoded with
-- ToJSONKeyText. If it is encoded with ToJSONKeyValue then
-- a regular schema for [(key, value)] is used.
declareSchemaBoundedEnumKeyMapping :: forall map key value. (Bounded key, Enum key, ToJSONKey key, ToSchema key, ToSchema value) => Proxy (map key value) -> Declare (Definitions Schema) Schema
-- | A Schema for a mapping with Bounded Enum keys.
-- This makes a much more useful schema when there aren't many options
-- for key values.
--
--
-- >>> data ButtonState = Neutral | Focus | Active | Hover | Disabled deriving (Show, Bounded, Enum, Generic)
--
-- >>> instance ToJSON ButtonState
--
-- >>> instance ToSchema ButtonState
--
-- >>> instance ToJSONKey ButtonState where toJSONKey = toJSONKeyText (T.pack . show)
--
-- >>> type ImageUrl = T.Text
--
-- >>> encode $ toSchemaBoundedEnumKeyMapping (Proxy :: Proxy (Map ButtonState ImageUrl))
-- "{\"properties\":{\"Neutral\":{\"type\":\"string\"},\"Focus\":{\"type\":\"string\"},\"Active\":{\"type\":\"string\"},\"Hover\":{\"type\":\"string\"},\"Disabled\":{\"type\":\"string\"}},\"type\":\"object\"}"
--
--
-- Note: this is only useful when key is encoded with
-- ToJSONKeyText. If it is encoded with ToJSONKeyValue then
-- a regular schema for [(key, value)] is used.
toSchemaBoundedEnumKeyMapping :: forall map key value. (Bounded key, Enum key, ToJSONKey key, ToSchema key, ToSchema value) => Proxy (map key value) -> Schema
-- | Lift a plain ParamSchema into a model
-- NamedSchema.
paramSchemaToNamedSchema :: (ToParamSchema a, Generic a, Rep a ~ D1 d f, Datatype d) => SchemaOptions -> Proxy a -> NamedSchema
-- | Lift a plain ParamSchema into a model
-- Schema.
paramSchemaToSchema :: ToParamSchema a => Proxy a -> Schema
-- | A configurable generic NamedSchema creator.
--
-- Unlike genericDeclareNamedSchema also works for mixed sum
-- types. Use with care since some Swagger tools do not support well
-- schemas for mixed sum types.
genericDeclareNamedSchemaUnrestricted :: forall a. (Generic a, GToSchema (Rep a)) => SchemaOptions -> Proxy a -> Declare (Definitions Schema) NamedSchema
-- | A configurable generic Schema creator.
--
-- Unlike genericDeclareSchema also works for mixed sum types. Use
-- with care since some Swagger tools do not support well schemas for
-- mixed sum types.
genericDeclareSchemaUnrestricted :: (Generic a, GToSchema (Rep a)) => SchemaOptions -> Proxy a -> Declare (Definitions Schema) Schema
-- | Default schema for password string. "password" format is used
-- to hint UIs the input needs to be obscured.
passwordSchema :: Schema
-- | Default schema for binary data (any sequence of octets).
binarySchema :: Schema
-- | Default schema for binary data (base64 encoded).
byteSchema :: Schema
-- | Make an unrestrictive sketch of a Schema based on a
-- ToJSON instance. Produced schema can be used for
-- further refinement.
--
--
-- >>> encode $ sketchSchema "hello"
-- "{\"example\":\"hello\",\"type\":\"string\"}"
--
--
--
-- >>> encode $ sketchSchema (1, 2, 3)
-- "{\"example\":[1,2,3],\"items\":{\"type\":\"number\"},\"type\":\"array\"}"
--
--
--
-- >>> encode $ sketchSchema ("Jack", 25)
-- "{\"example\":[\"Jack\",25],\"items\":[{\"type\":\"string\"},{\"type\":\"number\"}],\"type\":\"array\"}"
--
--
--
-- >>> data Person = Person { name :: String, age :: Int } deriving (Generic)
--
-- >>> instance ToJSON Person
--
-- >>> encode $ sketchSchema (Person "Jack" 25)
-- "{\"required\":[\"name\",\"age\"],\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"number\"}},\"example\":{\"age\":25,\"name\":\"Jack\"},\"type\":\"object\"}"
--
sketchSchema :: ToJSON a => a -> Schema
-- | Make a restrictive sketch of a Schema based on a
-- ToJSON instance. Produced schema uses as much
-- constraints as possible.
--
--
-- >>> encode $ sketchStrictSchema "hello"
-- "{\"enum\":[\"hello\"],\"maxLength\":5,\"minLength\":5,\"pattern\":\"hello\",\"type\":\"string\"}"
--
--
--
-- >>> encode $ sketchStrictSchema (1, 2, 3)
-- "{\"enum\":[[1,2,3]],\"items\":[{\"enum\":[1],\"maximum\":1,\"minimum\":1,\"multipleOf\":1,\"type\":\"number\"},{\"enum\":[2],\"maximum\":2,\"minimum\":2,\"multipleOf\":2,\"type\":\"number\"},{\"enum\":[3],\"maximum\":3,\"minimum\":3,\"multipleOf\":3,\"type\":\"number\"}],\"maxItems\":3,\"minItems\":3,\"type\":\"array\",\"uniqueItems\":true}"
--
--
--
-- >>> encode $ sketchStrictSchema ("Jack", 25)
-- "{\"enum\":[[\"Jack\",25]],\"items\":[{\"enum\":[\"Jack\"],\"maxLength\":4,\"minLength\":4,\"pattern\":\"Jack\",\"type\":\"string\"},{\"enum\":[25],\"maximum\":25,\"minimum\":25,\"multipleOf\":25,\"type\":\"number\"}],\"maxItems\":2,\"minItems\":2,\"type\":\"array\",\"uniqueItems\":true}"
--
--
--
-- >>> data Person = Person { name :: String, age :: Int } deriving (Generic)
--
-- >>> instance ToJSON Person
--
-- >>> encode $ sketchStrictSchema (Person "Jack" 25)
-- "{\"required\":[\"name\",\"age\"],\"properties\":{\"name\":{\"enum\":[\"Jack\"],\"maxLength\":4,\"minLength\":4,\"pattern\":\"Jack\",\"type\":\"string\"},\"age\":{\"enum\":[25],\"maximum\":25,\"minimum\":25,\"multipleOf\":25,\"type\":\"number\"}},\"maxProperties\":2,\"minProperties\":2,\"enum\":[{\"age\":25,\"name\":\"Jack\"}],\"type\":\"object\"}"
--
sketchStrictSchema :: ToJSON a => a -> Schema
-- | Inline all non-recursive schemas for which the definition can
-- be found in Definitions.
inlineNonRecursiveSchemas :: Data s => Definitions Schema -> s -> s
-- | Inline all schema references for which the definition can be found in
-- Definitions.
--
-- WARNING: inlineAllSchemas will produce infinite
-- schemas when inlining recursive schemas.
inlineAllSchemas :: Data s => Definitions Schema -> s -> s
-- | Inline any referenced schema if its name is in the given list.
--
-- NOTE: if a referenced schema is not found in definitions it
-- stays referenced even if it appears in the list of names.
--
-- WARNING: inlineSchemas will produce infinite
-- schemas when inlining recursive schemas.
inlineSchemas :: Data s => [Text] -> Definitions Schema -> s -> s
-- | Inline any referenced schema if its name satisfies given predicate.
--
-- NOTE: if a referenced schema is not found in definitions the
-- predicate is ignored and schema stays referenced.
--
-- WARNING: inlineSchemasWhen will produce
-- infinite schemas when inlining recursive schemas.
inlineSchemasWhen :: Data s => (Text -> Bool) -> Definitions Schema -> s -> s
-- | Options that specify how to encode your type to Swagger schema.
data SchemaOptions
SchemaOptions :: (String -> String) -> (String -> String) -> (String -> String) -> Bool -> Bool -> SchemaOptions
-- | Function applied to field labels. Handy for removing common record
-- prefixes for example.
[fieldLabelModifier] :: SchemaOptions -> String -> String
-- | Function applied to constructor tags which could be handy for
-- lower-casing them for example.
[constructorTagModifier] :: SchemaOptions -> String -> String
-- | Function applied to datatype name.
[datatypeNameModifier] :: SchemaOptions -> String -> String
-- | If True the constructors of a datatype, with all
-- nullary constructors, will be encoded to a string enumeration schema
-- with the constructor tags as possible values.
[allNullaryToStringTag] :: SchemaOptions -> Bool
-- | Hide the field name when a record constructor has only one field, like
-- a newtype.
[unwrapUnaryRecords] :: SchemaOptions -> Bool
-- | Default encoding SchemaOptions.
--
--
-- SchemaOptions
-- { fieldLabelModifier = id
-- , constructorTagModifier = id
-- , datatypeNameModifier = id
-- , allNullaryToStringTag = True
-- , unwrapUnaryRecords = False
-- }
--
defaultSchemaOptions :: SchemaOptions
-- | Convert Options to SchemaOptions.
--
-- Specifically the following fields get copied:
--
--
--
-- Note that these fields have no effect on SchemaOptions:
--
--
-- >>> let ok = (mempty :: Operation) & at 200 ?~ "OK"
--
-- >>> let api = (mempty :: Swagger) & paths .~ [("/user", mempty & get ?~ ok & post ?~ ok)]
--
-- >>> let sub = (mempty :: Swagger) & paths .~ [("/user", mempty & get ?~ mempty)]
--
-- >>> encode api
-- "{\"swagger\":\"2.0\",\"info\":{\"title\":\"\",\"version\":\"\"},\"paths\":{\"/user\":{\"get\":{\"responses\":{\"200\":{\"description\":\"OK\"}}},\"post\":{\"responses\":{\"200\":{\"description\":\"OK\"}}}}}}"
--
-- >>> encode $ api & operationsOf sub . at 404 ?~ "Not found"
-- "{\"swagger\":\"2.0\",\"info\":{\"title\":\"\",\"version\":\"\"},\"paths\":{\"/user\":{\"get\":{\"responses\":{\"200\":{\"description\":\"OK\"},\"404\":{\"description\":\"Not found\"}}},\"post\":{\"responses\":{\"200\":{\"description\":\"OK\"}}}}}}"
--
operationsOf :: Swagger -> Traversal' Swagger Operation
-- | Apply tags to all operations and update the global list of tags.
--
-- -- applyTags = applyTagsFor allOperations --applyTags :: [Tag] -> Swagger -> Swagger -- | Apply tags to a part of Swagger spec and update the global list of -- tags. applyTagsFor :: Traversal' Swagger Operation -> [Tag] -> Swagger -> Swagger -- | Set response for all operations. This will also update global schema -- definitions. -- -- If the response already exists it will be overwritten. -- --
-- setResponse = setResponseFor allOperations ---- -- Example: -- --
-- >>> let api = (mempty :: Swagger) & paths .~ [("/user", mempty & get ?~ mempty)]
--
-- >>> let res = declareResponse (Proxy :: Proxy Day)
--
-- >>> encode $ api & setResponse 200 res
-- "{\"swagger\":\"2.0\",\"info\":{\"title\":\"\",\"version\":\"\"},\"paths\":{\"/user\":{\"get\":{\"responses\":{\"200\":{\"description\":\"\",\"schema\":{\"$ref\":\"#/definitions/Day\"}}}}}},\"definitions\":{\"Day\":{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"}}}"
--
--
-- See also setResponseWith.
setResponse :: HttpStatusCode -> Declare (Definitions Schema) Response -> Swagger -> Swagger
-- | Set or update response for all operations. This will also update
-- global schema definitions.
--
-- If the response already exists, but it can't be dereferenced (invalid
-- $ref), then just the new response is used.
--
-- -- setResponseWith = setResponseForWith allOperations ---- -- See also setResponse. setResponseWith :: (Response -> Response -> Response) -> HttpStatusCode -> Declare (Definitions Schema) Response -> Swagger -> Swagger -- | Set response for specified operations. This will also update global -- schema definitions. -- -- If the response already exists it will be overwritten. -- -- See also setResponseForWith. setResponseFor :: Traversal' Swagger Operation -> HttpStatusCode -> Declare (Definitions Schema) Response -> Swagger -> Swagger -- | Set or update response for specified operations. This will also update -- global schema definitions. -- -- If the response already exists, but it can't be dereferenced (invalid -- $ref), then just the new response is used. -- -- See also setResponseFor. setResponseForWith :: Traversal' Swagger Operation -> (Response -> Response -> Response) -> HttpStatusCode -> Declare (Definitions Schema) Response -> Swagger -> Swagger -- | Prepend path piece to all operations of the spec. Leading and trailing -- slashes are trimmed/added automatically. -- --
-- >>> let api = (mempty :: Swagger) & paths .~ [("/info", mempty)]
--
-- >>> encode $ prependPath "user/{user_id}" api ^. paths
-- "{\"/user/{user_id}/info\":{}}"
--
prependPath :: FilePath -> Swagger -> Swagger
-- | Construct a response with Schema while declaring all
-- necessary schema definitions.
--
--
-- >>> encode $ runDeclare (declareResponse (Proxy :: Proxy Day)) mempty
-- "[{\"Day\":{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"}},{\"description\":\"\",\"schema\":{\"$ref\":\"#/definitions/Day\"}}]"
--
declareResponse :: ToSchema a => Proxy a -> Declare (Definitions Schema) Response
-- | Validate JSON values with Swagger Schema.
module Data.Swagger.Internal.Schema.Validation
-- | Validate ToJSON instance matches
-- ToSchema for a given value. This can be used with
-- QuickCheck to ensure those instances are coherent:
--
-- -- validateToJSON (x :: Int) == [] ---- -- NOTE: validateToJSON does not perform string -- pattern validation. See -- validateToJSONWithPatternChecker. -- -- See renderValidationErrors on how the output is structured. validatePrettyToJSON :: forall a. (ToJSON a, ToSchema a) => a -> Maybe String -- | Variant of validatePrettyToJSON with typed output. validateToJSON :: forall a. (ToJSON a, ToSchema a) => a -> [ValidationError] -- | Validate ToJSON instance matches -- ToSchema for a given value and pattern checker. This -- can be used with QuickCheck to ensure those instances are coherent. -- -- For validation without patterns see validateToJSON. -- See also: renderValidationErrors. validateToJSONWithPatternChecker :: forall a. (ToJSON a, ToSchema a) => (Pattern -> Text -> Bool) -> a -> [ValidationError] -- | Pretty print validation errors together with actual JSON and Swagger -- Schema (using encodePretty). -- --
-- >>> import Data.Aeson as Aeson
--
-- >>> import Data.Foldable (traverse_)
--
-- >>> import GHC.Generics
--
-- >>> data Phone = Phone { value :: String } deriving (Generic)
--
-- >>> data Person = Person { name :: String, phone :: Phone } deriving (Generic)
--
-- >>> instance ToJSON Person where toJSON p = object [ "name" Aeson..= name p ]
--
-- >>> instance ToSchema Phone
--
-- >>> instance ToSchema Person
--
-- >>> let person = Person { name = "John", phone = Phone "123456" }
--
-- >>> traverse_ putStrLn $ renderValidationErrors validateToJSON person
-- Validation against the schema fails:
-- * property "phone" is required, but not found in "{\"name\":\"John\"}"
--
-- JSON value:
-- {
-- "name": "John"
-- }
--
-- Swagger Schema:
-- {
-- "properties": {
-- "name": {
-- "type": "string"
-- },
-- "phone": {
-- "$ref": "#/definitions/Phone"
-- }
-- },
-- "required": [
-- "name",
-- "phone"
-- ],
-- "type": "object"
-- }
--
-- Swagger Description Context:
-- {
-- "Phone": {
-- "properties": {
-- "value": {
-- "type": "string"
-- }
-- },
-- "required": [
-- "value"
-- ],
-- "type": "object"
-- }
-- }
--
renderValidationErrors :: forall a. (ToJSON a, ToSchema a) => (a -> [ValidationError]) -> a -> Maybe String
-- | Validate JSON Value against Swagger
-- Schema.
--
-- -- validateJSON mempty (toSchema (Proxy :: Proxy Int)) (toJSON (x :: Int)) == [] ---- -- NOTE: validateJSON does not perform string -- pattern validation. See -- validateJSONWithPatternChecker. validateJSON :: Definitions Schema -> Schema -> Value -> [ValidationError] -- | Validate JSON Value agains Swagger -- ToSchema for a given value and pattern checker. -- -- For validation without patterns see validateJSON. validateJSONWithPatternChecker :: (Pattern -> Text -> Bool) -> Definitions Schema -> Schema -> Value -> [ValidationError] -- | Validation error message. type ValidationError = String -- | Validation result type. data Result a -- | Validation failed with a list of error messages. Failed :: [ValidationError] -> Result a -- | Validation passed. Passed :: a -> Result a -- | Validation configuration. data Config Config :: (Pattern -> Text -> Bool) -> Definitions Schema -> Config -- | Pattern checker for _paramSchemaPattern validation. [configPatternChecker] :: Config -> Pattern -> Text -> Bool -- | Schema definitions in scope to resolve references. [configDefinitions] :: Config -> Definitions Schema -- | Default Config: -- --
-- defaultConfig = Config
-- { configPatternChecker = \_pattern _str -> True
-- , configDefinitions = mempty
-- }
--
defaultConfig :: Config
-- | Value validation.
newtype Validation s a
Validation :: (Config -> s -> Result a) -> Validation s a
[runValidation] :: Validation s a -> Config -> s -> Result a
withConfig :: (Config -> Validation s a) -> Validation s a
withSchema :: (s -> Validation s a) -> Validation s a
-- | Issue an error message.
invalid :: String -> Validation schema a
-- | Validation passed.
valid :: Validation schema ()
-- | Validate schema's property given a lens into that property and
-- property checker.
checkMissing :: Validation s () -> Lens' s (Maybe a) -> (a -> Validation s ()) -> Validation s ()
-- | Validate schema's property given a lens into that property and
-- property checker. If property is missing in schema, consider it valid.
check :: Lens' s (Maybe a) -> (a -> Validation s ()) -> Validation s ()
-- | Validate same value with different schema.
sub :: t -> Validation t a -> Validation s a
-- | Validate same value with a part of the original schema.
sub_ :: Getting a s a -> Validation a r -> Validation s r
-- | Validate value against a schema given schema reference and validation
-- function.
withRef :: Reference -> (Schema -> Validation s a) -> Validation s a
validateWithSchemaRef :: Referenced Schema -> Value -> Validation s ()
-- | Validate JSON Value with Swagger
-- Schema.
validateWithSchema :: Value -> Validation Schema ()
-- | Validate JSON Value with Swagger
-- ParamSchema.
validateWithParamSchema :: Value -> Validation (ParamSchema t) ()
validateInteger :: Scientific -> Validation (ParamSchema t) ()
validateNumber :: Scientific -> Validation (ParamSchema t) ()
validateString :: Text -> Validation (ParamSchema t) ()
validateArray :: Vector Value -> Validation (ParamSchema t) ()
validateObject :: HashMap Text Value -> Validation Schema ()
validateEnum :: Value -> Validation (ParamSchema t) ()
-- | Infer schema type based on used properties.
--
-- This is like inferParamSchemaTypes, but also works for objects:
--
--
-- >>> inferSchemaTypes <$> decode "{\"minProperties\": 1}"
-- Just [SwaggerObject]
--
inferSchemaTypes :: Schema -> [SwaggerType 'SwaggerKindSchema]
-- | Infer schema type based on used properties.
--
--
-- >>> inferSchemaTypes <$> decode "{\"minLength\": 2}"
-- Just [SwaggerString]
--
--
--
-- >>> inferSchemaTypes <$> decode "{\"maxItems\": 0}"
-- Just [SwaggerArray]
--
--
-- From numeric properties SwaggerInteger type is inferred. If you
-- want SwaggerNumber instead, you must specify it explicitly.
--
--
-- >>> inferSchemaTypes <$> decode "{\"minimum\": 1}"
-- Just [SwaggerInteger]
--
inferParamSchemaTypes :: ParamSchema t -> [SwaggerType t]
validateSchemaType :: Value -> Validation Schema ()
validateParamSchemaType :: Value -> Validation (ParamSchema t) ()
showType :: (Maybe (SwaggerType t), Value) -> String
instance GHC.Base.Functor (Data.Swagger.Internal.Schema.Validation.Validation s)
instance GHC.Base.Functor Data.Swagger.Internal.Schema.Validation.Result
instance GHC.Show.Show a => GHC.Show.Show (Data.Swagger.Internal.Schema.Validation.Result a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Swagger.Internal.Schema.Validation.Result a)
instance GHC.Base.Applicative (Data.Swagger.Internal.Schema.Validation.Validation schema)
instance GHC.Base.Alternative (Data.Swagger.Internal.Schema.Validation.Validation schema)
instance Data.Profunctor.Unsafe.Profunctor Data.Swagger.Internal.Schema.Validation.Validation
instance Data.Profunctor.Choice.Choice Data.Swagger.Internal.Schema.Validation.Validation
instance GHC.Base.Monad (Data.Swagger.Internal.Schema.Validation.Validation s)
instance GHC.Base.Applicative Data.Swagger.Internal.Schema.Validation.Result
instance GHC.Base.Alternative Data.Swagger.Internal.Schema.Validation.Result
instance GHC.Base.Monad Data.Swagger.Internal.Schema.Validation.Result
-- | Validate JSON values with Swagger Schema.
module Data.Swagger.Schema.Validation
-- | Validation error message.
type ValidationError = String
-- | Validate ToJSON instance matches
-- ToSchema for a given value. This can be used with
-- QuickCheck to ensure those instances are coherent:
--
-- -- validateToJSON (x :: Int) == [] ---- -- NOTE: validateToJSON does not perform string -- pattern validation. See -- validateToJSONWithPatternChecker. -- -- See renderValidationErrors on how the output is structured. validatePrettyToJSON :: forall a. (ToJSON a, ToSchema a) => a -> Maybe String -- | Variant of validatePrettyToJSON with typed output. validateToJSON :: forall a. (ToJSON a, ToSchema a) => a -> [ValidationError] -- | Validate ToJSON instance matches -- ToSchema for a given value and pattern checker. This -- can be used with QuickCheck to ensure those instances are coherent. -- -- For validation without patterns see validateToJSON. -- See also: renderValidationErrors. validateToJSONWithPatternChecker :: forall a. (ToJSON a, ToSchema a) => (Pattern -> Text -> Bool) -> a -> [ValidationError] -- | Pretty print validation errors together with actual JSON and Swagger -- Schema (using encodePretty). -- --
-- >>> import Data.Aeson as Aeson
--
-- >>> import Data.Foldable (traverse_)
--
-- >>> import GHC.Generics
--
-- >>> data Phone = Phone { value :: String } deriving (Generic)
--
-- >>> data Person = Person { name :: String, phone :: Phone } deriving (Generic)
--
-- >>> instance ToJSON Person where toJSON p = object [ "name" Aeson..= name p ]
--
-- >>> instance ToSchema Phone
--
-- >>> instance ToSchema Person
--
-- >>> let person = Person { name = "John", phone = Phone "123456" }
--
-- >>> traverse_ putStrLn $ renderValidationErrors validateToJSON person
-- Validation against the schema fails:
-- * property "phone" is required, but not found in "{\"name\":\"John\"}"
--
-- JSON value:
-- {
-- "name": "John"
-- }
--
-- Swagger Schema:
-- {
-- "properties": {
-- "name": {
-- "type": "string"
-- },
-- "phone": {
-- "$ref": "#/definitions/Phone"
-- }
-- },
-- "required": [
-- "name",
-- "phone"
-- ],
-- "type": "object"
-- }
--
-- Swagger Description Context:
-- {
-- "Phone": {
-- "properties": {
-- "value": {
-- "type": "string"
-- }
-- },
-- "required": [
-- "value"
-- ],
-- "type": "object"
-- }
-- }
--
renderValidationErrors :: forall a. (ToJSON a, ToSchema a) => (a -> [ValidationError]) -> a -> Maybe String
-- | Validate JSON Value against Swagger
-- Schema.
--
-- -- validateJSON mempty (toSchema (Proxy :: Proxy Int)) (toJSON (x :: Int)) == [] ---- -- NOTE: validateJSON does not perform string -- pattern validation. See -- validateJSONWithPatternChecker. validateJSON :: Definitions Schema -> Schema -> Value -> [ValidationError] -- | Validate JSON Value agains Swagger -- ToSchema for a given value and pattern checker. -- -- For validation without patterns see validateJSON. validateJSONWithPatternChecker :: (Pattern -> Text -> Bool) -> Definitions Schema -> Schema -> Value -> [ValidationError] -- | Swagger™ is a project used to describe and document RESTful APIs. -- -- The Swagger specification defines a set of files required to describe -- such an API. These files can then be used by the Swagger-UI project to -- display the API and Swagger-Codegen to generate clients in various -- languages. Additional utilities can also take advantage of the -- resulting files, such as testing tools. module Data.Swagger -- | This is the root document object for the API specification. data Swagger Swagger :: Info -> Maybe Host -> Maybe FilePath -> Maybe [Scheme] -> MimeList -> MimeList -> InsOrdHashMap FilePath PathItem -> Definitions Schema -> Definitions Param -> Definitions Response -> SecurityDefinitions -> [SecurityRequirement] -> InsOrdHashSet Tag -> Maybe ExternalDocs -> Swagger -- | Provides metadata about the API. The metadata can be used by the -- clients if needed. [_swaggerInfo] :: Swagger -> Info -- | The host (name or ip) serving the API. It MAY include a port. If the -- host is not included, the host serving the documentation is to be used -- (including the port). [_swaggerHost] :: Swagger -> Maybe Host -- | The base path on which the API is served, which is relative to the -- host. If it is not included, the API is served directly under the -- host. The value MUST start with a leading slash (/). [_swaggerBasePath] :: Swagger -> Maybe FilePath -- | The transfer protocol of the API. If the schemes is not included, the -- default scheme to be used is the one used to access the Swagger -- definition itself. [_swaggerSchemes] :: Swagger -> Maybe [Scheme] -- | A list of MIME types the APIs can consume. This is global to all APIs -- but can be overridden on specific API calls. [_swaggerConsumes] :: Swagger -> MimeList -- | A list of MIME types the APIs can produce. This is global to all APIs -- but can be overridden on specific API calls. [_swaggerProduces] :: Swagger -> MimeList -- | The available paths and operations for the API. Holds the relative -- paths to the individual endpoints. The path is appended to the -- basePath in order to construct the full URL. [_swaggerPaths] :: Swagger -> InsOrdHashMap FilePath PathItem -- | An object to hold data types produced and consumed by operations. [_swaggerDefinitions] :: Swagger -> Definitions Schema -- | An object to hold parameters that can be used across operations. This -- property does not define global parameters for all operations. [_swaggerParameters] :: Swagger -> Definitions Param -- | An object to hold responses that can be used across operations. This -- property does not define global responses for all operations. [_swaggerResponses] :: Swagger -> Definitions Response -- | Security scheme definitions that can be used across the specification. [_swaggerSecurityDefinitions] :: Swagger -> SecurityDefinitions -- | A declaration of which security schemes are applied for the API as a -- whole. The list of values describes alternative security schemes that -- can be used (that is, there is a logical OR between the security -- requirements). Individual operations can override this definition. [_swaggerSecurity] :: Swagger -> [SecurityRequirement] -- | A list of tags used by the specification with additional metadata. The -- order of the tags can be used to reflect on their order by the parsing -- tools. Not all tags that are used by the Operation Object must be -- declared. The tags that are not declared may be organized randomly or -- based on the tools' logic. Each tag name in the list MUST be unique. [_swaggerTags] :: Swagger -> InsOrdHashSet Tag -- | Additional external documentation. [_swaggerExternalDocs] :: Swagger -> Maybe ExternalDocs -- | The host (name or ip) serving the API. It MAY include a port. data Host Host :: HostName -> Maybe PortNumber -> Host -- | Host name. [_hostName] :: Host -> HostName -- | Optional port. [_hostPort] :: Host -> Maybe PortNumber -- | The transfer protocol of the API. data Scheme Http :: Scheme Https :: Scheme Ws :: Scheme Wss :: Scheme -- | The object provides metadata about the API. The metadata can be used -- by the clients if needed, and can be presented in the Swagger-UI for -- convenience. data Info Info :: Text -> Maybe Text -> Maybe Text -> Maybe Contact -> Maybe License -> Text -> Info -- | The title of the application. [_infoTitle] :: Info -> Text -- | A short description of the application. GFM syntax can be used for -- rich text representation. [_infoDescription] :: Info -> Maybe Text -- | The Terms of Service for the API. [_infoTermsOfService] :: Info -> Maybe Text -- | The contact information for the exposed API. [_infoContact] :: Info -> Maybe Contact -- | The license information for the exposed API. [_infoLicense] :: Info -> Maybe License -- | Provides the version of the application API (not to be confused with -- the specification version). [_infoVersion] :: Info -> Text -- | Contact information for the exposed API. data Contact Contact :: Maybe Text -> Maybe URL -> Maybe Text -> Contact -- | The identifying name of the contact person/organization. [_contactName] :: Contact -> Maybe Text -- | The URL pointing to the contact information. [_contactUrl] :: Contact -> Maybe URL -- | The email address of the contact person/organization. [_contactEmail] :: Contact -> Maybe Text -- | License information for the exposed API. data License License :: Text -> Maybe URL -> License -- | The license name used for the API. [_licenseName] :: License -> Text -- | A URL to the license used for the API. [_licenseUrl] :: License -> Maybe URL -- | Describes the operations available on a single path. A -- PathItem may be empty, due to ACL constraints. The -- path itself is still exposed to the documentation viewer but they will -- not know which operations and parameters are available. data PathItem PathItem :: Maybe Operation -> Maybe Operation -> Maybe Operation -> Maybe Operation -> Maybe Operation -> Maybe Operation -> Maybe Operation -> [Referenced Param] -> PathItem -- | A definition of a GET operation on this path. [_pathItemGet] :: PathItem -> Maybe Operation -- | A definition of a PUT operation on this path. [_pathItemPut] :: PathItem -> Maybe Operation -- | A definition of a POST operation on this path. [_pathItemPost] :: PathItem -> Maybe Operation -- | A definition of a DELETE operation on this path. [_pathItemDelete] :: PathItem -> Maybe Operation -- | A definition of a OPTIONS operation on this path. [_pathItemOptions] :: PathItem -> Maybe Operation -- | A definition of a HEAD operation on this path. [_pathItemHead] :: PathItem -> Maybe Operation -- | A definition of a PATCH operation on this path. [_pathItemPatch] :: PathItem -> Maybe Operation -- | A list of parameters that are applicable for all the operations -- described under this path. These parameters can be overridden at the -- operation level, but cannot be removed there. The list MUST NOT -- include duplicated parameters. A unique parameter is defined by a -- combination of a name and location. [_pathItemParameters] :: PathItem -> [Referenced Param] -- | Describes a single API operation on a path. data Operation Operation :: InsOrdHashSet TagName -> Maybe Text -> Maybe Text -> Maybe ExternalDocs -> Maybe Text -> Maybe MimeList -> Maybe MimeList -> [Referenced Param] -> Responses -> Maybe [Scheme] -> Maybe Bool -> [SecurityRequirement] -> Operation -- | A list of tags for API documentation control. Tags can be used for -- logical grouping of operations by resources or any other qualifier. [_operationTags] :: Operation -> InsOrdHashSet TagName -- | A short summary of what the operation does. For maximum readability in -- the swagger-ui, this field SHOULD be less than 120 characters. [_operationSummary] :: Operation -> Maybe Text -- | A verbose explanation of the operation behavior. GFM syntax can be -- used for rich text representation. [_operationDescription] :: Operation -> Maybe Text -- | Additional external documentation for this operation. [_operationExternalDocs] :: Operation -> Maybe ExternalDocs -- | Unique string used to identify the operation. The id MUST be unique -- among all operations described in the API. Tools and libraries MAY use -- the it to uniquely identify an operation, therefore, it is recommended -- to follow common programming naming conventions. [_operationOperationId] :: Operation -> Maybe Text -- | A list of MIME types the operation can consume. This overrides the -- consumes. Just [] MAY be used to clear the -- global definition. [_operationConsumes] :: Operation -> Maybe MimeList -- | A list of MIME types the operation can produce. This overrides the -- produces. Just [] MAY be used to clear the -- global definition. [_operationProduces] :: Operation -> Maybe MimeList -- | A list of parameters that are applicable for this operation. If a -- parameter is already defined at the PathItem, the new -- definition will override it, but can never remove it. The list MUST -- NOT include duplicated parameters. A unique parameter is defined by a -- combination of a name and location. [_operationParameters] :: Operation -> [Referenced Param] -- | The list of possible responses as they are returned from executing -- this operation. [_operationResponses] :: Operation -> Responses -- | The transfer protocol for the operation. The value overrides -- schemes. [_operationSchemes] :: Operation -> Maybe [Scheme] -- | Declares this operation to be deprecated. Usage of the declared -- operation should be refrained. Default value is False. [_operationDeprecated] :: Operation -> Maybe Bool -- | A declaration of which security schemes are applied for this -- operation. The list of values describes alternative security schemes -- that can be used (that is, there is a logical OR between the security -- requirements). This definition overrides any declared top-level -- security. To remove a top-level security declaration, Just [] -- can be used. [_operationSecurity] :: Operation -> [SecurityRequirement] -- | Allows adding meta data to a single tag that is used by -- Operation. It is not mandatory to have a Tag per tag -- used there. data Tag Tag :: TagName -> Maybe Text -> Maybe ExternalDocs -> Tag -- | The name of the tag. [_tagName] :: Tag -> TagName -- | A short description for the tag. GFM syntax can be used for rich text -- representation. [_tagDescription] :: Tag -> Maybe Text -- | Additional external documentation for this tag. [_tagExternalDocs] :: Tag -> Maybe ExternalDocs -- | Tag name. type TagName = Text data SwaggerType t [SwaggerString] :: SwaggerType t [SwaggerNumber] :: SwaggerType t [SwaggerInteger] :: SwaggerType t [SwaggerBoolean] :: SwaggerType t [SwaggerArray] :: SwaggerType t [SwaggerFile] :: SwaggerType 'SwaggerKindParamOtherSchema [SwaggerNull] :: SwaggerType 'SwaggerKindSchema [SwaggerObject] :: SwaggerType 'SwaggerKindSchema type Format = Text -- | A list of definitions that can be used in references. type Definitions = InsOrdHashMap Text -- | Determines the format of the array. data CollectionFormat t [CollectionCSV] :: CollectionFormat t [CollectionSSV] :: CollectionFormat t [CollectionTSV] :: CollectionFormat t [CollectionPipes] :: CollectionFormat t [CollectionMulti] :: CollectionFormat 'SwaggerKindParamOtherSchema -- | Describes a single operation parameter. A unique parameter is defined -- by a combination of a name and location. data Param Param :: Text -> Maybe Text -> Maybe Bool -> ParamAnySchema -> Param -- | The name of the parameter. Parameter names are case sensitive. [_paramName] :: Param -> Text -- | A brief description of the parameter. This could contain examples of -- use. GFM syntax can be used for rich text representation. [_paramDescription] :: Param -> Maybe Text -- | Determines whether this parameter is mandatory. If the parameter is in -- "path", this property is required and its value MUST be true. -- Otherwise, the property MAY be included and its default value is -- False. [_paramRequired] :: Param -> Maybe Bool -- | Parameter schema. [_paramSchema] :: Param -> ParamAnySchema data ParamAnySchema ParamBody :: Referenced Schema -> ParamAnySchema ParamOther :: ParamOtherSchema -> ParamAnySchema data ParamOtherSchema ParamOtherSchema :: ParamLocation -> Maybe Bool -> ParamSchema 'SwaggerKindParamOtherSchema -> ParamOtherSchema -- | The location of the parameter. [_paramOtherSchemaIn] :: ParamOtherSchema -> ParamLocation -- | Sets the ability to pass empty-valued parameters. This is valid only -- for either ParamQuery or ParamFormData -- and allows you to send a parameter with a name only or an empty value. -- Default value is False. [_paramOtherSchemaAllowEmptyValue] :: ParamOtherSchema -> Maybe Bool [_paramOtherSchemaParamSchema] :: ParamOtherSchema -> ParamSchema 'SwaggerKindParamOtherSchema data ParamLocation -- | Parameters that are appended to the URL. For example, in -- /items?id=###, the query parameter is id. ParamQuery :: ParamLocation -- | Custom headers that are expected as part of the request. ParamHeader :: ParamLocation -- | Used together with Path Templating, where the parameter value is -- actually part of the operation's URL. This does not include the host -- or base path of the API. For example, in -- items{itemId}, the path parameter is itemId. ParamPath :: ParamLocation -- | Used to describe the payload of an HTTP request when either -- application/x-www-form-urlencoded or -- multipart/form-data are used as the content type of the -- request (in Swagger's definition, the consumes property of an -- operation). This is the only parameter type that can be used to send -- files, thus supporting the ParamFile type. Since -- form parameters are sent in the payload, they cannot be declared -- together with a body parameter for the same operation. Form parameters -- have a different format based on the content-type used (for further -- details, consult -- http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4). ParamFormData :: ParamLocation type ParamName = Text data Header Header :: Maybe Text -> ParamSchema ('SwaggerKindNormal Header) -> Header -- | A short description of the header. [_headerDescription] :: Header -> Maybe Text [_headerParamSchema] :: Header -> ParamSchema ('SwaggerKindNormal Header) type HeaderName = Text data Example Example :: Map MediaType Value -> Example [getExample] :: Example -> Map MediaType Value data ParamSchema (t :: SwaggerKind *) ParamSchema :: Maybe Value -> Maybe (SwaggerType t) -> Maybe Format -> Maybe (SwaggerItems t) -> Maybe Scientific -> Maybe Bool -> Maybe Scientific -> Maybe Bool -> Maybe Integer -> Maybe Integer -> Maybe Pattern -> Maybe Integer -> Maybe Integer -> Maybe Bool -> Maybe [Value] -> Maybe Scientific -> ParamSchema (t :: SwaggerKind *) -- | Declares the value of the parameter that the server will use if none -- is provided, for example a "count" to control the number of -- results per page might default to 100 if not supplied by the -- client in the request. (Note: "default" has no meaning for required -- parameters.) Unlike JSON Schema this value MUST conform to the defined -- type for this parameter. [_paramSchemaDefault] :: ParamSchema (t :: SwaggerKind *) -> Maybe Value [_paramSchemaType] :: ParamSchema (t :: SwaggerKind *) -> Maybe (SwaggerType t) [_paramSchemaFormat] :: ParamSchema (t :: SwaggerKind *) -> Maybe Format [_paramSchemaItems] :: ParamSchema (t :: SwaggerKind *) -> Maybe (SwaggerItems t) [_paramSchemaMaximum] :: ParamSchema (t :: SwaggerKind *) -> Maybe Scientific [_paramSchemaExclusiveMaximum] :: ParamSchema (t :: SwaggerKind *) -> Maybe Bool [_paramSchemaMinimum] :: ParamSchema (t :: SwaggerKind *) -> Maybe Scientific [_paramSchemaExclusiveMinimum] :: ParamSchema (t :: SwaggerKind *) -> Maybe Bool [_paramSchemaMaxLength] :: ParamSchema (t :: SwaggerKind *) -> Maybe Integer [_paramSchemaMinLength] :: ParamSchema (t :: SwaggerKind *) -> Maybe Integer [_paramSchemaPattern] :: ParamSchema (t :: SwaggerKind *) -> Maybe Pattern [_paramSchemaMaxItems] :: ParamSchema (t :: SwaggerKind *) -> Maybe Integer [_paramSchemaMinItems] :: ParamSchema (t :: SwaggerKind *) -> Maybe Integer [_paramSchemaUniqueItems] :: ParamSchema (t :: SwaggerKind *) -> Maybe Bool [_paramSchemaEnum] :: ParamSchema (t :: SwaggerKind *) -> Maybe [Value] [_paramSchemaMultipleOf] :: ParamSchema (t :: SwaggerKind *) -> Maybe Scientific data Schema Schema :: Maybe Text -> Maybe Text -> [ParamName] -> Maybe [Referenced Schema] -> InsOrdHashMap Text (Referenced Schema) -> Maybe AdditionalProperties -> Maybe Text -> Maybe Bool -> Maybe Xml -> Maybe ExternalDocs -> Maybe Value -> Maybe Integer -> Maybe Integer -> ParamSchema 'SwaggerKindSchema -> Schema [_schemaTitle] :: Schema -> Maybe Text [_schemaDescription] :: Schema -> Maybe Text [_schemaRequired] :: Schema -> [ParamName] [_schemaAllOf] :: Schema -> Maybe [Referenced Schema] [_schemaProperties] :: Schema -> InsOrdHashMap Text (Referenced Schema) [_schemaAdditionalProperties] :: Schema -> Maybe AdditionalProperties [_schemaDiscriminator] :: Schema -> Maybe Text [_schemaReadOnly] :: Schema -> Maybe Bool [_schemaXml] :: Schema -> Maybe Xml [_schemaExternalDocs] :: Schema -> Maybe ExternalDocs [_schemaExample] :: Schema -> Maybe Value [_schemaMaxProperties] :: Schema -> Maybe Integer [_schemaMinProperties] :: Schema -> Maybe Integer [_schemaParamSchema] :: Schema -> ParamSchema 'SwaggerKindSchema -- | A Schema with an optional name. This name can be used -- in references. data NamedSchema NamedSchema :: Maybe Text -> Schema -> NamedSchema [_namedSchemaName] :: NamedSchema -> Maybe Text [_namedSchemaSchema] :: NamedSchema -> Schema -- | Items for SwaggerArray schemas. -- -- SwaggerItemsPrimitive should be used only for query -- params, headers and path pieces. The CollectionFormat -- t parameter specifies how elements of an array should be -- displayed. Note that fmt in SwaggerItemsPrimitive -- fmt schema specifies format for elements of type schema. -- This is different from the original Swagger's Items Object. -- -- SwaggerItemsObject should be used to specify -- homogenous array Schemas. -- -- SwaggerItemsArray should be used to specify tuple -- Schemas. data SwaggerItems t [SwaggerItemsPrimitive] :: Maybe (CollectionFormat k) -> ParamSchema k -> SwaggerItems k [SwaggerItemsObject] :: Referenced Schema -> SwaggerItems 'SwaggerKindSchema [SwaggerItemsArray] :: [Referenced Schema] -> SwaggerItems 'SwaggerKindSchema data Xml Xml :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> Maybe Bool -> Xml -- | Replaces the name of the element/attribute used for the described -- schema property. When defined within the SwaggerItems -- (items), it will affect the name of the individual XML elements within -- the list. When defined alongside type being array (outside the items), -- it will affect the wrapping element and only if wrapped is true. If -- wrapped is false, it will be ignored. [_xmlName] :: Xml -> Maybe Text -- | The URL of the namespace definition. Value SHOULD be in the form of a -- URL. [_xmlNamespace] :: Xml -> Maybe Text -- | The prefix to be used for the name. [_xmlPrefix] :: Xml -> Maybe Text -- | Declares whether the property definition translates to an attribute -- instead of an element. Default value is False. [_xmlAttribute] :: Xml -> Maybe Bool -- | MAY be used only for an array definition. Signifies whether the array -- is wrapped (for example, -- <books><book><book></books>) -- or unwrapped (<book><book>). Default value -- is False. The definition takes effect only when defined -- alongside type being array (outside the items). [_xmlWrapped] :: Xml -> Maybe Bool -- | Regex pattern for string type. type Pattern = Text data AdditionalProperties AdditionalPropertiesAllowed :: Bool -> AdditionalProperties AdditionalPropertiesSchema :: Referenced Schema -> AdditionalProperties -- | A container for the expected responses of an operation. The container -- maps a HTTP response code to the expected response. It is not expected -- from the documentation to necessarily cover all possible HTTP response -- codes, since they may not be known in advance. However, it is expected -- from the documentation to cover a successful operation response and -- any known errors. data Responses Responses :: Maybe (Referenced Response) -> InsOrdHashMap HttpStatusCode (Referenced Response) -> Responses -- | The documentation of responses other than the ones declared for -- specific HTTP response codes. It can be used to cover undeclared -- responses. [_responsesDefault] :: Responses -> Maybe (Referenced Response) -- | Any HTTP status code can be used as the property name (one property -- per HTTP status code). Describes the expected response for those HTTP -- status codes. [_responsesResponses] :: Responses -> InsOrdHashMap HttpStatusCode (Referenced Response) -- | Describes a single response from an API Operation. data Response Response :: Text -> Maybe (Referenced Schema) -> InsOrdHashMap HeaderName Header -> Maybe Example -> Response -- | A short description of the response. GFM syntax can be used for rich -- text representation. [_responseDescription] :: Response -> Text -- | A definition of the response structure. It can be a primitive, an -- array or an object. If this field does not exist, it means no content -- is returned as part of the response. As an extension to the Schema -- Object, its root type value may also be "file". This SHOULD be -- accompanied by a relevant produces mime-type. [_responseSchema] :: Response -> Maybe (Referenced Schema) -- | A list of headers that are sent with the response. [_responseHeaders] :: Response -> InsOrdHashMap HeaderName Header -- | An example of the response message. [_responseExamples] :: Response -> Maybe Example type HttpStatusCode = Int data SecurityScheme SecurityScheme :: SecuritySchemeType -> Maybe Text -> SecurityScheme -- | The type of the security scheme. [_securitySchemeType] :: SecurityScheme -> SecuritySchemeType -- | A short description for security scheme. [_securitySchemeDescription] :: SecurityScheme -> Maybe Text data SecuritySchemeType SecuritySchemeBasic :: SecuritySchemeType SecuritySchemeApiKey :: ApiKeyParams -> SecuritySchemeType SecuritySchemeOAuth2 :: OAuth2Params -> SecuritySchemeType -- | Lists the required security schemes to execute this operation. The -- object can have multiple security schemes declared in it which are all -- required (that is, there is a logical AND between the schemes). newtype SecurityRequirement SecurityRequirement :: InsOrdHashMap Text [Text] -> SecurityRequirement [getSecurityRequirement] :: SecurityRequirement -> InsOrdHashMap Text [Text] newtype SecurityDefinitions SecurityDefinitions :: Definitions SecurityScheme -> SecurityDefinitions data ApiKeyParams ApiKeyParams :: Text -> ApiKeyLocation -> ApiKeyParams -- | The name of the header or query parameter to be used. [_apiKeyName] :: ApiKeyParams -> Text -- | The location of the API key. [_apiKeyIn] :: ApiKeyParams -> ApiKeyLocation -- | The location of the API key. data ApiKeyLocation ApiKeyQuery :: ApiKeyLocation ApiKeyHeader :: ApiKeyLocation data OAuth2Params OAuth2Params :: OAuth2Flow -> InsOrdHashMap Text Text -> OAuth2Params -- | The flow used by the OAuth2 security scheme. [_oauth2Flow] :: OAuth2Params -> OAuth2Flow -- | The available scopes for the OAuth2 security scheme. [_oauth2Scopes] :: OAuth2Params -> InsOrdHashMap Text Text data OAuth2Flow OAuth2Implicit :: AuthorizationURL -> OAuth2Flow OAuth2Password :: TokenURL -> OAuth2Flow OAuth2Application :: TokenURL -> OAuth2Flow OAuth2AccessCode :: AuthorizationURL -> TokenURL -> OAuth2Flow -- | The authorization URL to be used for OAuth2 flow. This SHOULD be in -- the form of a URL. type AuthorizationURL = Text -- | The token URL to be used for OAuth2 flow. This SHOULD be in the form -- of a URL. type TokenURL = Text -- | Allows referencing an external resource for extended documentation. data ExternalDocs ExternalDocs :: Maybe Text -> URL -> ExternalDocs -- | A short description of the target documentation. GFM syntax can be -- used for rich text representation. [_externalDocsDescription] :: ExternalDocs -> Maybe Text -- | The URL for the target documentation. [_externalDocsUrl] :: ExternalDocs -> URL -- | A simple object to allow referencing other definitions in the -- specification. It can be used to reference parameters and responses -- that are defined at the top level for reuse. newtype Reference Reference :: Text -> Reference [getReference] :: Reference -> Text data Referenced a Ref :: Reference -> Referenced a Inline :: a -> Referenced a newtype MimeList MimeList :: [MediaType] -> MimeList [getMimeList] :: MimeList -> [MediaType] newtype URL URL :: Text -> URL [getUrl] :: URL -> Text module Data.Swagger.Schema.Generator -- | Note: schemaGen may error, if schema type is not -- specified, and cannot be inferred. schemaGen :: Definitions Schema -> Schema -> Gen Value genValue :: ToSchema a => Proxy a -> Gen Value validateFromJSON :: forall a. (ToSchema a, FromJSON a) => Proxy a -> Property