hercules-ci-api-0.6.0.1: Hercules CI API definition with Servant
Safe HaskellNone
LanguageHaskell2010

Hercules.API

Synopsis

Documentation

api :: Proxy (API auth) Source #

servantClientApi :: Proxy (ClientServantAPI auth) Source #

useApi :: (GenericServant f mode, GenericServant g mode) => (f mode -> ToServant g mode) -> f mode -> g mode Source #

Postcomposes fromServant to an accessor, preserving the mode parameter, because otherwise the mode parameter can not be inferred.

Ideally, this functionality would be built into a new combinator.

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 #

Methods

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

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

type Rep (HerculesAPI auth f) Source # 
Instance details

Defined in Hercules.API

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 #

Methods

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

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

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.6.0.1-L0iUsBHZSJOKN1YKeFqdwV" 'False) (C1 ('MetaCons "ClientAPI" 'PrefixI 'True) (((S1 ('MetaSel ('Just "clientAccounts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f :- ToServantApi (AccountsAPI 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)))))))

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

data Id (a :: k) #

Instances

Instances details
Eq (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

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

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

Ord (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

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

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

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

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

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

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

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

Show (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

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

show :: Id a -> String #

showList :: [Id a] -> ShowS #

Generic (Id a) 
Instance details

Defined in Hercules.API.Id

Associated Types

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

Methods

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

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

Hashable (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

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

hash :: Id a -> Int #

ToJSON (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

toJSON :: Id a -> Value #

toEncoding :: Id a -> Encoding #

toJSONList :: [Id a] -> Value #

toEncodingList :: [Id a] -> Encoding #

ToJSONKey (Id a) 
Instance details

Defined in Hercules.API.Id

FromJSON (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

parseJSON :: Value -> Parser (Id a) #

parseJSONList :: Value -> Parser [Id a] #

FromJSONKey (Id a) 
Instance details

Defined in Hercules.API.Id

NFData (Id a) 
Instance details

Defined in Hercules.API.Id

Methods

rnf :: Id a -> () #

ToSchema (Id a) 
Instance details

Defined in Hercules.API.Id

ToHttpApiData (Id a) 
Instance details

Defined in Hercules.API.Id

FromHttpApiData (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 #

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.2.0-Kb4HIw5aa4T3DIld1hsl5j" 'True) (C1 ('MetaCons "Id" 'PrefixI 'True) (S1 ('MetaSel ('Just "idUUID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UUID)))

data Name (a :: k) #

A slug. Display names are simply Text.

Instances

Instances details
Eq (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

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

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

Ord (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

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

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

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

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

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

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

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

Show (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

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

show :: Name a -> String #

showList :: [Name a] -> ShowS #

Generic (Name a) 
Instance details

Defined in Hercules.API.Name

Associated Types

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

Methods

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

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

Hashable (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

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

hash :: Name a -> Int #

ToJSON (Name a) 
Instance details

Defined in Hercules.API.Name

FromJSON (Name a) 
Instance details

Defined in Hercules.API.Name

NFData (Name a) 
Instance details

Defined in Hercules.API.Name

Methods

rnf :: Name a -> () #

ToSchema (Name a) 
Instance details

Defined in Hercules.API.Name

ToHttpApiData (Name a) 
Instance details

Defined in Hercules.API.Name

FromHttpApiData (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 #

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.2.0-Kb4HIw5aa4T3DIld1hsl5j" '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
Functor (Result e) Source # 
Instance details

Defined in Hercules.API.Result

Methods

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

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

Foldable (Result e) Source # 
Instance details

Defined in Hercules.API.Result

Methods

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

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

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

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

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

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

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

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

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

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

null :: Result e a -> Bool #

length :: Result e a -> Int #

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

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

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

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

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

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) #

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

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

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

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

Defined in Hercules.API.Result

Methods

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

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

(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 #

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

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

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

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

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

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

(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 #

show :: Result e a -> String #

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

Generic (Result e a) Source # 
Instance details

Defined in Hercules.API.Result

Associated Types

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

Methods

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

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

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

Defined in Hercules.API.Result

Methods

toJSON :: Result e a -> Value #

toEncoding :: Result e a -> Encoding #

toJSONList :: [Result e a] -> Value #

toEncodingList :: [Result e a] -> Encoding #

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

Defined in Hercules.API.Result

Methods

parseJSON :: Value -> Parser (Result e a) #

parseJSONList :: Value -> Parser [Result e a] #

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

Defined in Hercules.API.Result

Methods

rnf :: Result e a -> () #

(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.6.0.1-L0iUsBHZSJOKN1YKeFqdwV" '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 #

A type for responses without content-body.

Constructors

NoContent 

Instances

Instances details
Eq NoContent 
Instance details

Defined in Servant.API.ContentTypes

Read NoContent 
Instance details

Defined in Servant.API.ContentTypes

Show NoContent 
Instance details

Defined in Servant.API.ContentTypes

Generic NoContent 
Instance details

Defined in Servant.API.ContentTypes

Associated Types

type Rep NoContent :: Type -> Type #

NFData NoContent 
Instance details

Defined in Servant.API.ContentTypes

Methods

rnf :: NoContent -> () #

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 #

(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 #

(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 #

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

Defined in Servant.API.ContentTypes

Methods

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

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)] #

type Rep NoContent 
Instance details

Defined in Servant.API.ContentTypes

type Rep NoContent = D1 ('MetaData "NoContent" "Servant.API.ContentTypes" "servant-0.18.2-3Croxel57F78p9YqVydJGF" '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)