wire-api-0.1.0
Safe HaskellSafe-Inferred
LanguageGHC2021

Wire.API.Routes.Version

Synopsis

API version endpoint

type VersionAPI = Named "get-version" ("api-version" :> Get '[JSON] VersionInfo) Source #

data VersionInfo Source #

Information related to the public API version.

This record also contains whether federation is enabled and the federation domain. Clients should fetch this information early when connecting to a backend, in order to decide how to form request paths, and how to deal with federated backends and qualified user IDs.

type VersionHeader = "X-Wire-API-Version" Source #

Version

data Version Source #

Version of the public API. Serializes to `"vn"`. See VersionNumber below for one that serializes to `n`. See `libswire-apitestunitTestWireAPIRoutes/Version.hs` for serialization rules.

If you add or remove versions from this type, make sure versionInt, supportedVersions, and developmentVersions stay in sync; everything else here should keep working without change. See also documentation in the *docs* directory. https://docs.wire.com/developer/developer/api-versioning.html#version-bump-checklist

Constructors

V0 
V1 
V2 
V3 
V4 
V5 
V6 
V7 

Instances

Instances details
Arbitrary Version Source # 
Instance details

Defined in Wire.API.Routes.Version

FromJSON Version Source # 
Instance details

Defined in Wire.API.Routes.Version

ToJSON Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Bounded Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Enum Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Generic Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Associated Types

type Rep Version :: Type -> Type #

Methods

from :: Version -> Rep Version x #

to :: Rep Version x -> Version #

Show Version Source # 
Instance details

Defined in Wire.API.Routes.Version

ToByteString Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Eq Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

(==) :: Version -> Version -> Bool #

(/=) :: Version -> Version -> Bool #

Ord Version Source # 
Instance details

Defined in Wire.API.Routes.Version

FromHttpApiData Version Source # 
Instance details

Defined in Wire.API.Routes.Version

ToHttpApiData Version Source # 
Instance details

Defined in Wire.API.Routes.Version

ToSchema Version Source # 
Instance details

Defined in Wire.API.Routes.Version

SingKind Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Associated Types

type Demote Version = (r :: Type) Source #

POrd Version Source # 
Instance details

Defined in Wire.API.Routes.Version

Associated Types

type Compare arg arg1 :: Ordering Source #

type arg < arg1 :: Bool Source #

type arg <= arg1 :: Bool Source #

type arg > arg1 :: Bool Source #

type arg >= arg1 :: Bool Source #

type Max arg arg1 :: a Source #

type Min arg arg1 :: a Source #

SingI 'V0 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V0 Source #

SingI 'V1 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V1 Source #

SingI 'V2 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V2 Source #

SingI 'V3 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V3 Source #

SingI 'V4 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V4 Source #

SingI 'V5 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V5 Source #

SingI 'V6 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V6 Source #

SingI 'V7 Source # 
Instance details

Defined in Wire.API.Routes.Version

Methods

sing :: Sing 'V7 Source #

IsResponse cs (Respond s desc (Versioned v a)) => IsResponse (cs :: k) (VersionedRespond v s desc a) Source # 
Instance details

Defined in Wire.API.Routes.Versioned

Associated Types

type ResponseStatus (VersionedRespond v s desc a) :: Nat Source #

type ResponseBody (VersionedRespond v s desc a) Source #

(ToSchema (Versioned v a), HasOpenApi api, AllAccept cts) => HasOpenApi (VersionedReqBody v cts a :> api :: Type) Source # 
Instance details

Defined in Wire.API.Routes.Versioned

Methods

toOpenApi :: Proxy (VersionedReqBody v cts a :> api) -> OpenApi Source #

(AllCTUnrender cts (Versioned v a), HasServer api context, HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters) => HasServer (VersionedReqBody' v mods cts a :> api :: Type) context Source # 
Instance details

Defined in Wire.API.Routes.Versioned

Associated Types

type ServerT (VersionedReqBody' v mods cts a :> api) m Source #

Methods

route :: Proxy (VersionedReqBody' v mods cts a :> api) -> Context context -> Delayed env (Server (VersionedReqBody' v mods cts a :> api)) -> Router env Source #

hoistServerWithContext :: Proxy (VersionedReqBody' v mods cts a :> api) -> Proxy context -> (forall x. m x -> n x) -> ServerT (VersionedReqBody' v mods cts a :> api) m -> ServerT (VersionedReqBody' v mods cts a :> api) n Source #

(KnownSymbol desc, ToSchema a, SingI v, ToSchema (Versioned v a), Typeable v) => IsSwaggerResponse (VersionedRespond v s desc a :: Type) Source # 
Instance details

Defined in Wire.API.Routes.Versioned

Methods

responseSwagger :: Declare Response Source #

type Rep Version Source # 
Instance details

Defined in Wire.API.Routes.Version

type Rep Version = D1 ('MetaData "Version" "Wire.API.Routes.Version" "wire-api-0.1.0-3915FetN8WgFcCGrbk6Vve" 'False) (((C1 ('MetaCons "V0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "V1" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "V2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "V3" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "V4" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "V5" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "V6" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "V7" 'PrefixI 'False) (U1 :: Type -> Type))))
type Demote Version Source # 
Instance details

Defined in Wire.API.Routes.Version

type Sing Source # 
Instance details

Defined in Wire.API.Routes.Version

type Sing
type (arg :: Version) < (arg1 :: Version) Source # 
Instance details

Defined in Wire.API.Routes.Version

type (arg :: Version) < (arg1 :: Version) = Apply (Apply (TFHelper_6989586621679337776Sym0 :: TyFun Version (Version ~> Bool) -> Type) arg) arg1
type (arg :: Version) <= (arg1 :: Version) Source # 
Instance details

Defined in Wire.API.Routes.Version

type (arg :: Version) <= (arg1 :: Version) = Apply (Apply (TFHelper_6989586621679337823Sym0 :: TyFun Version (Version ~> Bool) -> Type) arg) arg1
type (arg :: Version) > (arg1 :: Version) Source # 
Instance details

Defined in Wire.API.Routes.Version

type (arg :: Version) > (arg1 :: Version) = Apply (Apply (TFHelper_6989586621679337883Sym0 :: TyFun Version (Version ~> Bool) -> Type) arg) arg1
type (arg :: Version) >= (arg1 :: Version) Source # 
Instance details

Defined in Wire.API.Routes.Version

type (arg :: Version) >= (arg1 :: Version) = Apply (Apply (TFHelper_6989586621679337907Sym0 :: TyFun Version (Version ~> Bool) -> Type) arg) arg1
type Compare (a1 :: Version) (a2 :: Version) Source # 
Instance details

Defined in Wire.API.Routes.Version

type Compare (a1 :: Version) (a2 :: Version)
type Max (arg :: Version) (arg1 :: Version) Source # 
Instance details

Defined in Wire.API.Routes.Version

type Max (arg :: Version) (arg1 :: Version) = Apply (Apply (Max_6989586621679337947Sym0 :: TyFun Version (Version ~> Version) -> Type) arg) arg1
type Min (arg :: Version) (arg1 :: Version) Source # 
Instance details

Defined in Wire.API.Routes.Version

type Min (arg :: Version) (arg1 :: Version) = Apply (Apply (Min_6989586621679337987Sym0 :: TyFun Version (Version ~> Version) -> Type) arg) arg1
type SpecialiseToVersion v (From w :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (From w :> api) = If (v < w) EmptyAPI (SpecialiseToVersion v api)
type SpecialiseToVersion v (Until w :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type ServerT (VersionedReqBody' v mods cts a :> api :: Type) m Source # 
Instance details

Defined in Wire.API.Routes.Versioned

type ServerT (VersionedReqBody' v mods cts a :> api :: Type) m = a -> ServerT api m
type ResponseBody (VersionedRespond v s desc a) Source # 
Instance details

Defined in Wire.API.Routes.Versioned

type ResponseBody (VersionedRespond v s desc a) = ResponseBody (Respond s desc a)
type ResponseStatus (VersionedRespond v s desc a) Source # 
Instance details

Defined in Wire.API.Routes.Versioned

type ResponseStatus (VersionedRespond v s desc a) = ResponseStatus (Respond s desc a)

versionInt :: Integral i => Version -> i Source #

Manual enumeration of version integrals (the `n` in the constructor `Vn`).

This is not the same as fromEnum: we will remove unsupported versions in the future, which will cause `n` and `fromEnum Vn` to diverge. Enum should not be understood as a bijection between meaningful integers and versions, but merely as a convenient way to say `allVersions = [minBound..]`.

newtype VersionNumber Source #

Wrapper around Version that serializes to integers `n`, as needed in eg. VersionInfo. See `libswire-apitestunitTestWireAPIRoutes/Version.hs` for serialization rules.

Constructors

VersionNumber 

Instances

Instances details
Arbitrary VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

FromJSON VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

ToJSON VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

Bounded VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

Enum VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

Generic VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

Associated Types

type Rep VersionNumber :: Type -> Type #

Show VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

ToByteString VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

Eq VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

Ord VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

FromHttpApiData VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

ToHttpApiData VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

ToSchema VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

type Rep VersionNumber Source # 
Instance details

Defined in Wire.API.Routes.Version

type Rep VersionNumber = D1 ('MetaData "VersionNumber" "Wire.API.Routes.Version" "wire-api-0.1.0-3915FetN8WgFcCGrbk6Vve" 'True) (C1 ('MetaCons "VersionNumber" 'PrefixI 'True) (S1 ('MetaSel ('Just "fromVersionNumber") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)))

data VersionExp Source #

A version "expression" which can be used when disabling versions in a configuration file.

Constructors

VersionExpConst Version

A fixed version.

VersionExpDevelopment

All development versions.

Instances

Instances details
FromJSON VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

ToJSON VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

Generic VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

Associated Types

type Rep VersionExp :: Type -> Type #

Show VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

Eq VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

Ord VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

ToSchema VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

type Rep VersionExp Source # 
Instance details

Defined in Wire.API.Routes.Version

type Rep VersionExp = D1 ('MetaData "VersionExp" "Wire.API.Routes.Version" "wire-api-0.1.0-3915FetN8WgFcCGrbk6Vve" 'False) (C1 ('MetaCons "VersionExpConst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)) :+: C1 ('MetaCons "VersionExpDevelopment" 'PrefixI 'False) (U1 :: Type -> Type))

expandVersionExp :: VersionExp -> Set Version Source #

Expand a version expression into a set of versions.

Servant combinators

data Until v Source #

Instances

Instances details
RoutesToPaths api => RoutesToPaths (Until v :> api :: Type) Source # 
Instance details

Defined in Wire.API.VersionInfo

(VersionedMonad (Demote v) m, SingI n, Ord (Demote v), SingKind v, HasClientAlgebra m api) => HasClient m (Until n :> api) Source # 
Instance details

Defined in Wire.API.VersionInfo

Associated Types

type Client m (Until n :> api) Source #

Methods

clientWithRoute :: Proxy m -> Proxy (Until n :> api) -> Request -> Client m (Until n :> api) Source #

hoistClientMonad :: Proxy m -> Proxy (Until n :> api) -> (forall x. mon x -> mon' x) -> Client mon (Until n :> api) -> Client mon' (Until n :> api) Source #

(SingI n, Ord (Demote v), Enum (Demote v), SingKind v, HasServer api ctx) => HasServer (Until n :> api :: Type) ctx Source # 
Instance details

Defined in Wire.API.VersionInfo

Associated Types

type ServerT (Until n :> api) m Source #

Methods

route :: Proxy (Until n :> api) -> Context ctx -> Delayed env (Server (Until n :> api)) -> Router env Source #

hoistServerWithContext :: Proxy (Until n :> api) -> Proxy ctx -> (forall x. m x -> n0 x) -> ServerT (Until n :> api) m -> ServerT (Until n :> api) n0 Source #

type SpecialiseToVersion (v :: k) (Until w :> api) Source # 
Instance details

Defined in Wire.API.Routes.SpecialiseToVersion

type SpecialiseToVersion (v :: k) (Until w :> api) = If (v < w) (SpecialiseToVersion v api) EmptyAPI
type Client m (Until n :> api) Source # 
Instance details

Defined in Wire.API.VersionInfo

type Client m (Until n :> api) = Client m api
type SpecialiseToVersion v (Until w :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type ServerT (Until n :> api :: Type) m Source # 
Instance details

Defined in Wire.API.VersionInfo

type ServerT (Until n :> api :: Type) m = ServerT api m

data From v Source #

Instances

Instances details
RoutesToPaths api => RoutesToPaths (From v :> api :: Type) Source # 
Instance details

Defined in Wire.API.VersionInfo

(VersionedMonad (Demote v) m, SingI n, Ord (Demote v), SingKind v, HasClientAlgebra m api) => HasClient m (From n :> api) Source # 
Instance details

Defined in Wire.API.VersionInfo

Associated Types

type Client m (From n :> api) Source #

Methods

clientWithRoute :: Proxy m -> Proxy (From n :> api) -> Request -> Client m (From n :> api) Source #

hoistClientMonad :: Proxy m -> Proxy (From n :> api) -> (forall x. mon x -> mon' x) -> Client mon (From n :> api) -> Client mon' (From n :> api) Source #

(SingI n, Ord (Demote v), Enum (Demote v), SingKind v, HasServer api ctx) => HasServer (From n :> api :: Type) ctx Source # 
Instance details

Defined in Wire.API.VersionInfo

Associated Types

type ServerT (From n :> api) m Source #

Methods

route :: Proxy (From n :> api) -> Context ctx -> Delayed env (Server (From n :> api)) -> Router env Source #

hoistServerWithContext :: Proxy (From n :> api) -> Proxy ctx -> (forall x. m x -> n0 x) -> ServerT (From n :> api) m -> ServerT (From n :> api) n0 Source #

type SpecialiseToVersion (v :: k) (From w :> api) Source # 
Instance details

Defined in Wire.API.Routes.SpecialiseToVersion

type SpecialiseToVersion (v :: k) (From w :> api) = If (v < w) EmptyAPI (SpecialiseToVersion v api)
type Client m (From n :> api) Source # 
Instance details

Defined in Wire.API.VersionInfo

type Client m (From n :> api) = Client m api
type SpecialiseToVersion v (From w :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (From w :> api) = If (v < w) EmptyAPI (SpecialiseToVersion v api)
type ServerT (From n :> api :: Type) m Source # 
Instance details

Defined in Wire.API.VersionInfo

type ServerT (From n :> api :: Type) m = ServerT api m

Swagger instances

type family SpecialiseToVersion (v :: Version) api Source #

Instances

Instances details
type SpecialiseToVersion v RawM Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v EmptyAPI Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v WebSocketPending Source # 
Instance details

Defined in Wire.API.Routes.WebSocket

type SpecialiseToVersion v (api1 :<|> api2) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (tag :> api) Source # 
Instance details

Defined in Wire.API.Routes.Public.Cargohold

type SpecialiseToVersion v (s :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (s :> api) = s :> SpecialiseToVersion v api
type SpecialiseToVersion v (Capture' mod sym a :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (Capture' mod sym a :> api) = Capture' mod sym a :> SpecialiseToVersion v api
type SpecialiseToVersion v (Description desc :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (Summary s :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (Header' opts l x :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (Header' opts l x :> api) = Header' opts l x :> SpecialiseToVersion v api
type SpecialiseToVersion v (QueryParam' mods l x :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (QueryParam' mods l x :> api) = QueryParam' mods l x :> SpecialiseToVersion v api
type SpecialiseToVersion v (ReqBody t x :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (StreamBody' opts f t x :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (StreamBody' opts f t x :> api) = StreamBody' opts f t x :> SpecialiseToVersion v api
type SpecialiseToVersion v (Deprecated :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (CanThrow e :> api) Source # 
Instance details

Defined in Wire.API.Error

type SpecialiseToVersion v (CanThrowMany es :> api) Source # 
Instance details

Defined in Wire.API.Error

type SpecialiseToVersion v (MakesFederatedCall comp name :> api) Source # 
Instance details

Defined in Wire.API.MakesFederatedCall

type SpecialiseToVersion v (Bearer a :> api) Source # 
Instance details

Defined in Wire.API.Routes.Bearer

type SpecialiseToVersion v (Cookies cs :> api) Source # 
Instance details

Defined in Wire.API.Routes.Cookies

type SpecialiseToVersion v (DescriptionOAuthScope scope :> api) Source # 
Instance details

Defined in Wire.API.Routes.Public

type SpecialiseToVersion v (ZAuthServant t opts :> api) Source # 
Instance details

Defined in Wire.API.Routes.Public

type SpecialiseToVersion v (ZHostOpt :> api) Source # 
Instance details

Defined in Wire.API.Routes.Public

type SpecialiseToVersion v (QualifiedCapture' mods capture a :> api) Source # 
Instance details

Defined in Wire.API.Routes.QualifiedCapture

type SpecialiseToVersion v (QualifiedCapture' mods capture a :> api) = QualifiedCapture' mods capture a :> SpecialiseToVersion v api
type SpecialiseToVersion v (From w :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (From w :> api) = If (v < w) EmptyAPI (SpecialiseToVersion v api)
type SpecialiseToVersion v (Until w :> api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (Named n api) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion w (VersionedReqBody v cts a :> api) Source # 
Instance details

Defined in Wire.API.Routes.Versioned

type SpecialiseToVersion v (Verb m s t r) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (Verb m s t r) = Verb m s t r
type SpecialiseToVersion v (MultiVerb m t r x) Source # 
Instance details

Defined in Wire.API.Routes.Version

type SpecialiseToVersion v (MultiVerb m t r x) = MultiVerb m t r x
type SpecialiseToVersion v (LowLevelStream m s h d t) Source # 
Instance details

Defined in Wire.API.Routes.LowLevelStream

type SpecialiseToVersion v (LowLevelStream m s h d t) = LowLevelStream m s h d t