Intelligent APIs for a more connected web.
A BD2K/Network-of-BioThings project.
SmartAPI allows API publishers to annotate their services and input/output parameters in a structured and identifiable manner, based on a standard JSON-LD format for biomedical APIs and services. By indexing and visualizing these descriptions as Linked Data in a Elasticsearch back-end, researchers can seamlessly identify the services that consume or return desired parameters, and automatically compose services in workflows that yield new insights.
Presentation: http://bit.ly/smartAPIslides
Contact: api-interoperability@googlegroups.com
Install Elasticsearch (version 7.x) at localhost:9200 (follow this instruction) or install with docker (follow this instruction)
Clone this repo
git clone https://github.com/SmartAPI/smartAPI.git
Install system packages (on Ubuntu, for example)
sudo apt install libcurl4-openssl-dev libssl-dev aws-cli
Install python dependencies after navigating to root smartAPI directory
cd smartAPI
pip install -r requirements.txt
Navigate to SmartAPI source files and create a config_key.py under src
cd src
touch config_key.py
Update config_key.py with
COOKIE_SECRET = '<Any Random String>'
GITHUB_CLIENT_ID = '<your Github application Client ID>'
GITHUB_CLIENT_SECRET = '<your Github application Client Secret>'
SLACK_WEBHOOKS = [
{
"tag": '<string>', # (optional)
"webhook": '<insert webhook URL>'
}
] # (optional)
For Github incorporation, follow this instruction to create your Github Client ID and Secret.
Enter any Application name, http://localhost:8000/
for Homepage
URL and http://localhost:8000/oauth
for Authorization callback URL.
For SLACK_WEBHOOKS (optional), the list may not be included if one does not want Slack notifications pushed every time a new API is added to the smartAPI registry.
Alternatively, if one wants slack notifications sent to more than one channel, one may list more than one dict in the SLACK_WEBHOOKS
list.
Follow this instruction to create Slack webhooks and obtain webhook URLs.
If one would like a Slack notification pushed only if the newly registered API contains a specific tag, one should include the tag
key, which should have the value of the specific tag (case sensitive).
For example:
"tags": 'translator' # will send every time an API is registered with a 'translator' tag
Optionally import some API data from a saved dump file. Contact us for the dump file.
And replace the name of the file in the command with the backup file name.
import admin
admin.restore("smartapi_oas3_backup_20200706.json")
Run dev server
python index.py --debug
You should now able to access API dev server at http://localhost:8000
Note: On windows with python 3.7, if you cannot install pycurl automatically, try downloading a pre-compiled binary and install manually from https://www.lfd.uci.edu/~gohlke/pythonlibs/