?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiNone&'(*3457>CKLN "a static path segment. like "/foo"a capture. like "/:userid"@Utility class used by Qo which computes the data needed to generate a function for each endpoint and hands it all back in a list.FF 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 u-- If language __X__ is dynamically typed then you can use -- a predefined NoTypes parameter with the () output type: getEndpoints :: (HasForeign NoTypes () api, GenerateList Text (Foreign () api)) => Proxy api -> [Req ()] getEndpoints api = listFromAPI (Proxy :: Proxy NoTypes) (Proxy :: Proxy ()) api IBTo be used exclusively as a "negative" return type/constraint by H type family.Q8Generate the necessary data for codegen as a list, each 6/ describing one endpoint from your API type.d  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcR  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQe   %$# !",+&')((*.-43/0125?>6789:;<=ONMLKJPIHFGEcBCDba`_^]\[ZYXWVUT@ASRQA   !"#$%&')((*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcNone&'(*3457>CKLNe;Function name builder that simply concat each part togethergpFunction name builder using the snake_case convention. each part is separated by a single underscore character.ieFunction name builder using the CamelCase convention. each part begins with an upper case character.defghidefghiegidfhdefghiNone&'(*3457>CKLNjklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-/012346789:;<=>?@ABCDEFGJKLMNOPQdefghiM&')((* !"6789:;<= /012 OMLJNK>?+,- 34#$%BCDFG@AEPQ       !"#$%%&'()*+,--./01233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghfgifgjfgkfglfgmfgnfgopqrpqspqtpqupqvpqwpqxpqypqzpq{p|}p|~p|p|serva_8VKWUIyoVkz8ESFkQc3XRHServant.Foreign.InternalServant.Foreign.InflectionsServant.Foreign FunctionNameunFunctionName PathSegment unPathSegment _FunctionNameArg_argName_argType _PathSegment SegmentTypeStaticCapargNameargTypeargPathSegment unSegment_Static_CapArgTypeNormalFlagListPath_Segment isCapture captureArgQueryArg _queryArgName _queryArgType_Normal_Flag_List HeaderArg _headerArgReplaceHeaderArg_headerPattern queryArgName queryArgType headerArg headerPatternUrl_path _queryStr _HeaderArg_ReplaceHeaderArgdefUrlReq_reqUrl _reqMethod _reqHeaders_reqBody_reqReturnType _reqFuncNamepathqueryStr GenerateList generateList HasForeignForeign foreignForNoTypesHasForeignTypetypeForElemNotFoundreqBody reqFuncName reqHeaders reqMethod reqReturnTypereqUrldefReq listFromAPI$fGenerateListftype:<|>$fGenerateListftypeReq$fHasForeignklangftype:>&$fHasForeignklangftypeWithNamedContext$fHasForeignklangftype:>0$fHasForeignklangftype:>1$fHasForeignklangftype:>2$fHasForeignklangftype:>3$fHasForeignklangftype:>4$fHasForeignklangftypeRaw$fHasForeignklangftype:>5$fHasForeignklangftype:>6$fHasForeignklangftype:>7$fHasForeignklangftype:>8$fHasForeignklangftypeVerb$fHasForeignklangftype:>9$fHasForeignklangftype:<|> $fHasForeignType*kNoTypes()ftype concatCaseL concatCase snakeCaseL snakeCase camelCaseL camelCasehttpa_3kiLcpdXTUe4CYRpIoinpPWeb.HttpApiData.Internal toQueryParamtoHeader toUrlPiece ToHttpApiDataparseQueryParam parseHeader parseUrlPieceFromHttpApiDatahttpt_2kqnYpPBpbH1f4ygoPM6quNetwork.HTTP.Types.MethodPATCHOPTIONSCONNECTTRACEDELETEPUTHEADPOSTGET StdMethodNetwork.HTTP.Types.Version httpMinor httpMajor HttpVersionnetwo_DarCcUHK1BCJHlIYOjXe67 Network.URI uriFragmenturiQueryuriPath uriAuthority uriSchemeURIserva_1ctJRM4YtfI86xjgxsMuatServant.Utils.LinkssafeLinkIsElem'IsElemtoLinkMkLinkHasLinkServant.API.Sub:>Servant.API.Alternative:<|>Servant.API.CaptureCaptureServant.API.ResponseHeadersgetHeadersHList getResponseHeadersHConsHNilHListbuildHeadersToBuildHeadersTo getHeaders GetHeaders addHeader AddHeaderServant.API.HeaderUndecodableHeader MissingHeaderHeaderServant.API.QueryParam QueryParam QueryParams QueryFlagServant.API.ReqBodyReqBodyServant.API.RemoteHost RemoteHostServant.API.IsSecure NotSecureSecureIsSecureServant.API.WithNamedContextWithNamedContextServant.API.VerbsVerbGetPostPutDeletePatch PostCreated GetAccepted PostAcceptedDeleteAccepted PatchAccepted PutAcceptedGetNonAuthoritativePostNonAuthoritativeDeleteNonAuthoritativePatchNonAuthoritativePutNonAuthoritative GetNoContent PostNoContentDeleteNoContentPatchNoContent PutNoContentGetResetContentPostResetContentGetPartialContent reflectMethod ReflectMethodServant.API.BasicAuth BasicAuthbasicAuthPasswordbasicAuthUsername BasicAuthDataServant.API.ContentTypesJSON PlainTextFormUrlEncoded OctetStream contentTypeAccept mimeRender MimeRender mimeUnrender MimeUnrender NoContenttoFormUrlEncodedToFormUrlEncodedfromFormUrlEncodedFromFormUrlEncodedServant.API.RawRawServant.API.Experimental.Auth AuthProtectvault_Ds02DFWDupK8kyaJ6uM5fAData.Vault.LazyVault