@7/I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None+,1;<=>?FKSTV!i"a static path segment. like "/foo"a capture. like "/:userid"aUtility class used by ro which computes the data needed to generate a function for each endpoint and hands it all back in a list.ii maps Haskell types with types in the target language of your backend. For example, let's say you're implementing a backend to some language XU, and you want a Text representation of each input/output type mentioned in the API: -- First you need to create a dummy type to parametrize your -- instances. data LangX -- Otherwise you define instances for the types you need instance HasForeignType LangX Text Int where typeFor _ _ _ = "intX" -- Or for example in case of lists instance HasForeignType LangX Text a => HasForeignType LangX Text [a] where typeFor lang type _ = "listX of " <> typeFor lang ftype (Proxy :: Proxy a)lFinally to generate list of information about all the endpoints for an API you create a function of a form: getEndpoints :: (HasForeign LangX Text api, GenerateList Text (Foreign Text api)) => Proxy api -> [Req Text] getEndpoints api = listFromAPI (Proxy :: Proxy LangX) (Proxy :: Proxy Text) api |-- If language __X__ is dynamically typed then you can use -- a predefined NoTypes parameter with the NoContent output type: getEndpoints :: (HasForeign NoTypes NoContent api, GenerateList Text (Foreign NoContent api)) => Proxy api -> [Req NoContent] getEndpoints api = listFromAPI (Proxy :: Proxy NoTypes) (Proxy :: Proxy NoContent) api r8Generate the necessary data for codegen as a list, each T/ describing one endpoint from your API type.R !"#$%)+*,-./0457689:>@?BACDHIJKMLNOPTU[ZYXWV\]abcdegfhijklmnopqrj  %$!"#./0-)*+,:984567DC>?@AABIHONJKLMP]\TUVWXYZ[ponmlkqijhsefgcd~}|{zyxwvutabr !"#)*+,4567>?@AABJKLMTUVWXYZ[abcdefgijNone);Function name builder that simply concat each part togetherpFunction name builder using the snake_case convention. each part is separated by a single underscore character.eFunction name builder using the CamelCase convention. each part begins with an upper case character.None*3      !"#$%&'()*+,-./01234 !"#$%),*+-/0456789:>?@ABCDHJKLMNOTUVWXYZ[\]abefghijklmnopqrM)*+,>?@AAB4567TUVWXYZ[!"#JKLM- pnmkol\]CDHNO$%89:efgijabh0/qr5       !""#$%&'()*+,-./01234456789:;<==>?@ABCDEFGHHIJKLMNOPQQRSTUVWXYZ[\]^__`abcdefghijklmnopqrstuvwxyz{|}~      ! !"#"$%&%'%(%)%*%+%,%-%.%/%0%1%2%23435367879797:7;<=<=>?@ABCABDABEABFABGH+servant-foreign-0.11-K3SIgYyLpSPEDwPEwNj92PServant.Foreign.InternalServant.Foreign.InflectionsServant.Foreign FunctionNameunFunctionName$fDataFunctionName$fShowFunctionName$fEqFunctionName$fMonoidFunctionName PathSegment unPathSegment _FunctionName$fDataPathSegment$fShowPathSegment$fEqPathSegment$fIsStringPathSegment$fMonoidPathSegmentArg_argName_argType _PathSegment $fDataArg$fEqArg $fShowArg SegmentTypeStaticCapargNameargTypeargPath$fDataSegmentType$fEqSegmentType$fShowSegmentTypeSegment unSegment_Static_Cap $fDataSegment $fEqSegment $fShowSegmentArgTypeNormalFlagListPath_Segment isCapture captureArg $fDataArgType $fEqArgType $fShowArgTypeQueryArg _queryArgName _queryArgType_Normal_Flag_List$fDataQueryArg $fEqQueryArg$fShowQueryArg HeaderArgReplaceHeaderArg _headerArg_headerPattern queryArgName queryArgType$fDataHeaderArg $fEqHeaderArg$fShowHeaderArg headerArg headerPatternUrl_path _queryStr _HeaderArg_ReplaceHeaderArgdefUrl $fDataUrl$fEqUrl $fShowUrlReq_reqUrl _reqMethod _reqHeaders_reqBody_reqReturnType _reqFuncNamepathqueryStr $fDataReq$fEqReq $fShowReq GenerateList generateListEmptyForeignAPI HasForeignForeign foreignForNoTypesHasForeignTypetypeForreqBody reqFuncName reqHeaders reqMethod reqReturnTypereqUrldefReq listFromAPI*$fHasForeignTypeTYPEkNoTypesNoContentftype$fHasForeignklangftype:>$fHasForeignklangftype:>0$fHasForeignklangftype:>1&$fHasForeignklangftypeWithNamedContext$fHasForeignklangftype:>2$fHasForeignklangftype:>3$fHasForeignklangftype:>4$fHasForeignklangftype:>5$fHasForeignklangftype:>6$fHasForeignklangftypeRaw$fHasForeignklangftype:>7$fHasForeignklangftype:>8$fHasForeignklangftype:>9$fHasForeignklangftype:>10$fHasForeignklangftypeVerb$fHasForeignklangftype:>11$fHasForeignklangftype:>12$fHasForeignklangftype:<|>$fHasForeignklangftypeEmptyAPI$fGenerateListftype:<|>$fGenerateListftypeReq"$fGenerateListftypeEmptyForeignAPI concatCaseL concatCase snakeCaseL snakeCase camelCaseL camelCasebaseData.Type.BoolIf,http-api-data-0.3.7.2-48FhinoBl6ZEm7tWDTteoCWeb.Internal.HttpApiData ToHttpApiData toUrlPiecetoEncodedUrlPiecetoHeader toQueryParamFromHttpApiData parseUrlPiece parseHeaderparseQueryParam(http-types-0.12.1-JzZvcRdWXyqAz0RFuXL3weNetwork.HTTP.Types.Version HttpVersion httpMajor httpMinorNetwork.HTTP.Types.Method StdMethodGETPOSTHEADPUTDELETETRACECONNECTOPTIONSPATCH*network-uri-2.6.1.0-ATvLK2xpoCn1bLPTLNwUsH Network.URIURI uriScheme uriAuthorityuriPathuriQuery uriFragment"servant-0.13-C7ShdXgoa8S3GCHcjpSreServant.Utils.LinkssafeLinkLinkHasLinkMkLinktoLinkServant.API.WithNamedContextWithNamedContextServant.API.TypeLevelIsElem'IsElemServant.API.VerbsVerbGetPostPutDeletePatch PostCreated GetAccepted PostAcceptedDeleteAccepted PatchAccepted PutAcceptedGetNonAuthoritativePostNonAuthoritativeDeleteNonAuthoritativePatchNonAuthoritativePutNonAuthoritative GetNoContent PostNoContentDeleteNoContentPatchNoContent PutNoContentGetResetContentPostResetContentGetPartialContent ReflectMethod reflectMethodServant.API.Sub:>Servant.API.StreamStream StreamGet StreamPostStreamGeneratorgetStreamGeneratorToStreamGeneratortoStreamGenerator ResultStreamBuildFromStreambuildFromStream FramingRenderheaderboundarytrailerBoundaryStrategyBoundaryStrategyBracketBoundaryStrategyIntersperseBoundaryStrategyGeneralByteStringParserparseIncrementalparseEOFFramingUnrenderunrenderFramesNewlineFramingNetstringFramingServant.API.ResponseHeadersnoHeader addHeaderHeaders getResponsegetHeadersHListResponseHeaderHeader MissingHeaderUndecodableHeaderHListHNilHConsBuildHeadersTobuildHeadersTo GetHeaders getHeaders AddHeaderServant.API.ReqBodyReqBodyReqBody'Servant.API.RemoteHost RemoteHostServant.API.RawRawServant.API.QueryParam QueryParam QueryParam' QueryParams QueryFlagServant.API.HeaderHeader'Servant.API.ModifiersRequiredOptionalLenientStrictServant.API.IsSecureIsSecureSecure NotSecureServant.API.Experimental.Auth AuthProtectServant.API.EmptyEmptyAPIServant.API.DescriptionSummary DescriptionServant.API.ContentTypesJSON PlainTextFormUrlEncoded OctetStreamAccept contentType contentTypes MimeRender mimeRender MimeUnrender mimeUnrendermimeUnrenderWithType NoContentServant.API.CaptureCaptureCapture' CaptureAllServant.API.BasicAuth BasicAuth BasicAuthDatabasicAuthUsernamebasicAuthPasswordServant.API.Alternative:<|>$vault-0.3.0.7-LosM2NuwrAH6BxxSHj2o3AData.Vault.LazyVault+singleton-bool-0.1.3-6sCDJ4hdp2FJMZNXgoirnsData.Singletons.BoolSBoolIsboolSBoolSTrueSFalse