Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reminders doesn't work for iOS13 (404 response) #406

Open
ghost opened this issue Oct 31, 2022 · 1 comment
Open

Reminders doesn't work for iOS13 (404 response) #406

ghost opened this issue Oct 31, 2022 · 1 comment

Comments

@ghost
Copy link

ghost commented Oct 31, 2022

The problem

Calling api.reminders.post() returns a 404 error

Environment

  • pyiCloud release with the issue (pip show pyicloud): 1.0.0
  • Last working pyiCloud release (if known):
  • Service causing this issue: RemindersService
  • Python version (python -V): Python 3.7.3
  • Operating environment (project deps/Docker/Windows/etc.): Linux

Traceback/Error logs

<Response [404]>

Additional information

When I do the refresh method and look at the data retrieved from the endpoint /rd/startup I get:
{'Collections': [...],
'Reminders': [
...
'startDateIsAllDay': True,
'title': 'Where are my reminders?'},
{
...
'startDateIsAllDay': True,
'title': 'The creator of this list has upgraded these '
'reminders.'}]}

@ghost ghost changed the title Reminders doesn't work for iOS13 Reminders doesn't work for iOS13 (404 response) Oct 31, 2022
@ghost ghost closed this as completed Nov 1, 2022
@ghost ghost reopened this Nov 1, 2022
@russinnes
Copy link

Same thing here - but an additional point with the current source and reminders:

Calling the api.reminders as is would result in:

pyicloud.exceptions.PyiCloudAPIResponseException: Authentication required for Account. (421)

Specifically, as identified in #330 , the 'dsid' parameter needs to be added when the reminders api call is made:

def refresh(self):
"""Refresh data."""
params_reminders = dict(self._params)
params_reminders.update(
{"clientVersion": "4.0",
"lang": "en-us",
"usertz": get_localzone_name(),
"dsid": self.session.service.data["dsInfo"]["dsid"] <---- This key/value
})

^-- Adding the 'dsid' key and associated object to the 'params_reminders.update' dictionary got around the auth error (in services/reminders.py)

So now that the reminders call is working, the returned value when calling 'api.reminders.lists' is as follows:
{'Somelistname': [{'title': 'The creator of this list has upgraded these reminders.', 'desc': 'Learn more here: https://support.apple.com/HT210220', 'due': None},.... for each individual list.
This follows what we knew when Apple updated Reminders a few years back. So more-or-less, the above patch to services/reminders.py is required to get the API call to function, but the returned data no longer works for anyone who was upgraded their Reminders app(s) in the last 2 years.

FWIW - calling api.reminders.collections does seem to return the appropriate list structure and accompanying GUID.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant