Skip to main content

Python client for the Cloudflare v4 API

Project description

Publish Package PyPI - Status GitHub release (latest by date) PyPI CodeFactor GitHub license

Python client for Cloudflare API v4

Usage

Python Package

pip install cloudflare-api

Sample code can be found inside /test.py

Source Code

git clone https://github.com/nikhiljohn10/cloudflare-api
cd cloudflare-api

Instructions to get new API Token

  1. Go to Dashboard
  2. Create Token
  3. Use Edit Cloudflare Workers template
  4. Select one account from Account Resources
  5. Select All Zones or specific zones under Zone Resources
  6. Continue to summary
  7. Create Token
  8. Copy the token and save it somewhere secret & secure.

Create a secret.py in the root directory with following content and replace API_TOKEN's value with the token obtained from Cloudflare Dashboard:

API_TOKEN = "API_TOKEN"

Then run the following command in terminal:

make test

Note: The secret.py file is ignored by git

Example

For this example, poetry is used for easy setup.

python3 -m pip install poetry
poetry new cloudflare-app
cd cloudflare-app
poetry add cloudflare-api

Copy the code below in to a new file ./cloudflare-app/__main__.py.

#!/usr/bin/env python3

from CloudflareAPI import Cloudflare

def main():
  cf = Cloudflare("API_TOKEN")

  print(cf.account.list())
  print(cf.user.details())
  print(cf.worker.list())
  print(cf.store.list())

if __name__ == "__main__":
    main()

Now replace API_TOKEN values with values obtained from Cloudflare Dashboard. You can now run the program using following command:

poetry run python cloudflare-app

Default Permissions

1. Account

  • Workers Tail ( Read )
  • Workers KV Storage ( Edit )
  • Workers Scripts ( Edit )
  • Account Settings ( Read )

2. Zones

  • Workers Routes ( Edit )

3. Users

  • User Details ( Read )

Available endpoints

Account

  • list - List all accounts where given token have access
  • get_id - Return account id if only one account exists. Otherwise display all accounts availabe and exit.
  • details - Display details of an account
  • rename* - Rename an existing account

User

  • details - Display details of the account's user

Worker

  • list - List all existing workers

  • upload - Upload a new worker with binding if given

    • Upload file along as javascript
    • Upload file along with metadata as multipart form-data
      • KV Bindings
      • Environment variables
      • Secrets
  • download - Download an existing worker

  • deploy - Deploy an existing worker using the subdomain

  • undeploy - Undeploy an existing worker

  • delete - Delete an existing worker

    Subdomain

    • create - Create a new subdomain if none exists
    • get - Get the current subdomain from cloudflare account

    Cron

    • update - Update an existing cron or create new cron for a worker
    • get - Get the cron task list of specified worker

Store(Workers KV)

  • list - List all existing Namespaces
  • get_id - Find the namespace id of the namespace
  • create - Create a new namespace
  • rename - Rename an existing namespace
  • delete - Delete an existing namespace

( * : Not accessable with default Worker Token )

Development

Version Bump

To display current version:

make version

To bump to new version, where x.y.z is major,minor & patch versions respectively:

make VERSION=x.y.z bump

The above command does the following:

  1. Update version in __version__.py inside package
  2. Create a commit for the above change
  3. Tag the commit with VERSION
  4. Push the content in to main branch with tags
  5. Python publish workflow action activates
  6. Release the version pushed
  7. Build python package
  8. Publish python package in to pypi.org

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudflare-api-1.3.9.tar.gz (8.8 kB view hashes)

Uploaded Source

Built Distribution

cloudflare_api-1.3.9-py3-none-any.whl (12.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page