Async Python client for interacting with the KatapultPro API.
Project description
KatapultAPI
katapultAPI is a Python module designed to handle requests made to the Katapult API.
Installation & Setup
pip install katapult-api
Usage
Getting a Job list and Job Details
import logging.config
import asyncio
# Not required but the client itself has logging functionality to help track requests.
logger = logging.getLogger(__name__)
logging.basicConfig(
level=logging.DEBUG,
format='[%(levelname)s] %(asctime)s - %(name)s - %(message)s'
)
from katapult_api.katapult import Katapult
from katapult_api.utils import task_handler
async def main():
# Sets up the aiohttp session and closes it after finishing.
async with Katapult(api_key="YOURAPIKEY") as katapult:
# Returns a Response object that contains attributes such as return status, content, and even a json() method.
job_lists = await katapult.job_lists()
# Here we build 20 payloads that will be sent out at the same time.
job_ids = [{"job_id":key} for key in list(job_lists.json().keys())[:20]]
# Not required but makes setting up async tasks easy, pass in a job name and a list of dicts that contain
# expected params.
results = await task_handler(katapult.job,job_ids)
return results
if __name__ == '__main__':
logger.info(f"Getting jobs...")
jobs = asyncio.run(main())
logger.info(f"Finished, got {len(jobs)} jobs.")
Creating a Node
import asyncio
# ...possible logging
from katapult_api.katapult import Katapult
async def main():
async with Katapult(api_key="YOURAPIKEY") as katapult:
# get job id from job_lists endpoint...
job_id = "-ABC123"
# create a node by passing job id, lat/long, and a flat dict of attributes to write to the node
results = await katapult.create_node(job_id,30.0817,-97.843,{"OID":123,"my_custom_attr":"howdy partner"})
return results
if __name__ == '__main__':
results = asyncio.run(main())
KatapultNice Usage
import logging.config
import asyncio
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
logger = logging.getLogger(__name__)
from katapult_api.katapult import Katapult
from katapult_api.katapult_nice import KatapultNice
from katapult_api.utils import task_handler
async def main(api_key: str):
async with KatapultNice(api_key=api_key) as nice:
job_lists = await nice.job_lists()
job_ids = [{"job_id": key} for key in list(job_lists.json().keys())[:20]]
results = await task_handler(nice.job_nodes, job_ids)
return results
if __name__ == '__main__':
api_key = "api_key"
logger.info(f"Getting jobs...")
jobs = asyncio.run(main(api_key))
logger.info(f"Finished, got {len(jobs)} jobs.")
Resources
- https://documenter.getpostman.com/view/9081167/SVtVV93W: Katapultpro API V1
- https://github.com/KatapultDevelopment/katapult-pro-api-documentation?tab=readme-ov-file: Katapultpro Github
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
katapult_api-1.1.0.tar.gz
(12.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file katapult_api-1.1.0.tar.gz.
File metadata
- Download URL: katapult_api-1.1.0.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fb59608d29fb5d00dcef5db108441f84698c1c47adb5b79576d8db01a2a8115
|
|
| MD5 |
5cd29e6f86d7e1c32f6e3b8c02f243a0
|
|
| BLAKE2b-256 |
e7433a502fd35c8e081aa03f18a963a0ffda2f16050071efa1515bcca8d7e8d6
|
File details
Details for the file katapult_api-1.1.0-py3-none-any.whl.
File metadata
- Download URL: katapult_api-1.1.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef637ab9aa5704961d327b3a7144f7d76a24a7f648f969a009432c868665f743
|
|
| MD5 |
08b2c46547959ba9c2cafc86d251e7c2
|
|
| BLAKE2b-256 |
64faf172fdf1d51dcf915598367b93308743267998cde838baf177187fa1090f
|