Apple CloudKit server-to-server support for the requests Python library.
This project provides an authentication handler for Apple’s CloudKit server-to-server API for the requests Python library.
requests-cloudkit is available for download through the Python Package Index (PyPi). You can install it right away using pip or easy_install.
pip install requests-cloudkit
requests-cloudkit provides an authentication handler that can be passed directly to the requests library to authenticate requests to the CloudKit API. Before working with the CloudKit server-to-server API, you’ll first need to follow Apple’s instructions to generate a certificate and a server-to-server key (see Accessing CloudKit Using a Server-to-Server Key).
Once you have these values, just plug them into a CloudKitAuth object, which you can use with requests to interface with CloudKit. E.g.:
>>> import requests >>> from requests_cloudkit import CloudKitAuth >>> auth = CloudKitAuth(key_id=YOUR_KEY_ID, key_file_name=YOUR_PRIVATE_KEY_PATH) >>> requests.get("https://api.apple-cloudkit.com/database/[version]/[container]/[environment]/public/zones/list", auth=auth)
requests-cloudkit can also be used with RestMapper to integrate directly with the CloudKit API.
>>> CloudKit = restmapper.RestMapper("https://api.apple-cloudkit.com/database/[version]/[container]/[environment]/")
Instantiate a cloudkit instance using your CloudKit server-to-server key ID and provide the path to the private key file.
>>> cloudkit = CloudKit(auth=CloudKitAuth(key_id=YOUR_KEY_ID, key_file_name=YOUR_KEY_FILE))
Now, you can start making requests to the CloudKit API using a nice attribute syntax.
>>> response = cloudkit.public.zones.list()
If you want to pass in body data for a POST, provide a single argument to the call to the API, and specify “POST” as the first attribute. I.e.
For the full list of CloudKit Server-to-Server API capabilities, reference Apple’s developer documentation.
If you like this library, or need help implementing it, just send us an email: email@example.com.
Apache License, Version 2.0. See LICENSE for details.