[
    {
        "name": "GraphQl",
        "comment": " GraphQL queries made easy in Elm!\nThis package provides easier way to deal with GraphQL queries.\nThis package aims to partially mimic the Json Encoders and the HTTP API.\nEvery user of Elm should not be lost using this package.\n\n```\nimport GraphQl\n\n-- Define the request.\nuserRequest : GraphQl.Value\nuserRequest =\n  GraphQl.object\n    [ GraphQl.field \"user\"\n      |> GraphQl.withArgument \"id\" (GraphQl.variable \"id\")\n      |> GraphQl.withSelectors\n        [ GraphQl.field \"id\"\n        , GraphQl.field \"name\"\n          |> GraphQl.withSelectors\n            [ GraphQl.field \"first_name\"\n            , GraphQl.field \"last_name\"\n            ]\n        ]\n    , GraphQl.field \"address\"\n      |> GraphQl.withArgument \"city\" (GraphQl.string \"Paris\")\n      |> GraphQl.withArgument \"id\" (GraphQl.int 12)\n      |> GraphQl.withArgument \"type\" (GraphQl.type_ \"LOFT\")\n      |> GraphQl.withSelectors\n        [ GraphQl.field \"street\"\n        , GraphQl.field \"neighborhood\"\n        ]\n    ]\n    |> GraphQl.withVariable \"id\" \"INT!\"\n\n-- And Send It!\nsendRequest : Int -> Decoder a -> Cmd msg\nsendRequest id decoder =\n  GraphQl.query \"/example_endpoint\" userRequest decoder\n    |> GraphQl.addVariables [ (\"id\", Encode.int id) ]\n    |> GraphQl.send\n```\n\n# Value\n@docs Value\n@docs Root\n@docs Field\n\n# Constructors\n@docs object\n@docs named\n@docs field\n\n# Modifiers\n@docs withArgument\n@docs withVariable\n@docs withAlias\n@docs withSelectors\n\n# Arguments\n@docs Argument\n@docs int\n@docs string\n@docs type_\n@docs variable\n\n# Requests\n@docs Request\n@docs query\n@docs addVariables\n@docs send\n\n",
        "unions": [
            {
                "name": "Argument",
                "comment": " Handle arguments on GraphQL fields. ",
                "args": [],
                "cases": []
            },
            {
                "name": "Field",
                "comment": " ",
                "args": [],
                "cases": []
            },
            {
                "name": "Request",
                "comment": " Requests contains the query and the variables of each GraphQl requests. ",
                "args": [
                    "a"
                ],
                "cases": []
            },
            {
                "name": "Root",
                "comment": " ",
                "args": [],
                "cases": []
            },
            {
                "name": "Value",
                "comment": " Handle GraphQL values. ",
                "args": [
                    "a"
                ],
                "cases": []
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "addVariables",
                "comment": " Add variables to a requests. Useful when defining variables in your GraphQL request.\n\n    object []\n      |> flip (query \"https://example.com\") decoder\n      |> addVariables []\n      |> send msg\n",
                "type": "List ( String, Value ) -> Request a -> Request a"
            },
            {
                "name": "field",
                "comment": " Generate a field. ",
                "type": "String -> Value Field"
            },
            {
                "name": "int",
                "comment": " Generate an argument, to use with `withArgument`.\n\n    fied \"user\"\n      |> withArgument \"id\" (GraphQl.int 12)\n\nTurns into:\n\n    user(id: 12)\n",
                "type": "Int -> Argument"
            },
            {
                "name": "named",
                "comment": " Generate a Value with a name.\n\n    named \"MySuperRequest\"\n      [ field \"user\" ]\n\nTurns into:\n\n    query MySuperRequest {\n      user\n    }\n",
                "type": "String -> List (Value Field) -> Value Root"
            },
            {
                "name": "object",
                "comment": " Generate a Value, from a list of fields.\n\n    object\n      [ field \"user\" ]\n\nTurns into:\n\n    query {\n      user\n    }\n",
                "type": "List (Value Field) -> Value Root"
            },
            {
                "name": "query",
                "comment": " Entry of every GraphQL values to turn them into requests, which can be launched!\n\n    object []\n      |> flip (query \"https://example.com\") decoder\n      |> send msg\n",
                "type": "String -> Value Root -> Decoder a -> Request a"
            },
            {
                "name": "send",
                "comment": " Actually send the GraphQL request! Generates a Cmd, to give to Elm in your update. ",
                "type": "(Result Error a -> msg) -> Request a -> Cmd msg"
            },
            {
                "name": "string",
                "comment": " Generate an argument, to use with `withArgument`.\n\n    fied \"user\"\n      |> withArgument \"id\" (GraphQl.string \"12\")\n\nTurns into:\n\n    user(id: \"12\")\n",
                "type": "String -> Argument"
            },
            {
                "name": "type_",
                "comment": " Generate an argument, to use with `withArgument`.\nGenerate a type in GraphQL.\n\n    fied \"user\"\n      |> withArgument \"id\" (GraphQl.type_ \"INT\")\n\nTurns into:\n\n    user(id: INT)\n",
                "type": "String -> Argument"
            },
            {
                "name": "variable",
                "comment": " Generate an argument, to use with `withArgument`.\nYou don't have to handle the $ sign.\n\n    fied \"user\"\n      |> withArgument \"id\" (GraphQl.variable \"id\")\n\nTurns into:\n\n    user(id: $id)\n",
                "type": "String -> Argument"
            },
            {
                "name": "withAlias",
                "comment": " Add an alias to a Field.\n\n    field \"user\"\n      |> withAlias \"currentUser\"\n      |> withSelectors\n        [ field \"id\"\n        , field \"first_name\"\n        , field \"last_name\"\n        ]\n\nTurns into:\n\n    currentUser: user {\n      id\n      first_name\n      last_name\n    }\n",
                "type": "String -> Value Field -> Value Field"
            },
            {
                "name": "withArgument",
                "comment": " Add an argument to a Field.\n\n    field \"user\"\n      |> withArgument \"id\" (GraphQl.string \"12\")\n      |> withSelectors\n        [ field \"id\"\n        , field \"first_name\"\n        , field \"last_name\"\n        ]\n\nTurns into:\n\n    user(id: \"12\") {\n      id\n      first_name\n      last_name\n    }\n",
                "type": "String -> Argument -> Value Field -> Value Field"
            },
            {
                "name": "withSelectors",
                "comment": " Add selectors to a Field.\n\n    field \"user\"\n      |> withSelectors\n        [ field \"id\"\n        , field \"first_name\"\n        , field \"last_name\"\n        ]\n\nTurns into:\n\n    user {\n      id\n      first_name\n      last_name\n    }\n",
                "type": "List (Value Field) -> Value Field -> Value Field"
            },
            {
                "name": "withVariable",
                "comment": " Add a variable to a Field.\n\n    named \"UserRequest\"\n      [ field \"user\" ]\n      |> withVariable \"id\" \"id\"\n\nTurns into:\n\n    query UserRequest(id: $id) {\n      user\n    }\n",
                "type": "String -> String -> Value Root -> Value Root"
            }
        ],
        "binops": []
    }
]