!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                        None  None!_Cjspath expression, e.g. .property, .property[0] or ."property-dash" *full jspath, e.g. .property[0].attr.detail/`Path of the embedded levels, e.g "clients.projects.name=eq.." gives Path ["clients", "projects"]17This type will hold information about which particular b between two tables to choose when there are multiple ones. Specifically, it will contain the name of the foreign key or the join table in many to many relations.2`Custom guc header, it's obtained by parsing the json in a: `SET LOCAL "response.headers" = '[{ Set-Cookie : ".."}]'9Represents the key( `->'key'` ) or index(`->'1`a::int`), the index is Text because we reuse our escaping functons and let pg do the casting with '1'::int=Represents the single arrow `->` or double arrow ->> operatorsA%Json path operations as specified in >https://www.postgresql.org/docs/9.4/static/functions-json.htmlCKBoolean logic expression tree e.g. "and(name.eq.N,or(id.eq.1,id.eq.2))" is:TAnd / name.eq.N Or / id.eq.1 id.eq.2I@Represents a list value in a filter, e.g. id=in.(val1,val2,val3)J;Represents a single value in a filter, e.g. id=eq.singleval]#Cached attributes of a JSON payload_This is the raw ByteString that comes from the request body. We cache this instead of an Aeson Value because it was detected that for large payloads the encoding had high memory usage, see #1005 for more detailsafKeys of the object or if it's an array these keys are guaranteed to be the same across all its objectsb The name b here is used with the meaning "What is the relation between the current node and the parent node". It has nothing to do with PostgreSQL referring to tables/views as relations.+A view column that refers to a table column9Enumeration of currently supported response content typese.g. whether it is []/{} or not.Convert from ContentType to a full HTTP HeaderCConvert from ContentType to a ByteString representing the mime type  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !")*+,/0123456789:;=>?ABCDEFGHIJKLMNOPQRSTYZ[]^bclomnpqruvz{|}~}~z{|uvwxyqrstlmnopbcdefghijk]^_`aYZ[\STUVWXRPQLMNOKJIFGHCDEBA=>?@@9:;<<876542310/+,-.)*!"#$%&'(      N     !"#$%&'()*+,-./0123456789:;<<=>?@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~ None *+,-./0123456789:;<=>?@ABCDEFGHI *+,-./0123456789:;<=>?@ABCDEFGHI *+,-./0123456789:;<=>?@ABCDEFGHI *+,-./0123456789:;<=>?@ABCDEFGHINone9; JKLMNOPQRSTJKLMNOPQJLKMNPQO JKLMNOPQRSTNone #9:<=TUVWXYUVWXYUXVWYUVWXY"PostgREST authorization functions.None:[Z0Possible situations encountered with client JWTs^_Receives the JWT secret and audience (from config) and a JWT and returns a map of JWT claims.tTurn JWT ClaimSet into something easier to work with, also here the jspath is applied to put the "role" in the map_7Whether a response from jwtClaims contains a role claimInternal helper to generate HMAC-SHA256. When the jwt key in the config file is a simple string rather than a JWK object, we'll apply this function to it. Z[\]^_`Z[\]^_`_^Z[\]`Z[\]^_`QPostgREST functions to translate HTTP request to a domain type called ApiRequest.None[c&Describes what the user wants to do. This data type is a translation of the raw elements of an HTTP request into domain specific language. There is no guarantee that the intent is sensible, it is up to a later stage of processing to determine if it is an action we are able to perform.eDSimilar but not identical to HTTP verb, e.g. Create/Invoke both POSTf'Requested range of rows within responseg5The target, be it calling a proc or accessing a tablehAContent types the client will accept, [CTAny] if no Accept headeri1Data sent by client and used for mutation actionsj)If client wants created items echoed backkAPass all parameters as a single json object to a stored procedurel0Whether the client wants a result count (slower)mCWhether the client wants to UPSERT or ignore records on PK conflictn%Filters on the result ("id", "eq.10")o6&and and &or parameters used for complex boolean logicp,&select parameter used to shape the responseq &order parameters for each levelr?Alphabetized (canonical) request query string for response URLssJSON Web TokentHTTP request headersuRequest CookiesvHow to return the inserted dataz%The target db object of a user action,Types of things a user wants to do to tablesviewsprocs9Examines HTTP request and translates it into user intent.Find the best match from a list of content types accepted by the client in order of decreasing preference and a list of types producible by the server. If there is no match but the client accepts */* then return the top server pick.!Warning: discards MIME parameters&Converts CSV like a,b 1,hi 2,byeHinto a JSON array like [ {"a": "1", "b": "hi"}, {"a": 2, "b": "bye"} ][The reason for its odd signature is so that it can compose directly with CSV.decodeByName-cdefghijklmnopqrstuvwxyz{|}~0cdefghijklmnopqrstuvywxz{|}~0cdefghijklmnopqrstuz{|}~vwxy cdefghijklmnopqrstuvwxyz{|}~ None!#:[\_Safe (Manages PostgREST configuration options.None[#Config file settings for the server0CORS policy to be used in by Wai Cors middlewareUser friendly version numberVersion number used in docs8Function to read and parse options from the command lineJTells the minimum PostgreSQL version required by this version of PostgREST  NoneTest whether a proxy uri is malformed or not. A valid proxy uri should be an absolute uri without query and user info, only http(s) schemes are valid, port number range is 1-65535.For example  !http://postgrest.com/openapi.json 'https://postgrest.com:8080/openapi.json           #PostgREST SQL generating functions.None!9:;[_The generic query result format used by API responses. The location header is represented as a list of strings containing variable bindings like  "k1=eq.42"3, or the empty list if there is no location header.Read and Write api requests use a similar response format which includes various record counts and possible location header. This is the decoder for that common type of query.# !"#$%&'()*+,-./0  # !"#$%&'()*+,-./0 None:T None#:T 123456789: 123456789:; !"#$%&'()*+,-./012345677889:;<=>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[[\]]^_`abcdeffghijjklmnopqrstuvwxxyz{{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aabcdefghijklmnopqrstuvwxyz{|}~                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 67&postgrest-5.1.0-GopjM44jjXHJR4s0v60PzBPostgREST.RangeQueryPostgREST.TypesPostgREST.ParsersPostgREST.ErrorPostgREST.DbStructurePostgREST.AuthPostgREST.ApiRequestPostgREST.DbRequestBuilderPostgREST.ConfigPostgREST.OpenAPIPostgREST.QueryBuilderPostgREST.Middleware PostgREST.AppPaths_postgrest NonnegRange rangeParserangeRequested restrictRange rangeLimit rangeOffsetrangeGeqallRange JSPathExpJSPKeyJSPIdxJSPath PgVersion$sel:pgvNum:PgVersion$sel:pgvName:PgVersion DbRequestDbReadDbMutate MutateRequestDepth ReadRequestReadNode MutateQueryInsertDeleteUpdate$sel:in_:Insert$sel:insPkCols:Insert$sel:qPayload:Insert$sel:onConflict:Insert$sel:where_:Insert$sel:returning:Insert ReadQuerySelect$sel:select:Select$sel:from:Select$sel:where_:Select$sel:joinConditions:Select$sel:order:Select$sel:range_:Select JoinConditionFilter$sel:field:Filter$sel:opExpr:Filter EmbedPath SelectItemRelationDetail GucHeader RpcQParamNodeNameCastAliasField JsonOperandJKeyJIdx$sel:jVal:JKey JsonOperationJArrowJ2Arrow$sel:jOp:JArrowJsonPath FieldName LogicTreeExprStmnt LogicOperatorAndOrListVal SingleValLanguage OperationOpInFtsOpExprOperatorProxy$sel:proxyScheme:Proxy$sel:proxyHost:Proxy$sel:proxyPort:Proxy$sel:proxyPath:ProxyPJTypePJArrayPJObject$sel:pjaLength:PJArray PayloadJSON$sel:pjRaw:PayloadJSON$sel:pjType:PayloadJSON$sel:pjKeys:PayloadJSONRelation$sel:relTable:Relation$sel:relColumns:Relation$sel:relFTable:Relation$sel:relFColumns:Relation$sel:relType:Relation$sel:relLinkTable:Relation$sel:relLinkCols1:Relation$sel:relLinkCols2:Relation RelationTypeChildParentManyRootQualifiedIdentifier!$sel:qiSchema:QualifiedIdentifier$sel:qiName:QualifiedIdentifier OrderTerm$sel:otTerm:OrderTerm$sel:otDirection:OrderTerm$sel:otNullOrder:OrderTerm OrderNullsOrderNullsFirstOrderNullsLastOrderDirectionOrderAsc OrderDesc PrimaryKey$sel:pkTable:PrimaryKey$sel:pkName:PrimaryKey ViewColumnSynonymColumn$sel:colTable:Column$sel:colName:Column$sel:colDescription:Column$sel:colPosition:Column$sel:colNullable:Column$sel:colType:Column$sel:colUpdatable:Column$sel:colMaxLen:Column$sel:colPrecision:Column$sel:colDefault:Column$sel:colEnum:Column$sel:colFK:Column ForeignKey$sel:fkCol:ForeignKeyTable$sel:tableSchema:Table$sel:tableName:Table$sel:tableDescription:Table$sel:tableInsertable:Table SqlFragmentSqlQuery TableNameSchemaProcDescription$sel:pdName:ProcDescription"$sel:pdDescription:ProcDescription$sel:pdArgs:ProcDescription!$sel:pdReturnType:ProcDescription!$sel:pdVolatility:ProcDescriptionProcVolatilityVolatileStable ImmutableRetTypeSingleSetOfPgTypeScalar CompositePgArg$sel:pgaName:PgArg$sel:pgaType:PgArg$sel:pgaReq:PgArg DbStructure$sel:dbTables:DbStructure$sel:dbColumns:DbStructure$sel:dbRelations:DbStructure$sel:dbPrimaryKeys:DbStructure$sel:dbProcs:DbStructure$sel:pgVersion:DbStructurePreferResolutionMergeDuplicatesIgnoreDuplicatesApiRequestErrorActionInappropriate InvalidBody InvalidRangeParseRequestErrorUnknownRelationNoRelationBetweenUnsupportedVerbInvalidFilters ContentTypeCTApplicationJSON CTTextCSV CTOpenAPICTSingularJSON CTOctetStreamCTAnyCTOther tableCols tablePKCols pjIsEmpty operators ftsOperators toHeaderstoHeadertoMime sourceCTEName $fEqColumn $fEqTable$fFromJSONGucHeader$fShowLogicOperator$fShowOrderNulls$fShowOrderDirection$fOrdProcDescription$fShowPreferResolution$fEqContentType$fShowApiRequestError$fEqApiRequestError$fEqPreferResolution $fShowPgArg $fEqPgArg $fOrdPgArg$fEqProcVolatility$fShowProcVolatility$fOrdProcVolatility $fShowTable $fOrdTable $fShowColumn $fOrdColumn$fShowForeignKey$fEqForeignKey$fOrdForeignKey$fShowPrimaryKey$fEqPrimaryKey$fEqOrderDirection$fEqOrderNulls$fShowQualifiedIdentifier$fEqQualifiedIdentifier$fOrdQualifiedIdentifier $fEqPgType $fShowPgType $fOrdPgType $fEqRetType $fShowRetType $fOrdRetType$fShowProcDescription$fEqProcDescription$fShowRelationType$fEqRelationType$fShowRelation $fEqRelation $fShowPJType $fEqPJType$fShowPayloadJSON$fEqPayloadJSON $fShowProxy $fEqProxy $fEqOperation$fShowOperation $fEqOpExpr $fShowOpExpr$fEqLogicOperator$fShowJsonOperand$fEqJsonOperand$fShowJsonOperation$fEqJsonOperation$fShowOrderTerm $fEqOrderTerm $fShowFilter $fEqFilter$fShowLogicTree $fEqLogicTree$fShowJoinCondition$fEqJoinCondition$fShowReadQuery $fEqReadQuery$fShowMutateQuery$fEqMutateQuery $fEqPgVersion$fOrdPgVersion$fShowPgVersion$fShowDbStructure$fEqDbStructure $fEqJSPathExp$fShowJSPathExppRequestSelectpRequestFilter pRequestOrder pRequestRangepRequestLogicTreewslexeme pTreePath pFieldForestpStar pFieldName pJsonPathpFieldaliasSeparatorpRelationSelect pFieldSelectpOpExpr pSingleValpListVal pListElement pQuotedValue pDelimiterpOrder pOrderTerm pLogicTreepLogicSingleVal pLogicPathmapError pRoleClaimKeypJSPathpJSPKeypJSPIdxapiRequestError simpleErrorpgErrorsingularityErrorbinaryFieldErrorgucHeadersErrorconnectionLostError encodeError $fToJSONError$fToJSONUsageError$fToJSONApiRequestErrorgetDbStructureaccessibleProcsschemaDescriptionaccessibleTables getPgVersion JWTAttempt JWTInvalidJWTMissingSecret JWTClaims jwtClaims containsRoleparseJWK$fEqJWTAttempt$fShowJWTAttempt ApiRequestiActioniRangeiTargetiAcceptsiPayloadiPreferRepresentationiPreferSingleObjectParameter iPreferCountiPreferResolutioniFiltersiLogiciSelectiOrder iCanonicalQSiJWTiHeadersiCookiesPreferRepresentationFull HeadersOnlyNoneTarget TargetIdent TargetProc TargetRoot TargetUnknownAction ActionCreate ActionRead ActionUpdate ActionDelete ActionInfo ActionInvoke ActionInspectActionSingleUpsert isReadOnlyuserApiRequestmutuallyAgreeable $fEqAction $fEqTarget$fEqPreferRepresentation readRequest mutateRequest fieldNames AppConfigconfigDatabaseconfigAnonRoleconfigProxyUri configSchema configHost configPortconfigJwtSecretconfigJwtSecretIsBase64configJwtAudience configPool configMaxRowsconfigReqCheck configQuietconfigSettingsconfigRoleClaimKey corsPolicy prettyVersion docsVersion readOptionsminimumPgVersion pgVersion96 pgVersion95 encodeOpenAPIisMalformedProxyUri pickProxyResultsWithCountcreateReadStatementcreateWriteStatementcallProc pgFmtIdentpgFmtLitrequestToCountQueryrequestToQueryunquoted pgFmtSetLocal runWithClaims defaultMiddle postgrestrangeLeq errorResponse httpStatus decodeTables decodeColumnsdecodeRelations decodePksdecodeSynonyms decodeProcsallProcs procsSqlQueryaddForeignKeysaddViewRelationsaddParentRelationsaddManyToManyRelationsaddViewPrimaryKeys allTables allColumns columnFromRowallChildRelationsrelationFromRowallPrimaryKeys pkFromRow allSynonymssynonymFromRow claims2maphs256jwk walkJSPathdecodeContentType csvToJsonCsvData RequestBodypayloadAttributestoSourceRelationtreeRestrictRangeaugumentRequestWithJoin addRelations findRelationaddJoinConditionsgetJoinConditionsaddFiltersOrdersRangesaddFilterToNode addFilteraddOrderToNodeaddOrderaddRangeToNodeaddRangeaddLogicTreeToNode addLogicTree addPropertyaddFilterToLogicForestcatchIOversionbindirlibdir dynlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamedefaultCorsPolicy pathParser makeMimeList toSwaggerType makeTableDef makePropertymakeProcSchemamakeProcPropertymakePreferParam makeProcParam makeParamDefsmakeObjectBody makeRowFiltermakeRowFilters makePathItemmakeProcPathItemmakeRootPathItem makePathItemsescapeHostName postgrestSpectoURI isUriValidfAnd isSchemeValid isQueryValidisAuthorityValidisUserInfoValid isHostValid isPortValiddecodeStandard ProcResults standardRow noLocationFdecodeStandardMay ignoredBodyremoveSourceCTESchemaasCsvFasJsonF asJsonSingleF asBinaryF locationFfromQiunicodeStatement emptyOnFalse pgFmtColumn pgFmtFieldpgFmtSelectItempgFmtOrderTerm pgFmtFilterpgFmtJoinConditionpgFmtLogicTree pgFmtJsonPathpgFmtAs trimNullCharsfindProctransactionModeappresponseContentTypeOrError binaryField splitKeyValuerenderLocationFields rangeStatus contentRangeHextractQueryResult