Metadata-Version: 2.1
Name: bbapi_toolkit
Version: 1.0.0
Summary: Python package for easily accessing data via Blackbaud’s ON API and SKY API.
Author-email: "Paul C. Zimmerman" <paul@lugal.com>
License: MIT License
        
        Copyright (c) 2019 Lugal-PCZ
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/Lugal-PCZ/bbapi_toolkit
Keywords: blackbaud,api
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE

```
  ____  ____    _    ____ ___     _____           _ _    _ _   
 | __ )| __ )  / \  |  _ \_ _|   |_   _|__   ___ | | | _(_) |_ 
 |  _ \|  _ \ / _ \ | |_) | |      | |/ _ \ / _ \| | |/ / | __|
 | |_) | |_) / ___ \|  __/| |______| | (_) | (_) | |   <| | |_ 
 |____/|____/_/   \_\_|  |___|_____|_|\___/ \___/|_|_|\_\_|\__|
```
---
## Description
BBAPI_Toolkit is a Python package for easily accessing data via Blackbaud’s ON API and SKY API.


## Requirements
This package is written for Python 3.8 and later. Prior versions of Python may work, but have not been tested.


## Installation
```bash
pip3 install bbapi_toolkit
```

## Configuration
Duplicate the _config.ini.example_ file into your project directory (or a config subdirectory, if desired), rename it something sensible (like _config.ini_), and modify the settings to match the needs of your current project. Each config file can contain connection settings for ON API and/or SKY API. You can, however, make multiple config files, each with its own settings, if you intend to connect to the API applications with multiple accounts concurrently.


## Usage
Create an instance of the _Client_ class, with the name of your config file as its only parameter, to create a client connection to Blackbaud’s APIs. Once created, pre-built functions provide a consistent interface to the API. The modules and functions in this package mirror the organization of Blackbaud’s API documentation: ```category/group/function``` _or_ ```category/function```.

The following code snippet provides an example of how to use the onapi module to issue two API calls, one to get a list of Blackbaud roles, and the other to retrieve the results of a pre-built list:
```python
from bbapi_toolkit import onapi

client = onapi.Client('config.ini')
roles = onapi.constituents.role.get_roles(client)
listresults = onapi.list.get_list(client, 12345)  # Change this id to that of a list which you can access.
```

The following code snippet provides an example of the same behavior using the SKY API:
```python
from bbapi_toolkit import skyapi

client = skyapi.Client('config.ini')
roles = skyapi.school.core_roles.get(client)
listresults = skyapi.school.legacy_list.get(client, 12345)  # Change this id to that of a list which you can access.
```
