W8      !"#$%&'()*+,-./01234567None0234=EJKMWA datatype that represents everything that can happen at an endpoint, with its lenses:List of captures (/)List of GET parameters (1)=What the request body should look like, if any is requested (3)5What the response should be if everything goes well (2)You can tweak an  (like the default K) with these lenses to transform an action and add some information to it.-A type to represent an HTTP response. Has an 87 status and a 'Maybe ByteString' response body. Tweak  using the % and $ lenses if you want.[If you want to respond with a non-empty response body, you'll most likely want to write a *L instance for the type that'll be represented as some JSON in the response.Can be tweaked with two lenses. > defResponse Response {_respStatus = 200, _respBody = []} > defResponse & respStatus .~ 204 & respBody .~ [("If everything goes well", "{ \"status\": \"ok\" }")] Response {_respStatus = 204, _respBody = [("If everything goes well", "{ \"status\": \"ok\" }")]}Type of GET parameter:Normal corresponds to  QueryParam, i.e your usual GET parameterList corresponds to  QueryParams), i.e GET parameters with multiple valuesFlag corresponds to  QueryFlag , i.e a value-less GET parameterA type to represent a GET parameter from the Query String. Holds its name, the possible values (leave empty if there isn't a finite number of them), and a description of how it influences the output or behavior.Write a (& instance for your GET parameter types QA type to represent captures. Holds the name of the capture and a description.Write a &" instance for your captured types.&Our API type, a good old hashmap from  to An  type that holds the  and the .Gets used as the key in the  hashmap. Modify  or any  value you want using the  and  lenses to tweak. >  GET / >  &  9 ["foo"] GET /foo >  &  9 ["foo"] &  :  POST /foo Supported HTTP request methodsthe PUT methodthe POST methodthe GET methodthe DELETE method;Render a path as a <-delimited stringAn ) whose path is `"/"` and whose method is Here's how you can modify it: >  GET / >  &  9 ["foo"] GET /foo >  &  9 ["foo"] &  :  POST /foo  An empty 4Default response: status code 200, no response body.Can be tweaked with two lenses. > defResponse Response {_respStatus = 200, _respBody = Nothing} > defResponse & respStatus .~ 204 & respBody .~ Just "[]" Response {_respStatus = 204, _respBody = Just "[]"}8Create an API that's comprised of a single endpoint.  is a =(, so combine multiple endpoints with > or ?.&LThe class that helps us automatically get documentation for URL captures.Example of an instance: ninstance ToCapture (Capture "name" Text) where toCapture _ = DocCapture "name" "name of the person to greet"(NThe class that helps us automatically get documentation for GET parameters.Example of an instance: instance ToParam (QueryParam "capital" Bool) where toParam _ = DocQueryParam "capital" ["true", "false"] "Get the greeting message in uppercase (true) or not (false). Default is false."*xThe class that lets us display a sample JSON input or output when generating documentation for endpoints that either:expect a request body, or return a non empty response bodyExample of an instance: D{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} import Data.Aeson import Data.Text import GHC.Generics data Greet = Greet { _msg :: Text } deriving (Generic, Show) instance FromJSON Greet instance ToJSON Greet instance ToSample Greet where toSample = Just g where g = Greet "Hello, haskeller!"*You can also instantiate this class using , instead of +G: it lets you specify different responses along with some context (as @I) that explains when you're supposed to get the corresponding response. -[The class that abstracts away the impact of API combinators on documentation generation.42Generate the docs for a given API that implements -.7;Generate documentation in Markdown format for the given .A "books" :> B "isbn" Text will appear as books:isbn in the docs.CThe generated docs for a D b just appends the docs for a with the docs for b.VEFGHIJKLM NOP;QRST !"#$%&'()*+,-./01234567UVWXYZ[\]^_AC@`abcde?f>=ghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9:      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab  !"#$%&'()*+,-./012345678-.47*+,56()&'  "# !%$/01326EFGHIJKLM  NOP;QRST !"#$%&'()*+,-./01234567UVWXYZ[\]^_ACc       !"#$%&'()*+,-./0123456789:;<=;<>?@AB@CD@CE@CFGHIJKLMNKOPQRSTUVWXYZ[\]^_`abcdefgh@ij@Ck@il@mn@mo@mo@Cp@Cq@Cr@Cr@Cs@Ct@Ct@Cu@Cv@Cv@Cw@Cx@Cx@Cy@Cz@Cz@C{@C|@C|@C}@C~@C~@C@C@C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; ; ; ;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;56;57;58;59;5:;5;;5<;5=;5>;5?;5@;5A;5B;5C;5D;5E;5F;5G;5H;5I;5J;5K;5L;5M;5N;5O;5P;5Q;5R;5S;5T;5U;5V;5W;5X;5Y;5Z;5[;5\;5];5^;5_;5`;5a;bc;bd;ef;eg;eh;ei;ej;ek;el;em;en;eo;ep;eq;er;es;et;eu;ev;ew;ex;ey;ez;e{;e|;e};e~;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=>;=?;=@;=A;BC;BD;BE;BF;BG;BH;BI;BJ;BK;BL;BM;BN;BO;BP;BQ;BR;BS;BT;BU;BV;WX;WY;WZ;W[;W\;W];W^;W_;W`;Wa;bc;bd;be;bf;bg;bh;bi;bj;bk;bl;bm;bn;bo;bp;bq;br;bs;bt;bu;bv;wx;wy;wz;w{;w|;w};w~;w;w;w;w;w;w;w;w;w;w;w;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;< ;< ;< ;< ;< ;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;< ;<!;<";#7;#$;#;;#%;#&;#';#C;#(;#);#*;#?;#+;#,;#-;#.;#/;#0;#1;#S;#2;#W;#3;#4;#5;#[;#6;#_;#7;#8;#9;#:;#G;#J;#;;#M;#P;#<;#=;#>;#?;#@;#A;#B;#C;#D;#E;#F;#G;#H;#I;#J;KL;KM;KN;KO;PQ;RS;TU;TV;TV;TW;TX;TY;TY;TZ;[\;[\;[];^_;^`;^a;^b;^c;^d;^e;^f;^g;^g;hi;jk;jl;mn;mo;pqrstrsuvwxvwyvwzvw{v|}v|~v|servant-docs-0.3 Servant.DocsActionResponse ParamKindFlagListNormal DocQueryParam _paramName _paramValues _paramDesc _paramKind DocCapture _capSymbol_capDescAPIEndpointMethodDocPUTDocPOSTDocGET DocDELETE defEndpointemptyAPI defResponse defActionsinglemethodpathcapDesc capSymbol paramDesc paramKind paramName paramValuesrespBody respStatus ToCapture toCaptureToParamtoParamToSampletoSample toSamplesHasDocsdocsForcapturesheadersparamsresponserqbodydocssampleByteStringsampleByteStringsmarkdownghc-prim GHC.TypesIntlens-4.7Control.Lens.Setter<>~.~showPathbaseGHC.Real/ Data.MonoidMonoidmappend<> text-1.2.0.3Data.Text.InternalText $fHasDocs:>5 servant-0.2.1Servant.API.CaptureCapture $fHasDocs:<|>Servant.API.Alternative:<|> _captures_headers_params_rqbody _response _respStatus _respBody_path_method$fHashableEndpoint$fShowEndpoint$fHashableMethod $fShowMethod $fHasDocs:> $fHasDocs:>0 $fHasDocsRaw $fHasDocs:>1 $fHasDocs:>2 $fHasDocs:>3 $fHasDocsPut $fHasDocsPost $fHasDocs:>4 $fHasDocsGet$fHasDocsDeleteData.Traversable TraversablememptytraverseControl.ApplicativegetConstConstmconcatgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastbifunctors-4.2Data.Bifunctorbimap Bifunctortransformers-0.4.2.0Data.Functor.IdentityIdentity runIdentitycontravariant-1.2.0.1Data.Functor.Contravariant>$ contramap ContravariantControl.Lens.THdefaultFieldRulesmakeFieldsWith makeFieldsabbreviatedFieldscamelCaseFieldsunderscoreFields makeWrappeddeclareLensesWith declareFieldsdeclareWrapped declarePrismsdeclareClassyFor declareClassydeclareLensesFor declareLensesmakeLensesWith makeClassyFor makeLensesFor makeClassy_ makeClassy makeLenses classyRules_ classyRules lensRulesFor lensRules lensClass lensField createClassgenerateUpdateableOpticsgenerateSignatures simpleLensesControl.Lens.Internal.PrismTHmakeClassyPrisms makePrismsControl.Lens.Internal.FieldTH LensRulesTopName MethodNameDefNameControl.Lens.AtsansixAtIndexcontainsContainsIxValueixIxedatAtControl.Lens.Consunsnocsnoc|>_last_init_tail_headunconscons<|_ConsCons_SnocSnocControl.Lens.EacheachEachControl.Lens.Empty_EmptyAsEmptyControl.Lens.Wrappedalafala _Unwrapping _Wrapping _Unwrapping' _Wrapping'op _Unwrapped_Wrapped _Unwrapped' _Wrapped' UnwrappedWrapped Rewrapped RewrappingControl.Lens.Iso bimappingrmappinglmapping dimapping contramappingimagmamagma involutedreversedlazyflipped uncurriedcurriedanonnon'nonmappingenumunderaufaucloneIsowithIsofromisoAnIsoAnIso'swappedSwappedstrictStrictControl.Lens.EqualitysimplesimplyfromEqmapEqsubstEqrunEq Identical AnEquality AnEquality'Control.Lens.Platedparts composOpFoldparaparaOf holesOnOfholesOnholes contextsOnOf contextsOn contextsOfcontextstransformMOnOf transformMOf transformMOn transformM transformOnOf transformOf transformOn transform universeOnOf universeOn universeOfuniverse rewriteMOnOf rewriteMOn rewriteMOfrewriteM rewriteOnOf rewriteOn rewriteOfrewritechildrendeep...platePlatedControl.Lens.ReifiedrunLensLens ReifiedLens ReifiedLens'runIndexedLens IndexedLensReifiedIndexedLensReifiedIndexedLens'runIndexedTraversalIndexedTraversalReifiedIndexedTraversalReifiedIndexedTraversal' runTraversal TraversalReifiedTraversalReifiedTraversal' runGetterGetter ReifiedGetterrunIndexedGetter IndexedGetterReifiedIndexedGetterrunFoldFold ReifiedFoldrunIndexedFold IndexedFoldReifiedIndexedFold runSetterSetter ReifiedSetterReifiedSetter'runIndexedSetter IndexedSetterReifiedIndexedSetterReifiedIndexedSetter'runIsoIso ReifiedIso ReifiedIso'runPrismPrism ReifiedPrism ReifiedPrism'Control.Lens.LevelilevelslevelsControl.Lens.Indexed ifoldMapByOf ifoldMapBy imapAccumL imapAccumRiforMimapMiforitoListifoldlMifoldrMifind iconcatMapiforM_imapM_ifor_ itraverse_noneinoneiallianyindexindicesasIndex withIndexicompose<.> reindexed selfIndex.><.imappedimapFunctorWithIndexifoldl'ifoldr'ifoldlifoldrifoldedifoldMapFoldableWithIndex itraversed itraverseTraversableWithIndexControl.Lens.TraversaldeepOffailing ifailoverfailoverelements elementsOfelement elementOfignored traversed64 traversed1 traversed imapAccumLOf imapAccumROfiforMOfimapMOfiforOf itraverseOfcloneIndexedTraversal1cloneIndexPreservingTraversal1cloneTraversal1cloneIndexedTraversalcloneIndexPreservingTraversalcloneTraversaldroppingtakingbesidebothunsafeSingularsingularholesOfiunsafePartsOf'unsafePartsOf'iunsafePartsOf unsafePartsOf ipartsOf'partsOf'ipartsOfpartsOfilocilociscanl1Ofscanr1Of mapAccumLOf mapAccumROf transposeOf sequenceOfforMOfmapMOf sequenceAOfforOf traverseOf ATraversal ATraversal' ATraversal1 ATraversal1'AnIndexedTraversalAnIndexedTraversal1AnIndexedTraversal'AnIndexedTraversal1' Traversing Traversing1 Traversing' Traversing1' traverseMin TraverseMin traverseMax TraverseMaxControl.Lens.Fold foldMapByOf foldMapByfoldByOffoldByheadOfidroppingWhile itakingWhile ifiltered^@?!^@?^@.. itoListOf ifoldlMOf ifoldrMOf ifoldlOf' ifoldrOf'ifindMOfifindOf iconcatMapOfiforMOf_imapMOf_iforOf_ itraverseOf_inoneOfiallOfianyOfifoldlOfifoldrOf ifoldMapOf backwardsipreusespreusesipreusepreuse ipreviewspreviewsipreviewpreviewipreprehasn'thasfoldlMOffoldrMOf foldl1Of' foldr1Of'foldlOf'foldrOf'foldl1Offoldr1OffindMOffindOf minimumByOf maximumByOf minimumOf maximumOf notNullOfnullOflastOffirstOf^?!^?lengthOfconcatOf concatMapOf notElemOfelemOfmsumOfasumOf sequenceOf_forMOf_mapMOf_ sequenceAOf_forOf_ traverseOf_sumOf productOfnoneOfallOfanyOforOfandOf^..toListOffoldlOffoldrOffoldOf foldMapOflinedworded droppingWhile takingWhilefilterediteratedunfoldedcycled replicatedrepeatedfolded64foldedifoldingfoldingControl.Lens.ZoomzoomZoommagnifyMagnifyControl.Lens.Prism_Shownearlyonly_Void_Nothing_Just_Right_Leftmatchingisn'tbelowasidewithoutoutsideprism'prism clonePrism withPrismAPrismAPrism'Control.Lens.Reviewreusesreusereviews#reviewreununtoReviewAReviewControl.Lens.Gettercoerced^@.iusesiuseiviewsiview ilistenings listenings ilistening listeningusesuse^.viewsviewitotoGettingIndexedGetting AccessingControl.Lens.Tuple_1Field1_2Field2_3Field3_4Field4_5Field5_6Field6_7Field7_8Field8_9Field9Control.Lens.LoupeLoupe SimpleLoupeControl.Lens.Lensuniteddevoid<#=<#~#%%=<#%=<#%~#%=#=#%%~#%~#~storing^#<<%@=<%@=%%@=%%@~<<%@~<%@~overA<<>=<<>~<<~<<<>=<<&&=<<||=<<**=<<^^=<<^=<~<<&&~<<||~<<**~<<^^~<<^~<&%%=%%~&~ilensiplenslensALensALens' AnIndexedLensAnIndexedLens'imapOfmapOfassignA%@=%@~isetsiover icensoring censoringipassingpassingscribe<>=