openapi3-3.2.3: OpenAPI 3.0 data model
Safe Haskell None
Language Haskell2010

Data.OpenApi.Internal.ParamSchema

Synopsis

Documentation

binarySchema :: Schema Source #

Default schema for binary data (any sequence of octets).

byteSchema :: Schema Source #

Default schema for binary data (base64 encoded).

passwordSchema :: Schema Source #

Default schema for password string. "password" format is used to hint UIs the input needs to be obscured.

class ToParamSchema a where Source #

Convert a type into a plain Schema .

In previous versions of the package there was a separate type called ParamSchema , which was included in a greater Schema . Now this is a single class, but distinction for schema generators for "simple" types is preserved.

ToParamSchema is suited only for primitive-like types without nested fields and such.

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_ ?~ OpenApiString
     & 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

Minimal complete definition

Nothing

Methods

toParamSchema :: Proxy a -> Schema Source #

Convert a type into a plain parameter schema.

>>> BSL.putStrLn $ encodePretty $ toParamSchema (Proxy :: Proxy Integer)
{
    "type": "integer"
}

Instances

Instances details
ToParamSchema Bool Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Char Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Double Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Float Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Int Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Int8 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Int16 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Int32 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Int64 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Integer Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Natural Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Word Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Word8 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Word16 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Word32 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Word64 Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema () Source #
>>> BSL.putStrLn $ encodePretty $ toParamSchema (Proxy :: Proxy ())
{
    "enum": [
        "_"
    ],
    "type": "string"
}
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema String Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Version Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

( ToParamSchemaByteStringError ByteString :: Constraint ) => ToParamSchema ByteString Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

( ToParamSchemaByteStringError ByteString :: Constraint ) => ToParamSchema ByteString Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Scientific Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema UTCTime Source #
>>> toParamSchema (Proxy :: Proxy UTCTime) ^. format
Just "yyyy-mm-ddThh:MM:ssZ"
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Text Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Text Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema All Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Any Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema SetCookie Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema ZonedTime Source #
>>> toParamSchema (Proxy :: Proxy ZonedTime) ^. format
Just "date-time"
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema LocalTime Source #
>>> toParamSchema (Proxy :: Proxy LocalTime) ^. format
Just "yyyy-mm-ddThh:MM:ss"
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema TimeOfDay Source #
>>> toParamSchema (Proxy :: Proxy TimeOfDay) ^. format
Just "hh:MM:ss"
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema NominalDiffTime Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema Day Source #

Format "date" corresponds to yyyy-mm-dd format.

Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema UUID Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema [a] Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Identity a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( First a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Last a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Dual a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Sum a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Product a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Set a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( HashSet a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Vector a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Vector a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Vector a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

ToParamSchema a => ToParamSchema ( Vector a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

HasResolution a => ToParamSchema ( Fixed a) Source #
Instance details

Defined in Data.OpenApi.Internal.ParamSchema

toParamSchemaBoundedIntegral :: forall a t. ( Bounded a, Integral a) => Proxy a -> Schema Source #

Default plain schema for Bounded , Integral types.

>>> BSL.putStrLn $ encodePretty $ toParamSchemaBoundedIntegral (Proxy :: Proxy Int8)
{
    "maximum": 127,
    "minimum": -128,
    "type": "integer"
}

type family ToParamSchemaByteStringError bs where ... Source #

Equations

ToParamSchemaByteStringError bs = TypeError ((((' Text "Impossible to have an instance " :<>: ShowType ( ToParamSchema bs)) :<>: Text ".") :$$: ((' Text "Please, use a newtype wrapper around " :<>: ShowType bs) :<>: Text " instead.")) :$$: ' Text "Consider using byteParamSchema or binaryParamSchemaemplates.")

genericToParamSchema :: forall a t. ( Generic a, GToParamSchema ( Rep a)) => SchemaOptions -> Proxy a -> Schema Source #

A configurable generic Schema creator.

>>> :set -XDeriveGeneric
>>> data Color = Red | Blue deriving Generic
>>> BSL.putStrLn $ encodePretty $ genericToParamSchema defaultSchemaOptions (Proxy :: Proxy Color)
{
    "enum": [
        "Red",
        "Blue"
    ],
    "type": "string"
}

data Proxy3 a b c Source #

Constructors

Proxy3
>>> import Data.Aeson (encode)
>>> import Data.OpenApi.Internal.Utils