[
    {
        "name": "Json.Patch",
        "comment": " This module implements JSON Patch as per\n[RFC 6902](https://tools.ietf.org/html/rfc6902).\n\n# Types\n@docs Patch, Operation\n\n# Operation\n@docs apply\n\n# Encoder/Decoder\n@docs encoder, decoder\n",
        "unions": [
            {
                "name": "Operation",
                "comment": " An operation, as defined by RFC 6902, section 4.\n",
                "args": [],
                "cases": [
                    [
                        "Add",
                        [
                            "Pointer",
                            "Value"
                        ]
                    ],
                    [
                        "Remove",
                        [
                            "Pointer"
                        ]
                    ],
                    [
                        "Replace",
                        [
                            "Pointer",
                            "Value"
                        ]
                    ],
                    [
                        "Move",
                        [
                            "Pointer",
                            "Pointer"
                        ]
                    ],
                    [
                        "Copy",
                        [
                            "Pointer",
                            "Pointer"
                        ]
                    ],
                    [
                        "Test",
                        [
                            "Pointer",
                            "Value"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [
            {
                "name": "Patch",
                "comment": " A `Patch` is a list of operations that are performed one after another.\n",
                "args": [],
                "type": "List Operation"
            }
        ],
        "values": [
            {
                "name": "apply",
                "comment": " Apply a `Patch` to a `Value`\n\nOperations are applied to the `Value` in order, and if one operation fails,\nthe whole `Patch` fails, and an error is returned instead.\n",
                "type": "Patch -> Value -> Result String Value"
            },
            {
                "name": "decoder",
                "comment": " JSON decoder for `Patch`\n",
                "type": "Decoder Patch"
            },
            {
                "name": "encoder",
                "comment": " JSON encoder for `Patch`\n",
                "type": "Patch -> Value"
            }
        ],
        "binops": []
    },
    {
        "name": "Json.Pointer",
        "comment": " This module implements JSON Pointer as per\n[RFC 6901](https://tools.ietf.org/html/rfc6901).\n\n# Type\n@docs Pointer\n\n# Operations\n@docs addAt, removeAt, getAt\n\n# Encoder/Decoder\n@docs encoder, decoder\n",
        "unions": [],
        "aliases": [
            {
                "name": "Pointer",
                "comment": " A type alias representing a JSON Pointer.\n\nThe JSON string `\"/a/b/c\"` corresponds to `[ \"a\", \"b\", \"c\" ]`\n",
                "args": [],
                "type": "List String"
            }
        ],
        "values": [
            {
                "name": "addAt",
                "comment": " Add the specified value at the specified pointer.\n\nFor adding to an array, this means inserting the value at the specified index\n, shifting the following elements to the right.\n\nFor adding to an object, this means adding or replacing the specified field.\n",
                "type": "Pointer -> Value -> Value -> Result String Value"
            },
            {
                "name": "decoder",
                "comment": " JSON decoder for `Pointer`\n",
                "type": "Decoder Pointer"
            },
            {
                "name": "encoder",
                "comment": " JSON encoder for `Pointer`\n",
                "type": "Pointer -> Value"
            },
            {
                "name": "getAt",
                "comment": " Get the `Value` at the specified pointer.\n",
                "type": "Pointer -> Value -> Result String Value"
            },
            {
                "name": "removeAt",
                "comment": " Remove the specified value at the specified pointer.\n\nFor removing from an array, this means deleting the value at the specified index\n, shifting the following elements to the left.\n\nFor removing from an object, this means removing the specified field.\n",
                "type": "Pointer -> Value -> Result String Value"
            }
        ],
        "binops": []
    }
]