hercules-ci-api-0.8.1.0: Hercules CI API definition with Servant
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hercules.API

Synopsis

Documentation

api :: Proxy (API auth) Source #

servantClientApi :: Proxy (ClientServantAPI auth) Source #

useApi :: forall subapi api mode. GenericServant subapi mode => (api mode -> ToServant subapi mode) -> api mode -> subapi mode #

enterApiE :: forall {k} subapi api mode (a :: k). GenericServant (subapi a) mode => api a mode -> (api a mode -> ToServant (subapi a) mode) -> subapi a mode #

type API auth = HerculesServantAPI auth :<|> ("api" :> SwaggerSchemaUI "v1" "swagger.json") Source #

data HerculesAPI auth f Source #

Instances

Instances details
Generic (HerculesAPI auth f) Source # 
Instance details

Defined in Hercules.API

Associated Types

type Rep (HerculesAPI auth f) :: Type -> Type Source #

Methods

from :: HerculesAPI auth f -> Rep (HerculesAPI auth f) x Source #

to :: Rep (HerculesAPI auth f) x -> HerculesAPI auth f Source #

type Rep (HerculesAPI auth f) Source # 
Instance details

Defined in Hercules.API

type Rep (HerculesAPI auth f) = D1 ('MetaData "HerculesAPI" "Hercules.API" "hercules-ci-api-0.8.1.0-inplace" 'False) (C1 ('MetaCons "HerculesAPI" 'PrefixI 'True) (((S1 ('MetaSel ('Just "accounts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (AccountsAPI auth))) :*: (S1 ('MetaSel ('Just "clientInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ClientInfoAPI auth))) :*: S1 ('MetaSel ('Just "forges") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ForgeAPI auth))))) :*: (S1 ('MetaSel ('Just "repos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ReposAPI auth))) :*: (S1 ('MetaSel ('Just "projects") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ProjectsAPI auth))) :*: S1 ('MetaSel ('Just "agents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (AgentsAPI auth)))))) :*: ((S1 ('MetaSel ('Just "build") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (BuildAPI auth))) :*: (S1 ('MetaSel ('Just "effects") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (EffectsAPI auth))) :*: S1 ('MetaSel ('Just "health") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (HealthAPI auth))))) :*: (S1 ('MetaSel ('Just "organizations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (OrganizationsAPI auth))) :*: (S1 ('MetaSel ('Just "state") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (StateAPI auth))) :*: S1 ('MetaSel ('Just "gitlab") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (GitLabAPI auth))))))))

data ClientAPI auth f Source #

Instances

Instances details
Generic (ClientAPI auth f) Source # 
Instance details

Defined in Hercules.API

Associated Types

type Rep (ClientAPI auth f) :: Type -> Type Source #

Methods

from :: ClientAPI auth f -> Rep (ClientAPI auth f) x Source #

to :: Rep (ClientAPI auth f) x -> ClientAPI auth f Source #

type Rep (ClientAPI auth f) Source # 
Instance details

Defined in Hercules.API

type Rep (ClientAPI auth f) = D1 ('MetaData "ClientAPI" "Hercules.API" "hercules-ci-api-0.8.1.0-inplace" 'False) (C1 ('MetaCons "ClientAPI" 'PrefixI 'True) (((S1 ('MetaSel ('Just "clientAccounts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (AccountsAPI auth))) :*: S1 ('MetaSel ('Just "clientClientInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ClientInfoAPI auth)))) :*: (S1 ('MetaSel ('Just "clientForges") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ForgeAPI auth))) :*: (S1 ('MetaSel ('Just "clientRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ReposAPI auth))) :*: S1 ('MetaSel ('Just "clientProjects") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (ProjectsAPI auth)))))) :*: ((S1 ('MetaSel ('Just "clientAgents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (AgentsAPI auth))) :*: (S1 ('MetaSel ('Just "clientBuild") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (BuildAPI auth))) :*: S1 ('MetaSel ('Just "clientEffects") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (EffectsAPI auth))))) :*: (S1 ('MetaSel ('Just "clientOrganizations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (OrganizationsAPI auth))) :*: (S1 ('MetaSel ('Just "clientState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (StateAPI auth))) :*: S1 ('MetaSel ('Just "clientGitLab") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (GitLabAPI auth))))))))

type AddAPIVersion api = "api" :> ("v1" :> api) Source #

data Id (a :: k) #

Instances

Instances details
FromJSON (Id a) 
Instance details

Defined in Hercules.API.Id

FromJSONKey (Id a) 
Instance details

Defined in Hercules.API.Id

ToJSON (Id a) 
Instance details

Defined in Hercules.API.Id

ToJSONKey (Id a) 
Instance details

Defined in Hercules.API.Id

Generic (Id a) 
Instance details

Defined in Hercules.API.Id

Associated Types

type Rep (Id a) :: Type -> Type Source #

Methods

from :: Id a -> Rep (Id a) x Source #

to :: Rep (Id a) x -> Id a Source #

Show (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

showsPrec :: Int -> Id a -> ShowS Source #

show :: Id a -> String Source #

showList :: [Id a] -> ShowS Source #

NFData (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

rnf :: Id a -> () Source #

Eq (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

(==) :: Id a -> Id a -> Bool Source #

(/=) :: Id a -> Id a -> Bool Source #

Ord (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

compare :: Id a -> Id a -> Ordering Source #

(<) :: Id a -> Id a -> Bool Source #

(<=) :: Id a -> Id a -> Bool Source #

(>) :: Id a -> Id a -> Bool Source #

(>=) :: Id a -> Id a -> Bool Source #

max :: Id a -> Id a -> Id a Source #

min :: Id a -> Id a -> Id a Source #

Hashable (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

hashWithSalt :: Int -> Id a -> Int Source #

hash :: Id a -> Int Source #

FromHttpApiData (Id a) 
Instance details

Defined in Hercules.API.Id

ToHttpApiData (Id a) 
Instance details

Defined in Hercules.API.Id

ToParamSchema (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

toParamSchema :: forall (t :: SwaggerKind Type). Proxy (Id a) -> ParamSchema t Source #

ToSchema (Id a) 
Instance details

Defined in Hercules.API.Id

type Rep (Id a) 
Instance details

Defined in Hercules.API.Id

type Rep (Id a) = D1 ('MetaData "Id" "Hercules.API.Id" "hercules-ci-api-core-0.1.5.1-inplace" 'True) (C1 ('MetaCons "Id" 'PrefixI 'True) (S1 ('MetaSel ('Just "idUUID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UUID)))

data Name (a :: k) #

Instances

Instances details
FromJSON (Name a) 
Instance details

Defined in Hercules.API.Name

ToJSON (Name a) 
Instance details

Defined in Hercules.API.Name

Generic (Name a) 
Instance details

Defined in Hercules.API.Name

Associated Types

type Rep (Name a) :: Type -> Type Source #

Methods

from :: Name a -> Rep (Name a) x Source #

to :: Rep (Name a) x -> Name a Source #

Show (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

showsPrec :: Int -> Name a -> ShowS Source #

show :: Name a -> String Source #

showList :: [Name a] -> ShowS Source #

NFData (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

rnf :: Name a -> () Source #

Eq (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

(==) :: Name a -> Name a -> Bool Source #

(/=) :: Name a -> Name a -> Bool Source #

Ord (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

compare :: Name a -> Name a -> Ordering Source #

(<) :: Name a -> Name a -> Bool Source #

(<=) :: Name a -> Name a -> Bool Source #

(>) :: Name a -> Name a -> Bool Source #

(>=) :: Name a -> Name a -> Bool Source #

max :: Name a -> Name a -> Name a Source #

min :: Name a -> Name a -> Name a Source #

Hashable (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

hashWithSalt :: Int -> Name a -> Int Source #

hash :: Name a -> Int Source #

FromHttpApiData (Name a) 
Instance details

Defined in Hercules.API.Name

ToHttpApiData (Name a) 
Instance details

Defined in Hercules.API.Name

ToParamSchema (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

toParamSchema :: forall (t :: SwaggerKind Type). Proxy (Name a) -> ParamSchema t Source #

ToSchema (Name a) 
Instance details

Defined in Hercules.API.Name

type Rep (Name a) 
Instance details

Defined in Hercules.API.Name

type Rep (Name a) = D1 ('MetaData "Name" "Hercules.API.Name" "hercules-ci-api-core-0.1.5.1-inplace" 'True) (C1 ('MetaCons "Name" 'PrefixI 'True) (S1 ('MetaSel ('Just "nameText") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data Result e a Source #

Constructors

Ok a 
Error e 

Instances

Instances details
Foldable (Result e) Source # 
Instance details

Defined in Hercules.API.Result

Methods

fold :: Monoid m => Result e m -> m Source #

foldMap :: Monoid m => (a -> m) -> Result e a -> m Source #

foldMap' :: Monoid m => (a -> m) -> Result e a -> m Source #

foldr :: (a -> b -> b) -> b -> Result e a -> b Source #

foldr' :: (a -> b -> b) -> b -> Result e a -> b Source #

foldl :: (b -> a -> b) -> b -> Result e a -> b Source #

foldl' :: (b -> a -> b) -> b -> Result e a -> b Source #

foldr1 :: (a -> a -> a) -> Result e a -> a Source #

foldl1 :: (a -> a -> a) -> Result e a -> a Source #

toList :: Result e a -> [a] Source #

null :: Result e a -> Bool Source #

length :: Result e a -> Int Source #

elem :: Eq a => a -> Result e a -> Bool Source #

maximum :: Ord a => Result e a -> a Source #

minimum :: Ord a => Result e a -> a Source #

sum :: Num a => Result e a -> a Source #

product :: Num a => Result e a -> a Source #

Traversable (Result e) Source # 
Instance details

Defined in Hercules.API.Result

Methods

traverse :: Applicative f => (a -> f b) -> Result e a -> f (Result e b) Source #

sequenceA :: Applicative f => Result e (f a) -> f (Result e a) Source #

mapM :: Monad m => (a -> m b) -> Result e a -> m (Result e b) Source #

sequence :: Monad m => Result e (m a) -> m (Result e a) Source #

Functor (Result e) Source # 
Instance details

Defined in Hercules.API.Result

Methods

fmap :: (a -> b) -> Result e a -> Result e b Source #

(<$) :: a -> Result e b -> Result e a Source #

(FromJSON e, FromJSON a) => FromJSON (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

(ToJSON e, ToJSON a) => ToJSON (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

Generic (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

Associated Types

type Rep (Result e a) :: Type -> Type Source #

Methods

from :: Result e a -> Rep (Result e a) x Source #

to :: Rep (Result e a) x -> Result e a Source #

(Read a, Read e) => Read (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

(Show a, Show e) => Show (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

Methods

showsPrec :: Int -> Result e a -> ShowS Source #

show :: Result e a -> String Source #

showList :: [Result e a] -> ShowS Source #

(NFData a, NFData e) => NFData (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

Methods

rnf :: Result e a -> () Source #

(Eq a, Eq e) => Eq (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

Methods

(==) :: Result e a -> Result e a -> Bool Source #

(/=) :: Result e a -> Result e a -> Bool Source #

(Ord a, Ord e) => Ord (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

Methods

compare :: Result e a -> Result e a -> Ordering Source #

(<) :: Result e a -> Result e a -> Bool Source #

(<=) :: Result e a -> Result e a -> Bool Source #

(>) :: Result e a -> Result e a -> Bool Source #

(>=) :: Result e a -> Result e a -> Bool Source #

max :: Result e a -> Result e a -> Result e a Source #

min :: Result e a -> Result e a -> Result e a Source #

(ToSchema e, ToSchema a) => ToSchema (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

type Rep (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

type Rep (Result e a) = D1 ('MetaData "Result" "Hercules.API.Result" "hercules-ci-api-0.8.1.0-inplace" 'False) (C1 ('MetaCons "Ok" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "Error" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 e)))

Reexports

data NoContent Source #

A type for responses without content-body.

Constructors

NoContent 

Instances

Instances details
Generic NoContent 
Instance details

Defined in Servant.API.ContentTypes

Associated Types

type Rep NoContent :: Type -> Type Source #

Read NoContent 
Instance details

Defined in Servant.API.ContentTypes

Show NoContent 
Instance details

Defined in Servant.API.ContentTypes

NFData NoContent 
Instance details

Defined in Servant.API.ContentTypes

Methods

rnf :: NoContent -> () Source #

Eq NoContent 
Instance details

Defined in Servant.API.ContentTypes

HasStatus NoContent

If an API can respond with NoContent we assume that this will happen with the status code 204 No Content. If this needs to be overridden, WithStatus can be used.

Instance details

Defined in Servant.API.UVerb

Associated Types

type StatusOf NoContent :: Nat Source #

(KnownNat status, AllAccept cs, SwaggerMethod method, HasSwagger (UVerb method cs as)) => HasSwagger (UVerb method cs (WithStatus status NoContent ': as) :: Type) 
Instance details

Defined in Servant.Swagger.Internal

Methods

toSwagger :: Proxy (UVerb method cs (WithStatus status NoContent ': as)) -> Swagger Source #

(AllAccept cs, KnownNat status, SwaggerMethod method) => HasSwagger (Verb method status cs NoContent :: Type) 
Instance details

Defined in Servant.Swagger.Internal

Methods

toSwagger :: Proxy (Verb method status cs NoContent) -> Swagger Source #

(AllAccept cs, AllToResponseHeader hs, KnownNat status, SwaggerMethod method) => HasSwagger (Verb method status cs (Headers hs NoContent) :: Type) 
Instance details

Defined in Servant.Swagger.Internal

Methods

toSwagger :: Proxy (Verb method status cs (Headers hs NoContent)) -> Swagger Source #

AllMime (ctyp ': (ctyp' ': ctyps)) => AllMimeRender (ctyp ': (ctyp' ': ctyps)) NoContent 
Instance details

Defined in Servant.API.ContentTypes

Methods

allMimeRender :: Proxy (ctyp ': (ctyp' ': ctyps)) -> NoContent -> [(MediaType, ByteString)] Source #

Accept ctyp => AllMimeRender '[ctyp] NoContent 
Instance details

Defined in Servant.API.ContentTypes

type Rep NoContent 
Instance details

Defined in Servant.API.ContentTypes

type Rep NoContent = D1 ('MetaData "NoContent" "Servant.API.ContentTypes" "servant-0.19.1-CrZ2iNUcfKi8rDYqYmrjOl" 'False) (C1 ('MetaCons "NoContent" 'PrefixI 'False) (U1 :: Type -> Type))
type StatusOf NoContent 
Instance details

Defined in Servant.API.UVerb

type StatusOf NoContent = 204

Utilities

noContent :: Functor m => m NoContent -> m () Source #

void specialised to NoContent to soothe the compiler that rightfully warns about throwing away a do notation result. By specialising, we make sure that we still get warnings if the result type changes in the future. (We'll get an error)