Package: pyTeamUp
pyTeamUpPython API wrapper for TeamUp API. In early stages, only has event and calendar objects implemented.version: 0.1.4aNote: version 0.1.4a is required for working with the TeamUp API as of 11/26/2021. This version adds basic support foratttachmentevent attribute, but  since it is undocumented in the official API there is no way to add or remove attachments. They can be viewed usingevent.attachmentsif set through the Web interface.Features:Pythonic access to TeamUp calendars and events.Simple interface for gathering subcalendars and event containers.Simple interface for creating and deleting events withCalendarobjectEventObject features simple interface for updating event propertiesBatch mode for reducing api calls for updating multiple event propertiesIf pandas is present, Calendar can return events as Series objects and event collections as DataFrame objectsExample usagefrompyteamupimportCalendar,Eventfromdatetimeimportdatetimeapi_key='example api key'# Get your own here: https://teamup.com/api-keys/requestcalendar_id='example calendar id'# goto www.teamup.com to sign up and get your own calendar# Instantiate the calendarcalendar=Calendar(calendar_id,api_key)# Get Subcalendarssubcalendars=calendar.subcalendarssubcal=subcalendars[0]# Easily Create new eventsnew_event_dict={'title':'New Event Title','start_dt':datetime(2018,11,29,14,0,0),'end_dt':datetime(2018,11,29,14,0,0),'subcalendar_ids':subcal['id'],'notes':'This is the description!'}new_event=calendar.new_event(**new_event_dict,returnas='event')print(new_event.event_id)# Gather Event Collections (returns a list)event_list=calendar.get_event_collection()# Note that the default start_dt and end_dt are -30 days and +180 days from today respectivelyevnt=event_list.pop()# Simple change of the titleprint(evnt.title)evnt.title='New Title'print(evnt.title)# Batch Mode Updatesevnt.enable_batch_update()evnt.title='New Title 2'# Will display a warning that no changes are made until batch_commit() is calledprint(evnt.title)# Will still print the old titleprint(evnt.notes)evnt.notes='New Notes!'# Will display a warning that no changes are made until batch_commit() is calledevnt.batch_commit()print(evnt.title)print(evnt.notes)# Prevented from Editing Read-Only Attributesevnt.event_id=123# Will raise an error because attribute is read-only# Easy Delete and confirmevnt.delete()print(evnt.is_deleted)# Will return TruetodoAdd support for updating recurring eventsBuild Subcalendar object with update support similar to Event objectAdd TestsAdd more Event endpoints (get history, get auxilliary info)Add More Calendar endpoints (searching for events)Add Access Key EndpointsAdd Color Swatch Lookup (create simple assignments for red, blue, green, etc)Add support for password protected calendarsAdd support for beta features: undo, custom fields, comments, signupInstallationUsing pip (Current Version: 0.1.4a):python -m pip install pyTeamUpBatch ModeEvents objects feature a batch mode for setting multiple values with a single api call, reducing your api usage and reducing the liklihood of TeamUp disabling your api key! Simply callevent.enable_batch_mode()and begin making changes. When satisfied changes can be commited by callingevent.batch_commit()which will automatically exit batch mode after, or callevent.disable_batch_mode(clear=True)to discard changes.Setting event data without enabling batch mode will cause each change to use an api request.QuestionsUse issue tracker please :)FAQnoneChange Log0.1.4aAdded basic support forEvent.attachmentproperty toEventclass to fix new undocumented change to teamup api. (credit: LogicallyUnfit)0.1.3aRefactored utilitiesformat_dateto use better timestamp awareness.0.1.2aRefactored date parameters in all object methods to usedtinstead ofdate(requested by: LoreKeeperKen)Eliminated unnecessary reproduction of pandasto_datetimein favor ofdateutil'sparseRefactored check_status_codeminor Pep8 adjustmentsfixed readme code errors0.1.1aFixed versioningFixed file names, fixed import bug0.1.0a2Added "get_changed_events" method to Calendar (credit: vranki)0.1.0a1Initial realeaseContributorsThank you to vranki for helping add features to the library, and LogicallyUnfit for helping keep the library stable during an undocumented API change.