Bluelink ============= ******** Overview ******** `Bluelink `_ is an online tool for connecting various `digital software tools `_ used by campaigns and movement groups in the political and non-profit space so you can sync data between them. This integration currently supports sending your structured person data and related tags to Bluelink via the `Bluelink Webhook API `_, after which you can use Bluelink's UI to send to any of their `supported tools `_. If you don't see a tool you would like to connect to, please reach out at hello@bluelink.org to ask them to add it. .. note:: Authentication If you don't have a Bluelink account please complete the `form `_ on the Bluelink website or email them at hello@bluelink.org. To get connection credentials select `Bluelink Webhook `_ from the apps menu. If you don't see this option, you may need to ask an account administrator to do this step for you. The credentials are automatically embedded into a one time secret link in case they need to be sent to you. Open the link to access the user and password. ========== Quickstart ========== To instantiate a class, you can either pass in the user and password token as arguments or set them in the BLUELINK_WEBHOOK_USER and BLUELINK_WEBHOOK_PASSWORD environment variables. .. code-block:: python from parsons.bluelink import Bluelink # First approach: Use API credentials via environmental variables bluelink = Bluelink() # Second approach: Pass API credentials as arguments bluelink = Bluelink('username', 'password') You can upsert person data by directly using a BluelinkPerson object: .. code-block:: python from parsons.bluelink import Bluelink, BluelinkPerson, BluelinkIdentifier # create the person object person = BluelinkPerson(identifiers=[BluelinkIdentifier(source="SOURCE_VENDOR", identifier="ID")], given_name="Jane", family_name="Doe") # use the bluelink connector to upsert source = "MY_ORG_NAME" bluelink.upsert_person(source, person) You can bulk upsert person data via a Parsons Table by providing a function that takes a row and outputs a BluelinkPerson: .. code-block:: python from parsons.bluelink import Bluelink, BluelinkPerson, BluelinkIdentifier # a function that takes a row and returns a BluelinkPerson def row_to_person(row): return BluelinkPerson(identifiers=[BluelinkIdentifier(source="SOURCE_VENDOR", identifier=row["id"])], given_name=row["firstName"], family_name=row["lastName"]) # a parsons table filled with person data parsons_tbl = get_data() # call bulk_upsert_person source = "MY_ORG_NAME" bluelink.bulk_upsert_person(source, parsons_tbl, row_to_person) *** API *** .. autoclass :: parsons.bluelink.Bluelink :inherited-members: