def METHOD_NAME() -> Plugin:
    return Plugin(
        start=False,
        spec=Spec(
            module=__name__,
            className='SendgridContactAdder',
            inputs=["payload"],
            outputs=["response", "error"],
            version='0.7.2',
            license="MIT",
            author="Ben Ullrich",
            manual="sendgrid_add_contact_to_list",
            init={
                "source": {
                    "id": "",
                    "name": ""
                },
                "email": None,
                "list_ids": None,
                "additional_mapping": {},
            },
            form=Form(
                groups=[
                    FormGroup(
                        name="Plugin configuration",
                        fields=[
                            FormField(
                                id="source",
                                name="Token resource",
                                description="Please select your Token resource, containing your api key",
                                component=FormComponent(type="resource",
                                                        props={"label": "Resource", "tag": "sendgrid"})
                            ),
                            FormField(
                                id="email",
                                name="Email address",
                                description="Please type in the path to the email address for your new contact.",
                                component=FormComponent(type="dotPath", props={"label": "Email",
                                                                               "defaultSourceValue": "profile",
                                                                               "defaultPathValue": "pii.email"
                                                                               })
                            ),
                            FormField(
                                id="list_ids",
                                name="List Ids",
                                description="The list ids you want them added to",
                                component=FormComponent(type="text", props={"label": "List Ids"})
                            ),
                            FormField(
                                id="additional_mapping",
                                name="Additional fields",
                                description="You can add some more fields to your contact. Just type in the alias of "
                                            "the field as key, and a path as a value for this field. This is fully "
                                            "optional. (Example: surname: profile@pii.surname",
                                component=FormComponent(type="keyValueList", props={"label": "Fields"})
                            ),
                        ]
                    ),
                ]
            )
        ),
        metadata=MetaData(
            name='Add Contact to list',
            brand='Sendgrid',
            desc='Sends bulk e-mail via Sendgrid based on provided data.',
            icon='email',
            group=["Sendgrid"],
            tags=['mailing'],
            documentation=Documentation(
                inputs={
                    "payload": PortDoc(desc="This port takes payload object.")
                },
                outputs={
                    "response": PortDoc(desc="This port returns response from Sendgrid API."),
                    "error": PortDoc(desc="This port gets triggered if an error occurs.")
                }
            )
        )
    )