Client library for the Knock API
Project description
Knock Python library
Knock API access for applications written in Python.
Documentation
See the documentation for Python usage examples.
Installation
To install from PyPi, run the following:
pip install knockapi
To install from source, clone the repo and run the following:
python setup.py install
Configuration
To use the library you must provide a secret API key, provided in the Knock dashboard.
from knockapi import Knock
client = Knock(api_key="sk_12345")
Usage
Identifying users
from knockapi import Knock
client = Knock(api_key="sk_12345")
client.users.identify(id="jhammond", data={"name": "John Hammond", "email": "jhammond@ingen.net"})
Retrieving users
from knockapi import Knock
client = Knock(api_key="sk_12345")
client.users.get_user(id="jhammond")
Sending notifies
from knockapi import Knock
client = Knock(api_key="sk_12345")
client.notify(
key="dinosaurs-loose",
actor="dnedry",
recipients=["jhammond", "agrant", "imalcolm", "esattler"],
cancellation_key=alert.id,
tenant="jurassic-park",
data={
"type": "trex",
"priority": 1
}
)
Getting and setting channel data
from knockapi import Knock
client = Knock(api_key="sk_12345")
# Set channel data for an APNS
client.users.set_channel_data(
id="jhammond",
channel_id=KNOCK_APNS_CHANNEL_ID,
channel_data={
"tokens": [apns_token]
}
)
# Get channel data for the APNS channel
client.users.get_channel_data(id="jhammond", channel_id=KNOCK_APNS_CHANNEL_ID)
Canceling notifies
from knockapi import Knock
client = Knock(api_key="sk_12345")
client.workflows.cancel(
key="dinosaurs-loose",
cancellation_key=alert.id,
recipients=["jhammond", "agrant", "imalcolm", "esattler"],
)
User preferences
from knockapi import Knock
client = Knock(api_key="sk_12345")
# Replaces the preferences for the user
client.users.set_preferences(
user_id="jhammond",
channel_types={'email': True},
workflows={'dinosaurs-loose': False}
)
# Retrieve the current preferences
client.users.get_preferences(user_id="jhammond")
Signing JWTs
You can use the pyjwt
package to sign JWTs easily.
You will need to generate an environment specific signing key, which you can find in the Knock dashboard.
If you're using a signing token you will need to pass this to your client to perform authentication. You can read more about client-side authentication here.
import jwt
import os
private_key = os.getenv("KNOCK_SIGNING_KEY")
encoded = jwt.encode({"sub": "jhammond"}, private_key, algorithm="RS256")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file knockapi-0.5.8.tar.gz
.
File metadata
- Download URL: knockapi-0.5.8.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16739f00e58aa978859138786ca5ab0f30e3705f6e494ba1978a165c02b9e833 |
|
MD5 | 04304c4ac8bd712844101bc2a6002e0f |
|
BLAKE2b-256 | ef312ea4739a812385a83e5e1f2702c65346809789eedf85e2d998ae493ed608 |
File details
Details for the file knockapi-0.5.8-py3-none-any.whl
.
File metadata
- Download URL: knockapi-0.5.8-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0c9740291d3f32a995e39779636191e7622b767da73357f8cfaabc1f7034e3a |
|
MD5 | ac952b26dd5c7b5387fecdbe1ccb17e8 |
|
BLAKE2b-256 | 623e7b890bc32b71fa111aba35e3f5487fa9648bf66745fbb9a7759ca31ebe54 |