Îõ³h$=‡7Ž€      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿNone #$-./89>?ÀÁÂÄÉÑÖ×Ù3>  servant-docsCustomise how an >! is converted into documentation. servant-docs servant-docsÜOur API documentation type, a product of top-level information and a good old hashmap from B to  B servant-docsAn B type that holds the … and the „.Gets used as the key in the > hashmap. Modify G or any B value you want using the … and „ lenses to tweak. defEndpoint"GET" /defEndpoint & path <>~ ["foo"] "GET" /foo:defEndpoint & path <>~ ["foo"] & method .~ HTTP.methodPost "POST" /fooF servant-docsRender a path as a ƒ-delimited stringG servant-docsAn B) whose path is `"/"` and whose method is GETHere's how you can modify it: defEndpoint"GET" /defEndpoint & path <>~ ["foo"] "GET" /foo:defEndpoint & path <>~ ["foo"] & method .~ HTTP.methodPost "POST" /fooH servant-docs An empty >I servant-docsThere should be at most one „À per API endpoint. So here we are keeping the first occurrence.J servant-docsDefault documentation options.K servant-docsÖCombine two Responses, we can't make a monoid because merging Status breaks the laws.ÂAs such, we invent a non-commutative, left associative operation K; to mush two together taking the status from the very left.L servant-docs4Default response: status code 200, no response body. Can be tweaked with four lenses. defResponseÐResponse {_respStatus = 200, _respTypes = [], _respBody = [], _respHeaders = []}defResponse & respStatus .~ 204ÐResponse {_respStatus = 204, _respTypes = [], _respBody = [], _respHeaders = []}M servant-docsÑCombine two Actions, we can't make a monoid as merging Response breaks the laws.ÂAs such, we invent a non-commutative, left associative operation M= to mush two together taking the response from the very left.N servant-docsDefault   . Has no — , no query œ, expects no request body (ž) and the typical response is L.Tweakable with lenses. defActionñAction {_authInfo = [], _captures = [], _headers = [], _params = [], _fragment = Nothing, _notes = [], _mxParams = [], _rqtypes = [], _rqbody = [], _response = Response {_respStatus = 200, _respTypes = [], _respBody = [], _respHeaders = []}}&defAction & response.respStatus .~ 201ñAction {_authInfo = [], _captures = [], _headers = [], _params = [], _fragment = Nothing, _notes = [], _mxParams = [], _rqtypes = [], _rqbody = [], _response = Response {_respStatus = 201, _respTypes = [], _respBody = [], _respHeaders = []}}O servant-docs8Create an API that's comprised of a single endpoint. > is a …(, so combine multiple endpoints with † or ‡.P  servant-docsDefault API generation options.%All content types are shown for both ² and ³; ° is set to ˆ (i.e. un-grouped).  servant-docs Capture "greetid" Text :> Delete)) $ defAction & headers <>~ [("X-Num-Unicorns", 1)] & notes <>~ [ DocNote "Title" ["This is some text"] , DocNote "Second section" ["And some more"] ]· servant-docsÇGenerate documentation given some extra introductions (in the form of DocInfo9) and some extra endpoint documentation (in the form of ".äThe extra introductions will be prepended to the top of the documentation, before the specific endpoint documentation. The extra endpoint documentation will be "unioned" with the automatically generated endpoint documentation.ÉYou are expected to build up the ExtraInfo with the Monoid instance and ¶.-If you only want to add an introduction, use ¸.¸ servant-docs2Generate the docs for a given API that implements ®) with with any number of introduction(s)¹ servant-docs2Sample input or output (if there is at least one).º servant-docs No samples.» servant-docs"Single sample without description.¼ servant-docsSamples without documentation.½ servant-docs,Default sample Generic-based inputs/outputs.¾ servant-docsÊSynthesise a sample value of a type, encoded in the specified media types.¿ servant-docsßSynthesise a list of sample values of a particular type, encoded in the specified media types.À servant-docs;Generate documentation in Markdown format for the given >.This is equivalent to Á P.Á  servant-docs;Generate documentation in Markdown format for the given > using the specified options.5These options allow you to customise aspects such as:ÐChoose how many content-types for each request body example are shown with ².ÑChoose how many content-types for each response body example are shown with ³.ÁFor example, to only show the first content-type of each example:  markdownWith (P & ² Š  & ³ Š  ) myAPI È servant-docs"TODO: this instance is incomplete.Ì servant-docs=TODO: mention the endpoint is streaming, its framing strategyAlso there are no samples.$TODO: AcceptFraming for content-typeÐ servant-docsThe generated docs for ‹ are empty.Ñ servant-docsThe generated docs for a Œ b just appends the docs for a with the docs for b.÷ servant-docs "books" :>  "isbn" Text will appear as books:isbn in the docs.ø servant-docs "books" :> Ž "isbn" Text will appear as books:isbn in the docs.”   !"#$%'&()+*,-/.0132459876:;=<>?A@BCEDFGHIJKLMNOP€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁ”BCEDFG>?A@H:;=<4598760132I,-/.()+*$%'&"# !JKL  MNOP€ƒ‚…„‡†‹Š‰ˆŒŽ‘•”“’Ÿžœ›š™˜—–³²±°´µ¶·¸®¯¬­¹º»¼½ª«¨©¾¿¦§¤¥¢£ ¡ÀÁNone  ./>ÀÁÂÉÖ×6û servant-docsÝReplace all JSON content types with PrettyJSON. Kind-polymorphic so it can operate on kinds * and [*].ü servant-docsPrettyJSON content type.ý servant-docs&Prettify generated JSON documentation. docs (ý ( ::  MyAPI)) ûüýüýûNone6Fí  !"#$%&'()*+,-./456789:;<=>BGHJLNOP€‚ƒ„…†‡ˆ‰Š‹Ž‘’”•–—™›œžŸ¤¥¦§¬­®¯°²³´µ¶·¸¹º»¼¾¿ÀÁýí®¯´ýÀÁP²³°·¸µ"#¶ !J¬­¹º»¼¾¿¦§¤¥B…„G>ƒ‚H()*+€:;<=‡†456789Š‹ˆ‰$%&'‘,-./Ž”•’L –—™›œŸžNO        !""##$%&&'())*+,,-.//012344567789::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…€†‡€†ˆ€†‰€Š‹ŒŽ‘ƒ’“ƒ”•ƒ–—ƒ–˜€™š›(servant-docs-0.12-DH6TUxYICKl8OrLMSfKE7WServant.Docs.InternalServant.Docs.Internal.Pretty Servant.DocsRenderingOptions_requestExamples_responseExamples _notesHeading_renderCurlBasePathShowContentTypesAllContentTypesFirstContentTypeAction _authInfo _captures_headers_params _fragment_notes _mxParams_rqtypes_rqbody _responseResponse _respStatus _respTypes _respBody _respHeaders ParamKindNormalListFlag DocOptions _maxSamples ExtraInfoDocNote _noteTitle _noteBodyDocAuthentication _authIntro_authDataRequiredDocIntro _introTitle _introBody DocFragment _fragSymbol _fragDesc DocQueryParam _paramName _paramValues _paramDesc _paramKind DocCapture _capSymbol_capDescAPI _apiIntros _apiEndpointsEndpoint_path_methodshowPath defEndpointemptyAPIcombineFragmentdefaultDocOptionscombineResponse defResponse combineAction defActionsingledefRenderingOptions$fHashableEndpoint$fShowEndpoint $fOrdDocIntro$fMonoidExtraInfo$fSemigroupExtraInfo $fMonoidAPI$fSemigroupAPI$fShowRenderingOptions$fEqShowContentTypes$fOrdShowContentTypes$fShowShowContentTypes$fReadShowContentTypes$fBoundedShowContentTypes$fEnumShowContentTypes$fEqAPI $fShowAPI $fEqAction $fOrdAction $fShowAction $fEqResponse $fOrdResponse$fShowResponse$fEqDocQueryParam$fOrdDocQueryParam$fShowDocQueryParam $fEqParamKind$fOrdParamKind$fShowParamKind$fShowDocOptions $fEqDocNote $fOrdDocNote $fShowDocNote$fEqDocAuthentication$fOrdDocAuthentication$fShowDocAuthentication $fEqDocIntro$fShowDocIntro$fEqDocFragment$fOrdDocFragment$fShowDocFragment$fEqDocCapture$fOrdDocCapture$fShowDocCapture $fEqEndpoint $fOrdEndpoint$fGenericEndpointauthDataRequired authIntro maxSamples apiEndpoints apiIntrosmethodpathcapDesc capSymbol paramDesc paramKind paramName paramValuesfragDesc fragSymbol introBody introTitlenoteBody noteTitlerespBody respHeaders respStatus respTypesauthInfocapturesfragmentheadersmxParamsnotesparamsresponserqbodyrqtypes ToFragment toFragment ToAuthInfo toAuthInfo ToCapture toCaptureToParamtoParamAllHeaderSamplesallHeaderToSample GToSample gtoSamplesToSample toSamplesHasDocsdocsFor notesHeadingrenderCurlBasePathrequestExamplesresponseExamplesdocsdocsWithOptions extraInfodocsWithdocsWithIntrostoSample noSamples singleSamplesamplesdefaultSamplessampleByteStringsampleByteStringsmarkdown markdownWith$fHasDocsTYPEWithNamedContext$fHasDocsTYPE:>$fHasDocsTYPE:>0$fHasDocsTYPE:>1$fHasDocsTYPE:>2$fHasDocsTYPE:>3$fHasDocsTYPE:>4$fHasDocsTYPE:>5$fHasDocsTYPE:>6$fHasDocsTYPERaw$fHasDocsTYPEStream$fHasDocsTYPENoContentVerb$fHasDocsTYPE:>7$fHasDocsTYPE:>8$fHasDocsTYPEEmptyAPI$fHasDocsTYPE:<|>$fGToSamplekM1$fGToSamplek:+:$fGToSamplek:*:$fGToSamplekV1$fGToSamplekU1$fToSampleDual$fToSampleLast$fToSampleFirst$fToSampleProduct $fToSampleSum $fToSampleAny $fToSampleAll$fToSampleZipList$fToSampleConst$fToSampleNonEmpty $fToSample[]$fToSampleEither$fToSampleMaybe$fToSample(,,,,,,)$fToSample(,,,,,)$fToSample(,,,,)$fToSample(,,,)$fToSample(,,) $fToSample(,)$fToSampleOrdering$fToSampleBool$fToSampleNoContent$fHasDocsTYPE:>9$fHasDocsTYPE:>10$fHasDocsTYPEVerb$fGToSamplekK1$fHasDocsTYPEVerb0$fAllHeaderSamples[]:$fAllHeaderSamples[][]$fHasDocsTYPE:>11$fHasDocsTYPE:>12$fHasDocsTYPE:>13$fHasDocsTYPE:>14$fHasDocsTYPE:>15$fHasDocsTYPE:>16$fHasDocsTYPE:>17Pretty PrettyJSONpretty$fMimeRenderTYPEPrettyJSONa$fAcceptTYPEPrettyJSON(http-types-0.12.3-9k8aWsrxzSkHIwn1oMbLDnNetwork.HTTP.Types.MethodMethodghc-prim GHC.TypesIntbytestring-0.10.10.0Data.ByteString.Lazy.Internal ByteStringbaseGHC.Real/"servant-0.19-iFQlcpTMAn5hjlwqZA1AUServant.API.FragmentFragmentGHC.BaseMonoidmappend<> GHC.MaybeNothing text-1.2.3.2Data.Text.InternalText!lens-5.0.1-GZrrx1MIN93I9IgHllm0XDControl.Lens.Setter.~Servant.API.EmptyEmptyAPIServant.API.Alternative:<|>Servant.API.Capture CaptureAllCapture Data.ProxyProxy