def METHOD_NAME() -> Plugin:
    return Plugin(
        start=False,
        spec=Spec(
            module=__name__,
            className='InfluxFetcher',
            inputs=["payload"],
            outputs=["success", "error"],
            version='0.6.2',
            license="MIT",
            author="Dawid Kruk",
            manual="fetch_from_influxdb_action",
            init={
                "source": {
                    "id": None,
                    "name": None
                },
                "organization": None,
                "bucket": None,
                "filters": {},
                "aggregation": None,
                "start": "-15m",
                "stop": "0m"
            },
            form=Form(
                groups=[
                    FormGroup(
                        name="InfluxDb configuration",
                        fields=[
                            FormField(
                                id="source",
                                name="InfluxDB resource",
                                description="Please select InfluxDB resource.",
                                component=FormComponent(type="resource", props={"label": "Resource", "tag": "influxdb"})
                            ),
                            FormField(
                                id="organization",
                                name="Organization",
                                description="Please type the name of your InfluxDB organization.",
                                component=FormComponent(type="text", props={"label": "Organization"})
                            ),
                            FormField(
                                id="bucket",
                                name="Bucket",
                                description="Please type the name of the bucket that you want to fetch data from.",
                                component=FormComponent(type="text", props={"label": "Bucket"})
                            ),
                            FormField(
                                id="filters",
                                name="Filters",
                                description="Please insert key-value pairs, where key is the key in InfluxDB record ("
                                            "for example _measurement) and value is the value that you want it to "
                                            "contain. Feel free to use dot paths.",
                                component=FormComponent(type="keyValueList", props={"label": "Filters"})
                            ),
                            FormField(
                                id="aggregation",
                                name="Aggregation function",
                                description='If you want, you can insert a Flux aggregation function, for example '
                                            'count(column: "_value"), or distinct().',
                                component=FormComponent(type="text", props={"label": "Aggregation"})
                            ),
                            FormField(
                                id="start",
                                name="Lower time bound",
                                description="Type the path to lower time bound for your search. "
                                            "It can be either relative (so for example -30m), or fixed as a date.",
                                component=FormComponent(type="dotPath", props={"label": "Lower", "defaultMode": 2})
                            ),
                            FormField(
                                id="stop",
                                name="Upper time bound",
                                description="Type the path to the upper bound of your search span. As before, it "
                                            "can be either relative or fixed.",
                                component=FormComponent(type="dotPath", props={"label": "Upper"})
                            )
                        ]
                    )
                ]
            )
        ),
        metadata=MetaData(
            name='Fetch from InfluxDB',
            desc='Gets data from provided InfluxDB resource.',
            icon='influxdb',
            group=["InfluxDB"],
            tags=['database', 'analytics'],
            documentation=Documentation(
                inputs={
                    "payload": PortDoc(desc="This port takes payload object.")
                },
                outputs={
                    "success": PortDoc(desc="This port return fetched data."),
                    "error": PortDoc(desc="This port gets triggered when an error occurs.")
                }
            )
        )
    )