avers-api-0.1.0: Types describing the core and extended Avers APIs

Safe HaskellNone
LanguageHaskell2010

Avers.API

Synopsis

Documentation

type CreateObject = "objects" :> (Credentials :> (ReqBody '[JSON] CreateObjectBody :> Post '[JSON] CreateObjectResponse)) Source #

The complete Avers API

type DeleteObject = "objects" :> (Capture "objId" ObjId :> (Credentials :> Delete '[JSON] ())) Source #

type ObjectChanges = "objects" :> (Capture "objId" ObjId :> ("changes" :> (Credentials :> Raw))) Source #

type Feed = "feed" :> (Credentials :> Raw) Source #

type DeleteSession = "session" :> (SessionId :> Delete '[JSON] (Headers '[Header "Set-Cookie" SetCookie] ())) Source #

type LookupBlobContent = "blobs" :> (Capture "blobId" BlobId :> ("content" :> (Credentials :> Get '[OctetStream] (Headers '[Header "Content-Type" Text] BlobContent)))) Source #

type CacheValidationToken = Header "If-None-Match" Text Source #

The cache validator token when passed in the request. The server will use it to determine if the cached response on the client can be reused or not.

type Cacheable a = Headers '[Header "Cache-Control" Text, Header "ETag" Text] a Source #

Includes Cache-Control and ETag headers in the response to mark it as cacheable by the client.

data LookupObjectResponse Source #

data PatchObjectBody Source #

Constructors

PatchObjectBody 

Fields

  • pobRevisionId :: !RevId

    The RevId against which the client created the operations. This may be a bit behind if some other client submitted patches in parallel.

  • pobOperations :: ![Operation]

    The operations which the client wants to store in the database.

Instances

data PatchObjectResponse Source #

Constructors

PatchObjectResponse 

Fields

  • porPreviousPatches :: ![Patch]

    Patches which were already in the database. The submitted ops were rebased on top of these.

  • porNumProcessedOperations :: !Int

    The number of operations which were processed. This may be smaller than the number of submitted ops if the processing failed somewhere in the middle. The client can then decide what to do with those which were not accepted.

  • porResultingPatches :: ![Patch]

    Out of the submitted operations, these are the patches which were actually applied and stored in the database. This list may be shorter if some operations were dropped (because redundant or conflicting).

data CreateReleaseBody Source #

Constructors

CreateReleaseBody 

Instances

Generic CreateReleaseBody Source # 
FromJSON CreateReleaseBody Source # 
type Rep CreateReleaseBody Source # 
type Rep CreateReleaseBody = D1 (MetaData "CreateReleaseBody" "Avers.API.Types" "avers-api-0.1.0-5xQgSu03Sby3Ix8MX4nQxd" False) (C1 (MetaCons "CreateReleaseBody" PrefixI False) U1)

data ChangeSecretBody Source #

Constructors

ChangeSecretBody 

Fields

Instances

Generic ChangeSecretBody Source # 
FromJSON ChangeSecretBody Source # 
type Rep ChangeSecretBody Source # 
type Rep ChangeSecretBody = D1 (MetaData "ChangeSecretBody" "Avers.API.Types" "avers-api-0.1.0-5xQgSu03Sby3Ix8MX4nQxd" False) (C1 (MetaCons "ChangeSecretBody" PrefixI True) (S1 (MetaSel (Just Symbol "csbNewSecret") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Text)))

data Credentials Source #

Credentials are used to authenticate the client. It can be a SessionId (extracted from the session cookie).

Later we may add support for token based authentication. Then we extend this into a sumtype covering all the possible ways how credentials can be passed along with the request.