def METHOD_NAME() -> Plugin:
    return Plugin(
        start=False,
        spec=Spec(
            module=__name__,
            className="GeoIPAction",
            inputs=["payload"],
            outputs=["location", "error"],
            version='0.6.1',
            license="MIT",
            author="Risto Kowaczewski",
            manual="geo/geo_ip_locator",
            init={
                "source": {
                    "id": None,
                    "name": None,
                },
                "ip": "event@request.ip"
            },
            form=Form(groups=[
                FormGroup(
                    fields=[
                        FormField(
                            id="source",
                            name="Maxmind Geolite2 connection resource",
                            description="Select Maxmind Geolite2 server resource. Credentials from selected resource "
                                        "will be used to connect the service.",
                            required=True,
                            component=FormComponent(type="resource", props={"label": "resource", "tag": "geo-locator"})
                        )
                    ]
                ),
                FormGroup(
                    fields=[
                        FormField(
                            id="ip",
                            name="Path to ip",
                            description="Type path to IP data or IP address itself.",
                            component=FormComponent(type="dotPath", props={"label": "IP address"})
                        )
                    ]
                ),
            ]),
        ),
        metadata=MetaData(
            name='GeoIp service',
            brand='MaxMind',
            desc='This plugin converts IP to location information.',
            icon='location',
            group=["Location"],
            documentation=Documentation(
                inputs={
                    "payload": PortDoc(desc="This port takes payload object.")
                },
                outputs={
                    "location": PortDoc(desc="Returns location."),
                    "error": PortDoc(desc="This port gets triggered if an error occurs.")
                }
            )
        )
    )