/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None Safe-InferredNone !Wrap your custom error type in a . J This requires the ToResponseCode dictionary to pick a response code when  the error is served.  &        None The 9 datatype containing sub-dictionaries for translation of L identifiers (i), headers (h), parameters (p), inputs (i), outputs (o), and E errors (e). Inputs, outputs and errors can have multiple associated  dictionaries. The explicitly dictionary ) describes how to translate some Haskell ! error value to a response body. The explicitly dictionary ) describes how to translate some Haskell D value to a response body. We currently use a constructor for every + combination of input type to output type. The explicitly dictionary ( describes how to translate the request H body into some Haskell value. We currently use a constructor for every M combination of input type to output type. For example, we can use XML input # in multiple ways, parsed, as plain/'text or as raw bytes, depending on the  needs of the backend resource. "The explicit dictionary  Parameter( describes how to translate the request : parameters to some Haskell value. The first field in the & L constructor is a white list of paramters we can recognize, used in generic K validation and for generating documentation. The second field is a custom  parser that can fail with a # or can produce a some value. When 8 explicitly not interested in the parameters we can use %. &The explicit dictionary &) describes how to translate HTTP request 7 headers to some Haskell value. The first field in the & constructor M is a white list of headers we can recognize, used in generic validation and L for generating documentation. The second field is a custom parser that can  fail with a 2 or can produce a some value. When explicitly not & interested in the headers we can use ). *The explicit dictionary *' describes how to translate a resource J identifier (originating from a request URI) to a Haskell value. We allow  plain . identifiers or all Haskell types that have a  instance. -The -F datatype enumerates all input and output formats we might recognize. 5*Type synonym for dictionary modification. 6<Custom existential packing an error together with a Reason. =,The empty dictionary, recognizing no types. 8  !"#$%&'()*+,-./01234 !56789:;<=5  !"#$%&'()*+,-./0123456789:;<=5-3210/.89:;<=5*,+&)('"%$#!  4 67  ! "%$#&)('*,+-3210/.4 !56789:;<=None>3Set custom sub-dictionary for recognizing headers. ?3Add custom sub-dictionary for recognizing headers. @6Set custom sub-dictionary for recognizing parameters. A6Add custom sub-dictionary for recognizing parameters. B;Open up input type for extension with custom dictionaries. C"Allow direct usage of as input as . D*Allow direct usage of as input as raw Xml ". E8Allow usage of input as file contents, represented as a #. F,The input can be read into some instance of . For inspection reasons + the type must also be an instance of both  and $. G,The input can be read into some instance of %. H The input can be used as an XML #. I,The input can be read into some instance of Json. J<Open up output type for extension with custom dictionaries. KAllow output as plain String. LGAllow file output using a combination of the raw data and a mime type. MAllow output as XML using the % type class. N)Allow output as raw XML represented as a #. OAllow output as JSON using the Json type class. P@Allow output as multipart. Writes out the ByteStrings separated " by boundaries, with content type 'multipart/mixed'. Q;Open up error type for extension with custom dictionaries. R%Allow error output as JSON using the Json type class. S$Allow error output as XML using the % type class. T1The input can be read into some instance of both Json and %. UAllow output as JSON using the Json$ type class and allow output as XML  using the % type class. V%Allow error output as JSON using the Json type class and allow output as  XML using the % type class. W1The input can be read into some instance of both Json and % $ and allow output as JSON using the Json$ type class and allow output as XML  using the % type class. >?@ABCDEFGHIJKLMNOPQRSTUVW>?@ABCDEFGHIJKLMNOPQRSTUVWBCDEFGHIJKLMNOPQRSTUVW>?@A>?@ABCDEFGHIJKLMNOPQRSTUVWNoneO  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWNoneXYZ[\&'] ()*+,-.XYZ[\]XYZ[\]XYZ[\&']None^A _ returning a list of items. _A _ returning a single item. `Apply a Functor f to a type a. In general will result in f  a , except if f is /", in which case it will result in  a. This prevents a lot of / wrapping/ unwrapping. a<A handler for some endpoint. The input and output types are  specified by the c!, which can be created using the  combinators from Rest.Dictionary.Combinators . The inputs 1 (headers, parameters and body) are passed as an f to the  d. This handler runs in monad m, combined with the D ability to throw errors. The result is either the output value, or # a list of them for list handlers.  If the e0 flag is set, this suggests to clients that the B resource should only be served over https. It has no effect when  running the API. f7An environment of inputs passed to a handler. Contains  information from the hs, the ieters and the body  j. k Construct a a using a 5 instead of a .  The e flag will be 0. lSet e to 1. m/Smart constructor for creating a list handler.  Restricts the type of the  dictionary to   nDictionary for taking  parameters. Allows two query  parameters, offset and count$. If not passed, the defaults are 0 8 and 100. The maximum range that can be passed is 1000. o9Create a list handler that accepts ordering information.  Restricts the type of the  dictionary to   p?Dictionary for taking ordering information. In addition to the  parameters accepted by n, this accepts order and   direction. q9Create a handler for a single resource. Takes the entire  environmend as input. r<Create a handler for a single resource. Takes only the body  information as input. s-Create a handler for a single resource. Doesn't take any input. tBCreate a handler for a single resource. Take body information and - the resource identifier as input. The monad m should be a  2$-like type containing the idenfier. ^_`abcdefghijklmnopqrst^_`abcdefghijklmnopqrstqrstmonpfghijabcdek`_^l^_`abcdefghijklmnopqrstNone uvwxyz{|}~ uvwxyz{|}~ }{|~uzyxwvuzyxwv{|}~None3456789:3456789:None;<=>?@A ;<=>?@A NoneAA named endpoint: an static action, a single item of many items. :An identification of an item in a resource. It contains a D dictionary describing how to identify the resource, and a function $ for this identification type to an id. A  can either be a  (there is only one) or it  can be identified  an  entifier. Specifies if we'-re identifying a single resource, or many (a  listing). >A step in the routing of a resource. A part of the uri either  identifies a  resource, or an  resource. Named " resources can be static actions (B) or one or many singletons or  by's. A 8 describes how (part of the) route to a resource looks, 2 and returns an identifier for a single resource (sid), many  resources (mid) or a static action (aid). > The first argument specifies the top level resource (no path E segments). The second specifies a what happens at the first step in  the path. #A schema with a top level listing. $A schema with no top level listing. ,A schema with a singleton at the top level. A list of named endpoints. /A top level action endpoint for this resource. A singleton resource endpoint. 5A single resource endpoint with a string identifier. @A single resource endpoint with an identifier that can be read. C1A single resource identified as specified by the *. A listing endpoint. -A listing endpoint with a string identifier. /A listing with an identifier that can be read. D)A listing identified as specified by the *. 5An unnamed single resource with a string identifier. @An unnamed single resource with an identifier that can be read. E:An unnamed single resource identified as specified by the  *. -An unnamed listing with a string identifier. 8An unnamed listing with an identifier that can be read. F2An unnamed listing identified as specified by the *. !CDEFCDEF NoneThe 3 type is used as the identifier for resources that  can'9t be routed to. It contains no values apart from bottom. The 2 data type represents a single resource in a REST  API. Handlers run in a monad m#, while things below this resource  run in s. The identifiers sid, mid and aid identify a ' single item, a listing and an action. ?The name for this resource, used as a path segment in routing. 7A description of the resource, used for documentation. +The schema for routing and identification. <Private resources are not documented, but they are exposed. &How to run a subresource given an id. 1List handler, both toplevel and deeper (search). Static actions, e.g. signin. (Get a single resource identified by id. +Update a single resource identified by id. +Delete a single resource identified by id. /Create a single resource, generating a new id. (Actions performed on a single resource. !Properties of a single resource. "Create an empty resource given an  function. It has no E name, so if you wish to route to this resource, you should set one. Make a resource that doesn't add any information for  subresources (i.e.  is set to G). @Make a resource that provides the single resource identifier to  its subresources. @Make a resource that provides the single resource identifier to 8 its subresources, by giving a convertion function to a H.  If s is a newtype around H, for example, the function  should unwrap the newtype.  None'An API is a list of versioned routers. BAn API version has three parts. The first is two are used for API : breaking changes, the last for non-API breaking changes. A  is a  and a list of subresources. 2An existential where the second argument has kind (* -> *). 9Convenience constructor constructing a route without any  subresource. 5Add the second router as a subresource to the first. @Operators with the right fixities to allow you to define routes C without using parentheses. Start with the shortest near the root. @Operators with the right fixities to allow you to define routes C without using parentheses. Start with the shortest near the root. @Operators with the right fixities to allow you to define routes C without using parentheses. Start with the shortest near the root. @Operators with the right fixities to allow you to define routes C without using parentheses. Start with the shortest near the root. @Operators with the right fixities to allow you to define routes C without using parentheses. Start with the shortest near the root. @Operators with the right fixities to allow you to define routes C without using parentheses. Start with the shortest near the root. 1An empty router to use as the root for your API. Smart constructor for . "Get the latest version of an API. Parse a  as a #. The string should contain two or ' three numbers separated by dots, e.g. 1.12.3. >Look up a version in an API. The string can either be a valid  version according to , or latest. Look up a version in the API. AGiven a version string, an API and a fallback, do the following:  Parse the version number or latest.  Look up this version. & If ok, run the given function on it. . If not parsed or found, return the fallback. II None%JKLMNOPQRSTUVWXYZ[\]^_`abcdefghi#JKLMNOPQRSTUVWXYZ[\]^_`abcdefghi NoneNonev      >?@ABCDEFGHIJKLMNOPQRSTUVW^_fghijlmnoqrstj !"#$%&'()*+,-./012345467879:;<=>?@ABCDEFFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoppqrsttuvwxyz{|}~GG                                 !"#$%&'()*+,-./012121311141456789:89;5<=>?@ABCDEFGHIJKLM N O P QR5<S T   U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q rsrest-core-0.33.1Rest.Dictionary.Types Rest.Handler Rest.ErrorRest.Dictionary.CombinatorsRest.ContainerRest.Driver.TypesRest.Driver.PerformRest.Driver.RestM Rest.Schema Rest.ResourceRest.ApiRest.Driver.RoutingRest.Run Rest.ShowUrl Rest.InfoRest.DictionaryRestDictrest-types-1.11.1Rest.Types.RangecountoffsetRangemapEorThrow orThrowWitheitherToStatus domainReasonDictsNoneErrorsOutputsInputsErrorXmlEJsonEOutput MultipartOStringOXmlOJsonORawXmlOFileOInputRawXmlIXmlTextIXmlIFileIStringIReadIJsonIParam TwoParamsNoParamHeader TwoHeadersNoHeaderIdentStringIdReadIdFormatNoFormatMultipartFormat FileFormat StringFormat JsonFormat XmlFormatdictsModifier SomeErrorheadersparamsinputsoutputserrorsemptymkHeader addHeadermkParaddParsomeIstringIxmlTextIfileIreadIxmlIrawXmlIjsonIsomeOstringOfileOxmlOrawXmlOjsonO multipartOsomeEjsonExmlExmlJsonIxmlJsonOxmlJsonExmlJsonlistIlistOmappingImappingOstatusOreasonE ListHandlerHandlerApply GenHandler dictionaryhandlersecureEnvheaderparaminput mkGenHandler secureHandler mkListingrangemkOrderedListing orderedRange mkHandlermkInputHandlermkConstHandler mkIdHandlerMethodUnknownDELETEPOSTPUTGETRunnableHandlerRun mapHandler getHeader getParametergetBody getMethodgetPathslookupMimeType setHeadersetResponseCode writeResponse fetchInputsparseContentType parametersparser failureWriter contentType validator outputWriteroutputMultipartacceptRestM RestOutput headersSet responseCode RestInputbodymethodpaths mimeTypes emptyInputrunRestM runRestM_EndpointIdGetterBy Singleton CardinalityManySingleStepUnnamedNamedSchema withListing noListing singletonnamedstaticsinglesingleBy singleReadlisting listingBy listingRead unnamedSingleunnamedSingleReadunnamedListingunnamedListingReadVoidmagicResourcename descriptionschemaprivateenterliststaticsgetupdateremovecreateactionsselects mkResource mkResourceIdmkResourceReadermkResourceReaderWithApiVersionfullmajorminorRouterEmbedSome1routecompose-/--/---/----/-----/------/root mkVersionlatest parseVersion lookupVersionlookupVersion' withVersionUriPartssplitUriString mkListHandlermkMultiHandler apiToHandler apiToHandler'Rest.Types.ShowUrlshowUrlShowUrlRest.Types.InfoexampledescribeInfoRest.Types.ErrorReason SomeReasontoResponseCodeToResponseCodetoEither fromEitherReason_UnsupportedRouteUnsupportedMethodUnsupportedVersion IdentError HeaderError ParamError InputError OutputErrorNotFound NotAllowedAuthenticationFailedBusyGone CustomReason ParseError PrintError MissingFieldUnsupportedFormat DataErrorreason DomainReasonFailureSuccessStatusbaseGHC.BaseStringGHC.ReadRead $fShowParam $fShowHeader text-1.2.0.0Data.Text.Internal.LazyTextbytestring-0.10.0.2Data.ByteString.Lazy.Internal ByteStringGHC.ShowShow hxt-9.3.1.9Text.XML.HXT.Arrow.Pickle.Xml XmlPickler mkStatusDict intersectRest.Types.Container SomeOutputitemsListtransformers-0.4.1.0Data.Functor.IdentityIdentityghc-prim GHC.TypesFalseTrueControl.Monad.Trans.ReaderReader $fRestMaybeT$fRestIdentityT $fRestWriterT $fRestStateT $fRestReaderT $fRestRWST $fRestErrorT $fRestContTunRestM outputHeader outputCode $fRestRestM$fMonadTransRestM$fMonoidRestOutput Data.EitherLeft singleIdent listingIdentunnamedSingleIdentunnamedListingIdentidReaderT $fShowVersionunRouterapiError runRouter routeRoot routeMultiGet routeRouter routeToplevel routeCreate routeStep routeNamed routeUnnamed routeGettermultirouteListGetterwithSubresource routeSingle routeNamerouteListHandler lookupRouter parseIdent popSegment withSegment noRestPath guardNullPath hasMethod guardMethod mkListActionmkMultiGetHandler runResource fromMaybeT