justein230 / bbapiconnector-python Goto Github PK
View Code? Open in Web Editor NEWThis code is used by me to securely authenticate to the Blackbaud SKY API. I'm hoping it can be useful for others as well!
License: GNU General Public License v3.0
This code is used by me to securely authenticate to the Blackbaud SKY API. I'm hoping it can be useful for others as well!
License: GNU General Public License v3.0
Hey,
Not a big one, but it threw me off. The test_api_endpoint param isn't explained in the README. Clearly it should be something easy and small that the python can connect to. I left it as the default list of users. But that URL apparently no longer exists, so I got an error message about insufficient permissions. This was misleading, but I figured it out. I'd suggest two changes:
The BbApiConnector works perfectly - except when you don't have explicit SKY API access in the Blackbaud product. At least for School, my Blackbaud administrator had to turn on permissions. I was getting repeating
"401: Unauthorized. Retrieving updated access token...
Access token updated."
messages until they added "SKY API Basic" permissions to my account. My normal role in the organization is "Teacher", so perhaps this is out of the ordinary.
Do you want to add this to the list of prerequisites or the instructions to help the next user?
I've followed the instructions you have included, but I'm getting a 404 error and AttributeError: 'NoneType' object has no attribute 'get' when I try to start a session.
I've gone through the authentication process twice to obtain new tokens to check if I copied them incorrectly, but that didn't resolve the issue.
Below is the code that I'm using to start the session.
Sorry if this isn't the best way to talk about my issue. This is the first time that I have used Github.
from BbApiConnector import BbApiConnector
api_conn = BbApiConnector('app_secrets.json')
bb_session = api_conn.get_session()
params = {
'event_id': '11'
}
req = bb_session.get('https://api.sky.blackbaud.com/event/v1/events', params = params)
Using the BbApiConnector-Python library.
The application's registered and the Scope is set to:
"Raiser's Edge NXT" -> Read
The environment is correct.
The app authenticated just fine.
But when I try to hit any Raiser's Edge API endpoint such as:
api.sky.blackbaud.com/constituent/v1/constituents
api.sky.blackbaud.com/nxt-data-integration/v1/re/funds
api.sky.blackbaud.com/constituent/v1/genders
I get:
"title":"Forbidden","status":403,"detail":"This application has insufficient scope to perform the operation. This application's scopes configuration is either insufficient for the request or the Blackbaud Environment Admin has not yet approved the application's updated access configuration. Learn more: https://developer.blackbaud.com/skyapi/docs/applications/scopes"}
But the scope is set to "Read" and all the API calls are "get"s.
Is there anything I'm missing?
Thanks,
@justein230 will this work between Google Data Studio and Blackbaud's K-12 application?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.