[{"name":"AWS.Config","comment":" A configuration for a service can be built directly, or by using the helper\nfunctions for convenience.\n\nTo build an AWS service configuration directly:\n\n    { endpointPrefix = \"lambda\"\n    , apiVersion = \"2015-03-31\"\n    , protocol = AWS.Config.REST_JSON\n    , signer = AWS.Config.SignV4\n    , endpoint = RegionalEndpoint \"us-east-1\"\n    , jsonVersion = Nothing\n    , signingName = Nothing\n    , xmlNamespace = Nothing\n    , timestampFormat = Nothing\n    , targetPrefix = Nothing\n    }\n\nThe same thing with the convenience functions would look like:\n\n    AWS.Service.defineRegional\n        \"lambda\"\n        \"2015-03-31\"\n        AWS.Config.REST_JSON\n        AWS.Config.SignV4\n        \"us-east-1\"\n\nIn some of the comments below you will see 'API metadata' mentioned. AWS\npublishes a set of JSON files containing metadata describing each of its services,\nand this is what is being referred to. You can find this metadata here:\n\n<https://github.com/aws/aws-sdk-js/tree/master/apis>\n\n\n# Service configuration.\n\n@docs ServiceConfig\n@docs ApiVersion, Protocol, Signer, TimestampFormat, Region, Endpoint\n\n\n# Convenience functions to help with service configuration.\n\n@docs defineGlobal, defineRegional\n@docs withJsonVersion, withSigningName, withTargetPrefix, withTimestampFormat, withXmlNamespace\n\n","unions":[{"name":"Endpoint","comment":" Defines an AWS service endpoint.\n","args":[],"cases":[["GlobalEndpoint",[]],["RegionalEndpoint",["AWS.Config.Region"]]]},{"name":"Protocol","comment":" Defines the different protocols that AWS services can use.\n","args":[],"cases":[["EC2",[]],["JSON",[]],["QUERY",[]],["REST_JSON",[]],["REST_XML",[]]]},{"name":"Signer","comment":" Defines the different signing schemes that AWS services can use.\n","args":[],"cases":[["SignV4",[]],["SignS3",[]]]},{"name":"TimestampFormat","comment":" Defines the different timestamp formats that AWS services can use.\n","args":[],"cases":[["ISO8601",[]],["RFC822",[]],["UnixTimestamp",[]]]}],"aliases":[{"name":"ApiVersion","comment":" Version of a service.\n","args":[],"type":"String.String"},{"name":"Region","comment":" An AWS region string.\n\nFor example `\"us-east-1\"`.\n\n","args":[],"type":"String.String"},{"name":"ServiceConfig","comment":" Configures an AWS service.\n\nNote that `timestampFormat` defaults to `UnixTimestamp` for JSON and REST\\_JSON based\nservices and `ISO8601` for other services. Specifying `Nothing` will use the correct\ndefault, unless it is set to something different in the API metadata.\n\nAlso note that `targetPrefix` will default to AWS ++ prefix ++ (apiVersion with the\n'-' characters removed). This only needs to be set to a different value if it differs\nin the API metadata.\n\n","args":[],"type":"{ endpointPrefix : String.String, apiVersion : AWS.Config.ApiVersion, protocol : AWS.Config.Protocol, signer : AWS.Config.Signer, endpoint : AWS.Config.Endpoint, jsonVersion : Maybe.Maybe String.String, signingName : Maybe.Maybe String.String, xmlNamespace : Maybe.Maybe String.String, timestampFormat : Maybe.Maybe AWS.Config.TimestampFormat, targetPrefix : Maybe.Maybe String.String }"}],"values":[{"name":"defineGlobal","comment":" Creates a global service definition.\n","type":"String.String -> AWS.Config.ApiVersion -> AWS.Config.Protocol -> AWS.Config.Signer -> AWS.Config.ServiceConfig"},{"name":"defineRegional","comment":" Creates a regional service definition.\n","type":"String.String -> AWS.Config.ApiVersion -> AWS.Config.Protocol -> AWS.Config.Signer -> AWS.Config.Region -> AWS.Config.ServiceConfig"},{"name":"withJsonVersion","comment":" Set the JSON apiVersion.\n\nUse this if `jsonVersion` is provided in the API metadata.\n\n","type":"String.String -> AWS.Config.ServiceConfig -> AWS.Config.ServiceConfig"},{"name":"withSigningName","comment":" Set the signing name for the service.\n\nUse this if `signingName` is provided in the API metadata.\n\n","type":"String.String -> AWS.Config.ServiceConfig -> AWS.Config.ServiceConfig"},{"name":"withTargetPrefix","comment":" Set the target prefix for the service.\n\nUse this if `targetPrefix` is provided in the API metadata.\n\nNote that `targetPrefix` will default to AWS ++ prefix ++ (apiVersion with the\n'-' characters removed). This only needs to be set to a different value if it differs\nin the API metadata.\n\n","type":"String.String -> AWS.Config.ServiceConfig -> AWS.Config.ServiceConfig"},{"name":"withTimestampFormat","comment":" Set the timestamp format for the service.\n\nUse this if `timestampFormat` is provided in the API metadata.\n\nNote that `timestampFormat` defaults to `UnixTimestamp` for JSON and REST\\_JSON based\nservices and `ISO8601` for other services. Specifying `Nothing` will use the correct\ndefault, unless it is set to something different in the API metadata.\n\n","type":"AWS.Config.TimestampFormat -> AWS.Config.ServiceConfig -> AWS.Config.ServiceConfig"},{"name":"withXmlNamespace","comment":" Set the XML namespace for the service.\n\nUse this if `xmlNamespace` is provided in the API metadata.\n\n","type":"String.String -> AWS.Config.ServiceConfig -> AWS.Config.ServiceConfig"}],"binops":[]},{"name":"AWS.Credentials","comment":" A set of AWS credentials consists of an acces key id, a secret access key\nand an optional session token.\n\nNote that credentials are sensitive and should not be bundled with web\napplications; it is a simple matter to extract them if they are. If your Elm\ncode is running inside a Lambda function, this may not be a concern. If you Elm\ncode is running in a browser it is definitely a security concern. If you are\nlooking for a way to obtain credentials through user sign in against AWS Congito,\nthis authentication package will do that:\n\n<https://package.elm-lang.org/packages/the-sett/elm-auth-aws/latest/>\n\n@docs Credentials, AccessKeyId, SecretAccessKey\n@docs fromAccessKeys, withSessionToken\n\n","unions":[],"aliases":[{"name":"AccessKeyId","comment":" The AWS access key ID.\n","args":[],"type":"String.String"},{"name":"Credentials","comment":" Holds AWS credentials.\n","args":[],"type":"{ accessKeyId : String.String, secretAccessKey : String.String, sessionToken : Maybe.Maybe String.String }"},{"name":"SecretAccessKey","comment":" The AWS secret access key.\n","args":[],"type":"String.String"}],"values":[{"name":"fromAccessKeys","comment":" Create AWS credentials given an access key and secret key.\n","type":"AWS.Credentials.AccessKeyId -> AWS.Credentials.SecretAccessKey -> AWS.Credentials.Credentials"},{"name":"withSessionToken","comment":" Sets the session token.\n","type":"String.String -> AWS.Credentials.Credentials -> AWS.Credentials.Credentials"}],"binops":[]},{"name":"AWS.Http","comment":" Handling of HTTP requests to AWS Services.\n\n\n# Tasks for sending requests to AWS.\n\n@docs send, sendUnsigned\n\n\n# Build a Request\n\n@docs Method, Path, Request\n@docs request\n\n\n# Build the HTTP Body of a Request\n\n@docs Body, MimeType\n@docs emptyBody, stringBody, jsonBody\n\n\n# Add headers or query parameters to a Request\n\n@docs addHeaders, addQuery\n\n\n# Build decoders to interpret the response.\n\n@docs ResponseDecoder, HttpStatus\n@docs fullDecoder, jsonFullDecoder, stringBodyDecoder, jsonBodyDecoder, constantDecoder\n\n","unions":[{"name":"HttpStatus","comment":" The HTTP response code type according to how `Elm.Http` classifies responses.\n\nA code from 200 to less than 300 is considered 'Good' and any other code is\nconsidered 'Bad'.\n\n","args":[],"cases":[["GoodStatus",[]],["BadStatus",[]]]},{"name":"Method","comment":" HTTP request methods.\n","args":[],"cases":[["DELETE",[]],["GET",[]],["HEAD",[]],["OPTIONS",[]],["POST",[]],["PUT",[]]]}],"aliases":[{"name":"Body","comment":" Holds a request body.\n","args":[],"type":"AWS.Internal.Body.Body"},{"name":"MimeType","comment":" MIME type.\n\nSee <https://en.wikipedia.org/wiki/Media_type>\n\n","args":[],"type":"String.String"},{"name":"Path","comment":" Request path.\n","args":[],"type":"String.String"},{"name":"Request","comment":" Holds an unsigned AWS HTTP request.\n","args":["a"],"type":"AWS.Internal.Request.Request a"},{"name":"ResponseDecoder","comment":" Decoders that interpret responses.\n","args":["a"],"type":"AWS.Internal.Request.ResponseDecoder a"}],"values":[{"name":"addHeaders","comment":" Appends headers to an AWS HTTP unsigned request.\n\nSee the `AWS.KVEncode` for encoder functions to build the headers with.\n\n","type":"List.List ( String.String, String.String ) -> AWS.Http.Request a -> AWS.Http.Request a"},{"name":"addQuery","comment":" Appends query arguments to an AWS HTTP unsigned request.\n\nSee the `AWS.KVEncode` for encoder functions to build the query parameters with.\n\n","type":"List.List ( String.String, String.String ) -> AWS.Http.Request a -> AWS.Http.Request a"},{"name":"constantDecoder","comment":" Not all AWS service produce a response that contains useful information.\n\nThe `constantDecoder` is helpful in those situations and just produces whatever\nvalue you give it once AWS has responded.\n\nNote that this decoder is only used when the response is Http.GoodStatus\\_. An\nHttp.BadStatus\\_ is always mapped to Http.BadStatus without attempting to decode\nthe body. If you need to handle things that Elm HTTP regards as BadStatus\\_, use\none of the 'full' decoders.\n\n","type":"a -> AWS.Http.ResponseDecoder a"},{"name":"emptyBody","comment":" Create an empty body.\n","type":"AWS.Http.Body"},{"name":"fullDecoder","comment":" A full decoder for the response that can look at the status code, metadata\nincluding headers and so on. The body is presented as a `String` for parsing.\n\nIt is possible to report an error as a String when interpreting the response, and\nthis will be mapped onto `Http.BadBody` when present.\n\n","type":"(AWS.Http.HttpStatus -> Http.Metadata -> String.String -> Result.Result String.String a) -> AWS.Http.ResponseDecoder a"},{"name":"jsonBody","comment":" Create a body containing a JSON value.\n\nThis will automatically add the `Content-Type: application/json` header.\n\n","type":"Json.Encode.Value -> AWS.Http.Body"},{"name":"jsonBodyDecoder","comment":" A decoder for the response that uses only the body presented as a JSON `Value`\nfor decoding.\n\nAny decoder error is mapped onto `Http.BadBody` as a `String` when present using\n`Decode.errorToString`.\n\nNote that this decoder is only used when the response is Http.GoodStatus\\_. An\nHttp.BadStatus\\_ is always mapped to Http.BadStatus without attempting to decode\nthe body. If you need to handle things that Elm HTTP regards as BadStatus\\_, use\none of the 'full' decoders.\n\n","type":"Json.Decode.Decoder a -> AWS.Http.ResponseDecoder a"},{"name":"jsonFullDecoder","comment":" A full JSON decoder for the response that can look at the status code, metadata\nincluding headers and so on. The body is presented as a JSON `Value` for decoding.\n\nAny decoder error is mapped onto `Http.BadBody` as a `String` when present using\n`Decode.errorToString`.\n\n","type":"(AWS.Http.HttpStatus -> Http.Metadata -> Json.Decode.Decoder a) -> AWS.Http.ResponseDecoder a"},{"name":"request","comment":" Creates an unsigned HTTP request to an AWS service.\n","type":"String.String -> AWS.Http.Method -> AWS.Http.Path -> AWS.Http.Body -> AWS.Http.ResponseDecoder a -> AWS.Http.Request a"},{"name":"send","comment":" Signs and sends a `Request` to a `Service`.\n","type":"AWS.Internal.Service.Service -> AWS.Credentials.Credentials -> AWS.Http.Request a -> Task.Task Http.Error a"},{"name":"sendUnsigned","comment":" Sends a `Request` to a `Service` without signing it.\n","type":"AWS.Internal.Service.Service -> AWS.Http.Request a -> Task.Task Http.Error a"},{"name":"stringBody","comment":" Create a body with a custom MIME type and the given string as content.\n\n    stringBody \"text/html\" \"<html><body><h1>Hello</h1></body></html>\"\n\n","type":"AWS.Http.MimeType -> String.String -> AWS.Http.Body"},{"name":"stringBodyDecoder","comment":" A decoder for the response that uses only the body presented as a `String`\nfor parsing.\n\nIt is possible to report an error as a String when interpreting the response, and\nthis will be mapped onto `Http.BadBody` when present.\n\nNote that this decoder is only used when the response is Http.GoodStatus\\_. An\nHttp.BadStatus\\_ is always mapped to Http.BadStatus without attempting to decode\nthe body. If you need to handle things that Elm HTTP regards as BadStatus\\_, use\none of the 'full' decoders.\n\n","type":"(String.String -> Result.Result String.String a) -> AWS.Http.ResponseDecoder a"}],"binops":[]},{"name":"AWS.KVDecode","comment":" KVDecode provides decoders to interpret lists of `(String, String)` into some\nElm type.\n\nKVDecode is a counter-part to `AWS.KVEncode` but it has a cut down API. In\nparticular there is no scheme to number items into lists, or to nest field names\ninside each other - only simple field names and a simple values are supported.\nThe reason for this is that AWS services may return values in header fields,\nbut only do this for relatively simple data models compared with the way in\nwhich more complex encodings can be used to pass in arguments.\n\n\n# Key-Value decoders.\n\n@docs KVDecoder\n@docs decodeKVPairs\n\n\n# Simple values.\n\n@docs string, bool, int, float\n\n\n# Mapping over Key-Value decoders.\n\n@docs map\n\n\n# Decoding into records.\n\nThe term 'object' is used as the convention has been established by\n`miniBill/elm-codec`.\n\n@docs ObjectDecoder, object, field, optional, buildObject\n\n\n# Error reporting when decoding fails.\n\n@docs Error, errorToString\n\n","unions":[{"name":"Error","comment":" Describes the possible ways the Key-Value decoding can fail.\n","args":[],"cases":[["Failure",["String.String","String.String"]],["MissingField",["String.String"]]]},{"name":"KVDecoder","comment":" The type of Key-Value decoders.\n","args":["a"],"cases":[]},{"name":"ObjectDecoder","comment":" A decoder of fields of named records.\n","args":["a"],"cases":[]}],"aliases":[],"values":[{"name":"bool","comment":" Decodes a `Bool`value from \"true\" or \"false\".\n","type":"AWS.KVDecode.KVDecoder Basics.Bool"},{"name":"buildObject","comment":" Turns an `ObjectDecoder` into a `KVDecoder`.\n","type":"AWS.KVDecode.ObjectDecoder a -> AWS.KVDecode.KVDecoder a"},{"name":"decodeKVPairs","comment":" Parses a list of Key-Value pairs as a strings into the Elm type described\nby the decoder.\n\nErrors may result if the decoder fails to match the data.\n\n","type":"AWS.KVDecode.KVDecoder a -> Dict.Dict String.String String.String -> Result.Result AWS.KVDecode.Error a"},{"name":"errorToString","comment":" Converts an `Error` to `String` describing the error.\n","type":"AWS.KVDecode.Error -> String.String"},{"name":"field","comment":" Adds a mandatory field to an `ObjectDecoder`.\n","type":"String.String -> AWS.KVDecode.KVDecoder f -> AWS.KVDecode.ObjectDecoder (f -> a) -> AWS.KVDecode.ObjectDecoder a"},{"name":"float","comment":" Decodes an `Float` value from a `String` or fails if the string is not a\nnumber.\n","type":"AWS.KVDecode.KVDecoder Basics.Float"},{"name":"int","comment":" Decodes an `Int` value from a `String` or fails if the string is not an\ninteger.\n","type":"AWS.KVDecode.KVDecoder Basics.Int"},{"name":"map","comment":" Maps over `KVDecoder`\n","type":"(a -> value) -> AWS.KVDecode.KVDecoder a -> AWS.KVDecode.KVDecoder value"},{"name":"object","comment":" Creates an object decoder from a record constructor.\n","type":"a -> AWS.KVDecode.ObjectDecoder a"},{"name":"optional","comment":" Adds an optional field to an `ObjectDecoder`.\n","type":"String.String -> AWS.KVDecode.KVDecoder f -> AWS.KVDecode.ObjectDecoder (Maybe.Maybe f -> a) -> AWS.KVDecode.ObjectDecoder a"},{"name":"string","comment":" Decodes a string value.\n","type":"AWS.KVDecode.KVDecoder String.String"}],"binops":[]},{"name":"AWS.KVEncode","comment":" KVEncode provides encoders to turn things into list of `(String, String)`\nwhich can be used to build headers or query parameters. The encoding is one that\nis accepted by many AWS services.\n\nWhen encoding records (or objects) the following scheme is used:\n\nA field with a simple value is encoded like this:\n\n    ( \"Field\", \"value\" )\n\nA field with a list of simple values is encoded like this:\n\n    [ ( \"Field.member.1\", \"value1\" )\n    , ( \"Field.member.2\", \"value2\" )\n    , ...\n    ]\n\nA field with a single object value is encoded like this:\n\n    [ ( \"Field.InnerField1\", \"innerValue1\" )\n    , ( \"Field.InnerField2\", \"innerValue2\" )\n    , ...\n    ]\n\nA field with a list of object values is encoded like this:\n\n    [ ( \"Field.member.1.InnerField1\", \"innerValue1\" )\n    , ( \"Field.member.1.InnerField2\", \"innerValue2\" )\n    , ...\n    ]\n\n\n# Sets of KV String tuples and their encoder.\n\n@docs KVPairs, KVField\n@docs encode\n\n\n# Encoders for simple types and collections.\n\n@docs int, float, string, bool\n@docs list, dict\n\n\n# Encoders for objects with optional fields.\n\n@docs field, optional, object\n\n","unions":[{"name":"KVField","comment":" A field of a record to be encoded in `(String, String)` form.\n","args":[],"cases":[]},{"name":"KVPairs","comment":" Describes pairs of `(String, String)` tuples.\n\nNote that this data structure also allows values on their own with no keys for\nthe convenience of keeping this API in a similar shape to JSON encoders.\n\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"bool","comment":" Encodes an Bool as a String (\"true\" or \"false\") without a key.\n","type":"Basics.Bool -> AWS.KVEncode.KVPairs"},{"name":"dict","comment":" Combines a Dict with an encoder for its values into a set of `KVPairs`.\n","type":"(a -> AWS.KVEncode.KVPairs) -> Dict.Dict String.String a -> AWS.KVEncode.KVPairs"},{"name":"encode","comment":" Encodes a set of KV pairs into `List (String, String)` form.\n\nThe keys in the output may be compound to describe a path through objects and\narrays into some deeper data structure. The possible formats are described in\nthe module level documentation above.\n\nNote that only `KVPairs` that have keys are encoded by this. Simple values or\nlists do not have keys and will result in `[]` being returned. This only produces\na non-empty result if the top-level `KVPair` passed in, describes an object.\n\n","type":"AWS.KVEncode.KVPairs -> List.List ( String.String, String.String )"},{"name":"field","comment":" Encodes a pair of `(String, a)` into `KVPairs`.\n","type":"(a -> AWS.KVEncode.KVPairs) -> ( String.String, a ) -> AWS.KVEncode.KVField"},{"name":"float","comment":" Encodes a Float as a String without a key.\n","type":"Basics.Float -> AWS.KVEncode.KVPairs"},{"name":"int","comment":" Encodes an Int as a String without a key.\n","type":"Basics.Int -> AWS.KVEncode.KVPairs"},{"name":"list","comment":" Encodes a list of items as `KVPairs`.\n","type":"(a -> AWS.KVEncode.KVPairs) -> List.List a -> AWS.KVEncode.KVPairs"},{"name":"object","comment":" Encodes a list of fields as an object.\n","type":"List.List AWS.KVEncode.KVField -> AWS.KVEncode.KVPairs"},{"name":"optional","comment":" Encodes a pair of `(String, Maybe a)` into `KVPairs`.\n\nValues that are `Nothing` are not encoded in the output, they are skipped over.\n\n","type":"(a -> AWS.KVEncode.KVPairs) -> ( String.String, Maybe.Maybe a ) -> AWS.KVEncode.KVField"},{"name":"string","comment":" Encodes a String without a key.\n","type":"String.String -> AWS.KVEncode.KVPairs"}],"binops":[]},{"name":"AWS.Service","comment":" Build an AWS service definition from its configuration.\n\nUse the `AWS.Config` module to create the configuration for the AWS\nservice to use.\n\n@docs Service, service\n\n","unions":[],"aliases":[{"name":"Service","comment":" An AWS Service definition. This is needed to make HTTP calls to the service.\n","args":[],"type":"AWS.Internal.Service.Service"}],"values":[{"name":"service","comment":" Build an AWS service.\n","type":"AWS.Config.ServiceConfig -> AWS.Service.Service"}],"binops":[]},{"name":"AWS.Uri","comment":" Helper functions for encoding URIs.\n\nAWS encodes more characters than `encodeURIComponent` does, so a special\nimplementation is needed.\n\n\n# Helpers\n\n@docs percentEncode\n\n","unions":[],"aliases":[],"values":[{"name":"percentEncode","comment":" We don't use Url.percentEncode because it misses some characters. It uses the\nnative `encodeURIComponent` under the hood:\n\n    encodeURIComponent escapes all characters except the following:\n    alphabetic, decimal digits, - _ . ! ~ * ' ( )\n\n    - from https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n\nFor AWS only \"Unreserved Characters\" are allowed.\nSee <http://tools.ietf.org/html/rfc3986>\nSection 2.3\n\nSo basically we need to also cover: ! \\* ' ( )\n\n","type":"String.String -> String.String"}],"binops":[]}]