{"id":16615687,"url":"https://github.com/pschmitt/jcalapi","last_synced_at":"2025-03-23T14:31:16.307Z","repository":{"id":39344299,"uuid":"415649375","full_name":"pschmitt/jcalapi","owner":"pschmitt","description":"Local calendar caching and JSON API","archived":false,"fork":false,"pushed_at":"2024-04-30T15:15:52.000Z","size":973,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-02T01:21:41.519Z","etag":null,"topics":["calendar","fastapi","json","json-api"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/jcalapi/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pschmitt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["pschmitt"],"custom":["https://www.paypal.com/paypalme/pppschmitt"]}},"created_at":"2021-10-10T17:08:03.000Z","updated_at":"2024-05-03T04:48:18.183Z","dependencies_parsed_at":"2023-11-09T12:29:57.065Z","dependency_job_id":"3f17cb8c-5313-4e19-9c21-827ef2411b82","html_url":"https://github.com/pschmitt/jcalapi","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fjcalapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fjcalapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fjcalapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fjcalapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pschmitt","download_url":"https://codeload.github.com/pschmitt/jcalapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245115790,"owners_count":20563237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","fastapi","json","json-api"],"created_at":"2024-10-12T02:10:22.419Z","updated_at":"2025-03-23T14:31:15.585Z","avatar_url":"https://github.com/pschmitt.png","language":"Python","funding_links":["https://github.com/sponsors/pschmitt","https://www.paypal.com/paypalme/pppschmitt"],"categories":[],"sub_categories":[],"readme":"# 📅 jcalapi\n\njcalapi is a local calendar cache and JSON API that interacts with Exchange and \nConfluence calendars. It fetches events and returns them in a JSON format, \nmaking it easy to integrate calendar data into other systems.\n\n## 🚀 Getting Started\n\n### 📋 Prerequisites\n\n- Python\n- [Poetry](https://python-poetry.org)\n\n### 🔑 Setting Up Credentials\n\nTo use jcalapi, you'll need to provide credentials for accessing your Exchange \nor Confluence calendars. These credentials should be stored in a secure \nlocation, and you should ensure that they are not exposed in your code or \nversion control system.\n\nFor Exchange, you'll need your username and password. \nFor Confluence, you'll need your API token.\n\nSee [.envrc-sample](./.envrc-sample) for an example.\n\n### 💾 Installation\n\n```shell\n# pip\npip install --user jcalapi\n\n# pipx\npipx install jcalapi\n```\n\n### 🏃 Usage\n\nYou can run the application directly using Python:\n\n```shell\npython -m jcalapi\n```\n\n### 🐳 Blablabla, Docker?\n\n```shell\ndocker run -it --rm -p 127.0.0.1:7042:7042 \\\n  -e ONFLUENCE_URL=https://confluence.example.com \\\n  -e CONFLUENCE_USERNAME=john.doe \\\n  -e CONFLUENCE_PASSWORD=XXX \\\n  -e EXCHANGE_USERNAME=john.doe@example.com \\\n  -e EXCHANGE_PASSWORD=XXX \\\n  -e GOOGLE_CREDENTIALS=/config/xxx.apps.googleusercontent.com.json \\\n  -e GOOGLE_CALENDAR_REGEX='^Work '\n  ghcr.io/pschmitt/jcalapi\n```\n\n## 📚 API Usage\n\nThe API provides endpoints for fetching calendar events. Here's an example of how to use it:\n\n```shell\ncurl http://localhost:7042/today\n```\n\nThis will return a JSON response with the events data:\n\n```json\n[\n  {\n    \"uid\": \"event1\",\n    \"backend\": \"exchange\",\n    \"calendar\": \"calendar1\",\n    \"organizer\": \"organizer1\",\n    \"attendees\": {\n      \"name\": \"hisname\",\n      \"email\": \"his@email.com\",\n      \"optional\": false,\n      \"response\": \"Accept\"\n    },\n    \"summary\": \"event1 summary\",\n    \"description\": \"event1 description\",\n    \"body\": \"event1 body\",\n    \"location\": \"event1 location\",\n    \"start\": \"2023-06-06T00:00:00\",\n    \"end\": \"2023-06-06T01:00:00\",\n    \"whole_day\": false,\n    \"is_recurring\": false,\n    \"categories\": [\n      \"Cat1\",\n      \"Cat2\"\n    ],\n    \"status\": \"confirmed\",\n    \"extra\": {\n      \"conference_type\": \"Teams\",\n      \"meeting_workspace_url\": \"https://teams.microsoft.com/l/meetup-join/...\",\n      \"net_show_url\": \"https://teams.microsoft.com/l/meetup-join/...\"\n    },\n    \"conference_url\": \"https://teams.microsoft.com/l/meetup-join/...\"\n  },\n  ...\n]\n```\n\nTo fetch events for tomorrow, you can use the `/tomorrow` endpoint:\n\n```shell\ncurl http://localhost:7042/tomorrow\n```\n\nThis will return a JSON response with the events data for tomorrow.\n\nThe `/meta` endpoint provides metadata about the backends (Confluence/Exchange):\n\n```shell\ncurl http://localhost:7042/meta\n```\n\nThe `/reload` endpoint allows you to reload the calendar data:\n\n```shell\ncurl -X POST http://localhost:7042/reload\n```\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a pull request.\n\n### 🧑‍💻 Development setup\n\n1. Clone the repository\n```shell\ngit clone https://github.com/pschmitt/jcalapi.git\n```\n\n2. Navigate into the cloned repository\n```shell\ncd jcalapi\n```\n\n3. Setup the environment\n```shell\npoetry install\n```\n\nAlternatives:\n\n- Use [devenv](https://devenv.sh)\n- Try the provided devcontainer (untested, generated by devenv)\n\n## 📄 License\n\nThis project is licensed under the [GNU General Public License v3.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschmitt%2Fjcalapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpschmitt%2Fjcalapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschmitt%2Fjcalapi/lists"}