[FR] Allow `messaging.subscribe_to_topic` to return more verbose information on failure

Open
#690 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
python
Domain
api, backend

Research direction

Start with the messaging.subscribe_to_topic call shown in the example and compare its failure response with the requested device_id information. Check whether unsubscribe_from_topic should expose the same details. Done means failed device IDs are available to callers for both operations without breaking existing response handling.

Written by the indexing model from the issue text.

Description

api: messaging needs-triage type: feature request

Is your feature request related to a problem? Please describe.
It frustrates our team that each time our mobile app is updated and our users open the app, a new device_id is generated. We are saving this new device_id to the user, because we can't know for sure that the user haven't just bought a new phone and installed the app into that new phone as well. This leads to the problem that when we subscribe users to a topic, with all their device ids, we get many Errors ['NOT_FOUND', 'NOT_FOUND', 'NOT_FOUND', 'NOT_FOUND', 'NOT_FOUND', 'NOT_FOUND'] returned.

Describe the solution you'd like
We'd like that the API returns a list of failed device_ids so that we can delete those from our database. We'd love to see this extended to messaging.unsubscribe_from_topic as well.

Describe alternatives you've considered
Digging through the firebase code doesn't give any hints that the information we're looking for is discarded in transit.

Additional context
Code example:

from firebase_admin import messaging

def do_subscribe(tokens, topic):
    response = messaging.subscribe_to_topic(tokens, topic)
    if response.failure_count > 0:
        logger.error(
            f"Errors {list(map(lambda e: e.reason, response.errors))}",
            exc_info=False,
        )
Dominant language
Python
Stars
1.2k
Forks
359
Avg merge
5d 6m
Merged PRs (30d)
2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from firebase/firebase-admin-python

All issues in firebase/firebase-admin-python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.