A simple webservice that pulls clickup tasks and publishes dates associated with the tasks as iCal events.
This project aims to host a simple web server provides ical calendars generated from Clickup tasks you are assigned to
pip install git+https://github.com/RedRem95/clickup_to_ical.gitdocker run -d -p 8080:8080 -e CLICKUP_API_KEY=YOUR_TOKEN_HERE -v /path/to/auth.json:/auth.json -v /path/to/default_event_length.json:/def_len.json clickup_to_ical- First you have to generate a Clickup API Token. Go to your user settings->Apps
- Export this Token to the CLICKUP_API_KEYenvironment variable
- Run the explore script to get your user ids
Clickup_Explore # Run this inside the python environment with the installed package docker run --rm -e CLICKUP_API_KEY=YOUR_TOKEN_HERE ghcr.io/redrem95/clickup_to_ical Clickup_Explore - Put the relevant user ids inside an auth.json file
{
    "SOME_RANDOM_TOKEN_YOU_GENERATED": "user id from clickup",
    "SOME_OTHER_RANDOM_TOKEN_YOU_GENERATED": "another user id from clickup"
}- Export the path to the auth.json to the AUTH_FILEenvironment variable
- OPTIONAL: If you want certain event names to have a certain length and not just be a point of time use the DEFAULT_LENGTHenvironment variable- provide a default_event_length.json file and put the path inside the DEFAULT_LENGTHenvironment variable
 
- provide a default_event_length.json file and put the path inside the 
{
    "Due Date": 60   // Time every "Due Date" time based event takes in seconds
}- Run the web service providing the ical files that you can either download or subscribe with your calendar client of choice
 Clickup_To_iCal # Run this inside the python environment with the installed package docker run -d -p 8080:8080 -e CLICKUP_API_KEY=YOUR_TOKEN_HERE -v /path/to/auth.json:/auth.json -v /path/to/default_event_length.json:/def_len.json ghcr.io/redrem95/clickup_to_icalCurrently, there is only one API endpoint available GET /api/1.0/calendar
For this endpoint you can use a combination of header and query parameters to customize what you get in return
| Key | Required | Description | 
|---|---|---|
| Authorization | yes | One of the authorization keys you generated and put in the auth.json file | 
| Key | Required | Description | 
|---|---|---|
| token | yes | One of the authorization keys you generated and put in the auth.json file | 
| date_types | no | Comma seperated list of the dates in the events you want to have in your calendar. For example Due Date. If you want to include a date from a custom field put two underscores infront of the name of the custom field, for example__your_custom_field_with_a_date. Defaults to all dates found in all events | 
| only_assigned | no | Allowed values are trueandfalse. Iffalseall dates will be added to your calendar. If not only the one for the user associated with the access key in auth.json are published into the calendar. Default istrue | 
| include_closed | no | Allowed values are trueandfalse. Iftrueclosed tasks will be included. Default isfalse | 
| fixed_uid | no | Allowed values are trueandfalse. Iftruewill construct EVENT uid from date type and clickup id. If false will create new uuid for every call. Default isfalse | 
An example query could look like this:
GET /api/1.0/calendar?date_types=Due Date,__your_custom_field_with_a_date&only_assigned=true&token=SOME_RANDOM_TOKEN_YOU_GENERATEDPer default only top level tasks are taken into account and only open tasks are included.
- To also include sub-tasks you must set the TASKS_SUBTASKSenvironment variable totrue
- To also include closed tasks you must set the TASKS_CLOSEDenvironment variable totrue
Please keep in mind that both settings can increase the api calls to the clickup API by alot so only set them when you know you need them.
To Save API calls the service only pulls the Clickup API every 15 Minutes. This can be changed by setting the rate in seconds to the CLICKUP_CALL_RATE environment variable.
- Basic API to get tasks and return a valid ical
- Basic filter functionality for users and subtasks and open/closed tasks
-  Authentication methods in header and query
- Associate token with user id
- More flexibility in tokens and user ids
 
- More filters. WAY more filters
- Move to better server (away from flask def server)
Contributors names and contact info
- 0.1
- Initial Release
 
This project is licensed under the GPL-v3 License - see the LICENSE file for details
Thanks to Click Up for the awesome management tool and the API so projects like this can exist