Skip to main content

flyteplugins-clickup

Receive ClickUp webhooks in Flyte.

pip install "flyteplugins-clickup[app]"

Using it

Hand a ClickUpProvider() to a WebhookAppEnvironment and register handlers with the typed constants in events:

import flyte
from flyte.extras.webhooks import WebhookAppEnvironment, run_once
from flyteplugins.clickup import ClickUpProvider, events

# ClickUpProvider.default_secret_env is mounted for you.
app_env = WebhookAppEnvironment(name="clickup-webhooks", providers=[ClickUpProvider()])


@app_env.on_event(events.Task.STATUS_UPDATED)
async def handle(event):
    import flyte.remote as remote

    task = remote.Task.get(name="my-env.my_task", auto_version="latest")
    result = await run_once.aio(task, key=event.dedupe_key(), resource=event.resource_id)
    if not result.created:
        return {"skipped": result.run.name, "url": result.run.url}
    return {"run": result.run.name}


flyte.serve(app_env)

Handlers must await run_once.aio(...). The blocking form stalls the app's event loop, and ClickUp times deliveries out in seconds.

One app can serve several products at once — hand it one provider per product.

Try it

examples/clickup_webhooks.py runs two ways. The first needs no ClickUp account:

python examples/clickup_webhooks.py --local   # replay a real sample delivery in-process
python examples/clickup_webhooks.py           # deploy the receiver to Flyte

--local posts this plugin's SAMPLE_DELIVERY through the app with FastAPI's test client, so you see a delivery verified, normalized, and dispatched — plus an unsigned one refused with a 401, and the same delivery replayed to show the dedupe key is stable.

Setup

  1. Store the secret and mount it on the app:
    flyte create secret CLICKUP_WEBHOOK_SECRET --value <secret>
    
  2. Point ClickUp at <app-url>/webhook/clickup, from Space Settings → Integrations → Webhooks (it shows the signing secret on creation).

Verification: HMAC-SHA256 over the raw body (X-Signature).

The list id is at the top level on list-scoped events and on the nested task for task-scoped ones; the parser reads both.

Event constants

events spells every event this plugin can dispatch, as str enums grouped by event type, so a typo fails at import rather than by silently never matching. Raw strings still work, for events the constants do not cover yet.

What this plugin does not do

Call the ClickUp API. Use httpx — ClickUp ships no Python SDK, and its API is a handful of REST calls directly from your tasks — see examples/external_saas_integrations. This plugin owns only the part that is Flyte's: authenticating an inbound delivery and turning it into a run.

Metadata

Release files for flyteplugins-clickup 2.12.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for flyteplugins-clickup 2.12.1
File Interpreter ABI Platform Actions
flyteplugins_clickup-2.12.1-py3-none-any.whl Python 3 none any Details for flyteplugins_clickup-2.12.1-py3-none-any.whl

Release files / flyteplugins_clickup-2.12.1-py3-none-any.whl

Download URL flyteplugins_clickup-2.12.1-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eeb89309d9828e263fae910008ddff97750332952469f31699fbe67aebefb26c
BLAKE2b-256 checksum
How to use checksums
dbb8005d4c61e396f8b7d4d2177361daae9f57168435412b7a5c6c9d995e4f6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for flyteplugins-clickup 2.12.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.12.1 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page