Automating SKY API Calls Via Script?
Is there anyone out there running scheduled scripts on a local server to pull data from SKY API automatically, hands off, without user interaction?
i.e., A powershell script runs nightly at 3am, pulls data via various SKY API calls, and saves data as a CSV on a local disk. OAuth authentication is accomplished via some automated means so that no user interaction is necessary to perform the calls and run the script each night.
This is needed because Blackbaud does not currently provide a way to schedule exports directly from the web UI, so we have to manually export our data anytime there are changes that we need to supply to other systems or services.
Fingers crossed that someone out there is doing something similar and can point me in the right direction.
Thank you!
Comments
-
Hi Stephen,
You could take a look at this post that suggests looking at the Headless Data Sync sample app to see if that is what you are looking for.
0 -
Webhooks might also cover off some of your data needs. Though they're not exhaustive, you only get changed data as it occurs.
We have a ready-built webhook solution which works with Blackbaud data called Datawise. Just sayin'.
Cheers,
Steve Cinquegrana | CEO and Principal Developer | Protégé Solutions
0 -
Hi,
You can achieve this using PowerAutomate Blackbaud Connector.
For example, you can setup a Power Automate flow that runs on schedule, every night at 8pm or 12am, which calls a bunch of list consituent, list gift, list opportunity, etc. With the returned data, which will be in JSON, save into an excel file that's on SharePoint Online.
You can also have a data warehouse, a SQL database that can be accessed through Power Automate, so instead of the data going into an excel file, the data is organized and insert/update/delete into the SQL database table for these records.
There are some API calls that are not covered by the Power Automate Blackbaud connector, which then you can use HTTP action to make the RESTful API call. Although b/c OAuth need user authentication, so what I end up doing is I created a “safe” SharePoint List (no one have access other than selected few) that store the API Subscription Key, Authentication Token, and Refresh Token (you can use Postman to get the initial set of Authentication Token and Refresh Token). I have 1 Power Automate flow that runs every 59 minutes (since Authentication Token expires in 1 hour) and uses the Refresh Token to get a new Authentication Token.
If you absolutely need to use something local, then you need to code everything that the Power Automate does above. (i.e. local program that runs every 59 minutes to refresh a new Authentication Token; local program that runs nightly and call the SKY API directly using the Subscription Key and Authentication Token)
1 -
I do this with a PowerShell module I created > https://github.com/Sekers/SKYAPI
The Wiki has instructions to get you started.
Not all endpoints are in there yet, but if you can't pull what you need feel free to contribute. Alternatively, you can use the Get-SchoolList function to get a list that you created on your MySchoolApp system.
I often use this module in scripts I use to pull data and then export as a CSV to upload with over FTP for rostering, etc. with some systems that don't integrate directly with Blackbaud. I can share a sample script (after some cleanup to sanitize) if you want.
2 -
Thanks Michael!!!
This sounds like exactly what we are trying to accomplish. I'll review the git in the next few days to see if it's something functional for our needs and get back to you if I'd like to see the sample script.
2 -
Would you be willing to share the HTTP action that you built? I have the exact same thing that I am working on right now where I need to pull some fields that the Power Automate Blackbaud Connector doesn't include to put into a database.
0 -
Hi Andrew,
I'm not sure exactly what you're asking for. I didn't build any HTTP actions. I followed the SKY API setup process:
Once I had my application built, then I utilized the Powershell module and functions that Michael built (previously linked in this thread). I don't have it fully automated yet, but everything I need is in there.
0 -
@Andrew VanStee
This is now a lot easier to do with the new Blackbaud Add-in to call SKY API using HTTP directly. It includes the OAuth already.
For exmaple: to call the Constituent List API, requeting to include inactive and deceased, constituent records that has been last modified 2/11/2023:

Then just use the Parse JSON PowerAutomation action to parse the Respond Body of the HTTP Request to get all the data formatted for use in the flow. I dump all data into my data warehouse on Azure SQL. You can dump the data into CSV in sharepoint, or depending on your purpose of the automation, just use the data directly.
0
Categories
- All Categories
- 6 Blackbaud Community Help
- 206 bbcon®
- 1.4K Blackbaud Altru®
- 394 Blackbaud Award Management™ and Blackbaud Stewardship Management™
- 1.1K Blackbaud CRM™ and Blackbaud Internet Solutions™
- 15 donorCentrics®
- 357 Blackbaud eTapestry®
- 2.5K Blackbaud Financial Edge NXT®
- 646 Blackbaud Grantmaking™
- 561 Blackbaud Education Management Solutions for Higher Education
- 3.2K Blackbaud Education Management Solutions for K-12 Schools
- 934 Blackbaud Luminate Online® and Blackbaud TeamRaiser®
- 84 JustGiving® from Blackbaud®
- 6.4K Blackbaud Raiser's Edge NXT®
- 3.6K SKY Developer
- 242 ResearchPoint™
- 117 Blackbaud Tuition Management™
- 165 Organizational Best Practices
- 238 The Tap (Just for Fun)
- 33 Blackbaud Community Challenges
- 28 PowerUp Challenges
- 3 (Open) Raiser's Edge NXT PowerUp Challenge: Product Update Briefing
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Standard Reports+
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Email Marketing
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Gift Management
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Event Management
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Home Page
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Standard Reports
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Query
- 777 Community News
- 2.9K Jobs Board
- 53 Blackbaud SKY® Reporting Announcements
- 47 Blackbaud CRM Higher Ed Product Advisory Group (HE PAG)
- 19 Blackbaud CRM Product Advisory Group (BBCRM PAG)

