[
    {
        "name": "Dropbox",
        "comment": "\n\n\n## Dropbox API\n\nSee the official Dropbox documentation at\n<https://www.dropbox.com/developers/documentation/http/documentation>\n\n@docs program, Msg\n\n\n### Authorization\n\n@docs AuthorizeRequest, Role, authorize, AuthorizeResult, AuthorizeError, UserAuth\n@docs authorizationUrl, redirectUriFromLocation\n\n\n### Auth\n\n@docs tokenRevoke\n\n\n### Files\n\n@docs download, DownloadRequest, DownloadResponse, DownloadError, LookupError\n@docs upload, UploadRequest, WriteMode, UploadResponse, UploadError, UploadWriteFailed, WriteError\n\n@docs MediaInfo, MediaMetadata, PhotoMetadata, VideoMetadata, Dimensions, GpsCoordinates, FileSharingInfo, PropertyGroup\n\n",
        "unions": [
            {
                "name": "AuthorizeResult",
                "comment": " Return value of the `authorize` endpoint, which is the data Dropbox returns via\nthe redirect URL.\n\nYou can get the `AuthorizeResult` by using `Dropbox.program`,\nor by using `parseAuth` if you need to manually parse the redirect URL.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize>\n\nNote: `uid` is not provided because it is deprecated.\nSee <https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize>\n\n",
                "args": [],
                "cases": [
                    [
                        "DropboxAuthorizeErr",
                        [
                            "AuthorizeError"
                        ]
                    ],
                    [
                        "AuthorizeOk",
                        [
                            "{ userAuth : UserAuth, accountId : String, state : Maybe String }"
                        ]
                    ],
                    [
                        "UnknownAccessTokenErr",
                        [
                            "{ accessToken : String, tokenType : String, accountId : String, state : Maybe String }"
                        ]
                    ]
                ]
            },
            {
                "name": "DownloadError",
                "comment": " See <https://www.dropbox.com/developers/documentation/http/documentation#files-download>\n",
                "args": [],
                "cases": [
                    [
                        "PathDownloadError",
                        [
                            "LookupError"
                        ]
                    ],
                    [
                        "OtherDownloadError",
                        [
                            "String",
                            "Value"
                        ]
                    ],
                    [
                        "OtherDownloadFailure",
                        [
                            "Error"
                        ]
                    ]
                ]
            },
            {
                "name": "LookupError",
                "comment": " See <https://www.dropbox.com/developers/documentation/http/documentation#files-download>\n",
                "args": [],
                "cases": [
                    [
                        "MalformedPathLookup",
                        [
                            "Maybe String"
                        ]
                    ],
                    [
                        "NotFound",
                        []
                    ],
                    [
                        "NotFile",
                        []
                    ],
                    [
                        "NotFolder",
                        []
                    ],
                    [
                        "RestrictedContent",
                        []
                    ],
                    [
                        "OtherLookupError",
                        [
                            "String",
                            "Value"
                        ]
                    ]
                ]
            },
            {
                "name": "MediaInfo",
                "comment": " Additional information if the file is a photo or video.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n",
                "args": [],
                "cases": []
            },
            {
                "name": "MediaMetadata",
                "comment": " Metadata for a photo or video.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n",
                "args": [],
                "cases": []
            },
            {
                "name": "Msg",
                "comment": " The message type for an app that uses `Dropbox.program`\n",
                "args": [
                    "msg"
                ],
                "cases": []
            },
            {
                "name": "Role",
                "comment": " See <https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize>\n",
                "args": [],
                "cases": [
                    [
                        "Personal",
                        []
                    ],
                    [
                        "Work",
                        []
                    ]
                ]
            },
            {
                "name": "UploadError",
                "comment": " See <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n",
                "args": [],
                "cases": [
                    [
                        "Path",
                        [
                            "UploadWriteFailed"
                        ]
                    ],
                    [
                        "OtherUploadError",
                        [
                            "String",
                            "Value"
                        ]
                    ],
                    [
                        "OtherUploadFailure",
                        [
                            "Error"
                        ]
                    ]
                ]
            },
            {
                "name": "UserAuth",
                "comment": " A user authentication token that can be used to authenticate API calls\n\nSee <https://www.dropbox.com/developers/reference/auth-types#user>\n\n",
                "args": [],
                "cases": []
            },
            {
                "name": "WriteError",
                "comment": " See <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n",
                "args": [],
                "cases": [
                    [
                        "MalformedPathWrite",
                        [
                            "Maybe String"
                        ]
                    ],
                    [
                        "Conflict",
                        [
                            "WriteConflictError"
                        ]
                    ],
                    [
                        "NoWritePermission",
                        []
                    ],
                    [
                        "InsufficientSpace",
                        []
                    ],
                    [
                        "DisallowedName",
                        []
                    ],
                    [
                        "TeamFolder",
                        []
                    ],
                    [
                        "OtherWriteError",
                        [
                            "String",
                            "Value"
                        ]
                    ]
                ]
            },
            {
                "name": "WriteMode",
                "comment": " Your intent when writing a file to some path.\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n",
                "args": [],
                "cases": [
                    [
                        "Add",
                        []
                    ],
                    [
                        "Overwrite",
                        []
                    ],
                    [
                        "Update",
                        [
                            "String"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [
            {
                "name": "AuthorizeError",
                "comment": " Return value of the `authorize` endpoint when authentication fails. See `AuthorizeResult`.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize>\n\n",
                "args": [],
                "type": "{ error : String, errorDescription : String, state : Maybe String }"
            },
            {
                "name": "AuthorizeRequest",
                "comment": " Request parameters for Dropbox OAuth 2.0 authorization requests.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize>\n\nNote: `redirect_uri` is not present here because it is provided directly to\n`Dropbox.authorize` or `Dropbox.authorizationUrl`.\n\n",
                "args": [],
                "type": "{ clientId : String, state : Maybe String, requireRole : Maybe Role, forceReapprove : Bool, disableSignup : Bool, locale : Maybe String, forceReauthentication : Bool }"
            },
            {
                "name": "Dimensions",
                "comment": " Dimensions for a photo or video.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n**WARNING**: elm-dropbox may give the incorrect values,\nsince Elm currently does not provide a way to parse and represent 64-bit integers.\n\n",
                "args": [],
                "type": "{ height : Int, width : Int }"
            },
            {
                "name": "DownloadRequest",
                "comment": " Request parameteres for `download`\n\nNote: there is no `rev` field because it is deprecated.\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-download>\n\n",
                "args": [],
                "type": "{ path : String }"
            },
            {
                "name": "DownloadResponse",
                "comment": " Return value for `download`\n\n**WARNING**: elm-dropbox may give the incorrect values for `size`,\nsince Elm currently does not provide a way to parse and represent 64-bit integers.\n\n",
                "args": [],
                "type": "{ content : String, name : String, id : String, clientModified : Date, serverModified : Date, rev : String, size : Int, pathLower : Maybe String, pathDisplay : Maybe String, parentSharedFolderId : Maybe String, mediaInfo : Maybe MediaInfo, sharingInfo : Maybe FileSharingInfo, propertyGroups : Maybe (List PropertyGroup), hasExplicitSharedMembers : Maybe Bool, contentHash : Maybe String }"
            },
            {
                "name": "FileSharingInfo",
                "comment": " Sharing info for a file which is contained by a shared folder.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n",
                "args": [],
                "type": "{ readOnly : Bool, parentSharedFolderId : String, modifiedBy : Maybe String }"
            },
            {
                "name": "GpsCoordinates",
                "comment": " The GPS coordinate of the photo/video.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n",
                "args": [],
                "type": "{ latitude : Float, longitude : Float }"
            },
            {
                "name": "PhotoMetadata",
                "comment": " Metadata for a photo.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n",
                "args": [],
                "type": "{ dimensions : Maybe Dimensions, location : Maybe GpsCoordinates, timeTaken : Maybe Date }"
            },
            {
                "name": "PropertyGroup",
                "comment": " Collection of custom properties in filled property templates.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n",
                "args": [],
                "type": "{ templateId : String, fields : Dict String String }"
            },
            {
                "name": "UploadRequest",
                "comment": " Request parameters for `upload`\n",
                "args": [],
                "type": "{ path : String, mode : WriteMode, autorename : Bool, clientModified : Maybe Date, mute : Bool, content : String }"
            },
            {
                "name": "UploadResponse",
                "comment": " Return value for `upload`\n\n**WARNING**: elm-dropbox may give the incorrect values for `size`,\nsince Elm currently does not provide a way to parse and represent 64-bit integers.\n\n",
                "args": [],
                "type": "{ name : String, id : String, clientModified : Date, serverModified : Date, rev : String, size : Int, pathLower : Maybe String, pathDisplay : Maybe String, parentSharedFolderId : Maybe String, mediaInfo : Maybe MediaInfo, sharingInfo : Maybe FileSharingInfo, propertyGroups : Maybe (List PropertyGroup), hasExplicitSharedMembers : Maybe Bool, contentHash : Maybe String }"
            },
            {
                "name": "UploadWriteFailed",
                "comment": " See <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n",
                "args": [],
                "type": "{ reason : WriteError, uploadSessionId : String }"
            },
            {
                "name": "VideoMetadata",
                "comment": " Metadata for a video.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n**WARNING**: elm-dropbox may give the incorrect values for `duration`,\nsince Elm currently does not provide a way to parse and represent 64-bit integers.\n\n",
                "args": [],
                "type": "{ dimensions : Maybe Dimensions, location : Maybe GpsCoordinates, timeTaken : Maybe Date, duration : Maybe Int }"
            }
        ],
        "values": [
            {
                "name": "authorizationUrl",
                "comment": " The Dropbox OAuth 2.0 authorization URL.\nTypically you will just want to use `authorize` instead,\nwhich will initiate the authorization.\n\nSee <https://www.dropbox.com/developers/reference/oauth-guide>\n\n",
                "type": "AuthorizeRequest -> String -> String"
            },
            {
                "name": "authorize",
                "comment": " <https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize>\n",
                "type": "AuthorizeRequest -> Location -> Cmd msg"
            },
            {
                "name": "download",
                "comment": " Download a file from a user's Dropbox.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-download>\n\n",
                "type": "UserAuth -> DownloadRequest -> Task DownloadError DownloadResponse"
            },
            {
                "name": "program",
                "comment": " This provides the simplest way to integrate Dropbox authentication.\nUsing `Dropbox.program` will handle parsing the authentication response from the\nauthentication redirect so that you don't have to do it manually.\n",
                "type": "{ init : Location -> ( model, Cmd msg ), update : msg -> model -> ( model, Cmd msg ), subscriptions : model -> Sub msg, view : model -> Html msg, onAuth : AuthorizeResult -> msg } -> Program Never model (Msg msg)"
            },
            {
                "name": "redirectUriFromLocation",
                "comment": " Generate a redirect URI from a `Navigation.Location`.\n\nTypically you will want to use `Dropbox.authorize`, which will do this automatically.\nYou may want to use this if you need to manually manage the OAuth flow.\n\n",
                "type": "Location -> String"
            },
            {
                "name": "tokenRevoke",
                "comment": " Disables the access token used to authenticate the call.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#auth-token-revoke>\n\n",
                "type": "UserAuth -> Request ()"
            },
            {
                "name": "upload",
                "comment": " Create a new file with the contents provided in the request.\n\nSee <https://www.dropbox.com/developers/documentation/http/documentation#files-upload>\n\n",
                "type": "UserAuth -> UploadRequest -> Task UploadError UploadResponse"
            }
        ],
        "binops": []
    }
]