I spent a few hours trying to find information on using a service account with the getNotificationSetting() method, I am using Python, but it should work the same in Java, and C#. I told myself that when I got it figured out I had to document it to save someone else, like you, from a journey through many webpages, StackOverflow posts, Medium posts, and more. And here we are.
So….
What I found was that the updateMask isn’t looking for a straight on Text list of the different items you want to update in the PubSub, instead the updateMask only lets the API know what to expect in the body=[value]. This was different than I had done in the past which is why the script I initially used no longer worked.
You have 2 options for the update_mask:
- pubsub_topic
- notification_types
You can use 1 or both. For Example:
update_mask = “pubsub_topic, notification_types”
updateMask=update_mask,
body=updated_settings
service = create_oauth2_connection()
account_id = "99999999999999999999"
updated_settings = {}
pubsub_topic = "projects/riding-dragons-101/topics/reviews"
notification_types = [
"NEW_REVIEW",
"UPDATED_REVIEW",
"NEW_CUSTOMER_MEDIA",
"NEW_QUESTION",
"UPDATED_QUESTION",
"NEW_ANSWER",
"UPDATED_ANSWER",
"DUPLICATE_LOCATION"
]
currentList = service.accounts().getNotificationSetting(
name=f"accounts/{account_id}/notificationSetting"
).execute()
print("------------------ BEFORE ------------------------------------------")
print(currentList)
print("--------------------------------------------------------------------")
if True:
try:
updated_settings["pubsub_topic"] = pubsub_topic
updated_settings["notification_types"] = notification_types
## update_mask = "pubsub_topic,notification_types"
update_mask = "notification_types"
# https://github.com/googleapis/google-api-python-client/blob/main/googleapiclient/discovery_cache/documents/mybusinessnotifications.v1.json
updateList = service.accounts().updateNotificationSetting(
name=f"accounts/{account_id}/notificationSetting",
updateMask=update_mask,
body=updated_settings
).execute()
print("-------- UPDATE ------------")
print(f"UpdateList: {updateList} ")
except Exception as e:
print("\n\n------------------------ EXCEPTION -------------------------------")
print(f"Exception during updating: {e}")
print("------------------------------------------------------------------\n\n")
locationsList = service.accounts().getNotificationSetting(
name=f"accounts/{account_id}/notificationSetting"
).execute()
print("------------------ AFTER ------------------------------------------")
print(locationsList)
print("------------------------------------------------------------------")
# https://github.com/googleapis/google-api-python-client/blob/main/googleapiclient/discovery_cache/documents/mybusinessnotifications.v1.json
service = create_oauth2_connection()
account_id = “10116276071971111111111”
updated_settings = {}
pubsub_topic = “projects/dragon-training-160816/topics/reviews”
notification_types = [
“NEW_REVIEW”,
“UPDATED_REVIEW”,
“NEW_CUSTOMER_MEDIA”,
“NEW_QUESTION”,
“UPDATED_QUESTION”,
“NEW_ANSWER”,
“UPDATED_ANSWER”,
“DUPLICATE_LOCATION”
]
currentList = service.accounts().getNotificationSetting(
name=f”accounts/{account_id}/notificationSetting”
).execute()
print(“—————— BEFORE ——————————————“)
print(currentList)
print(“——————————————————————–“)
if True:
try:
updated_settings[“pubsub_topic”] = pubsub_topic
updated_settings[“notification_types”] = notification_types
update_mask = “pubsub_topic,notification_types”
updateList = service.accounts().updateNotificationSetting(
name=f”accounts/{account_id}/notificationSetting”,
updateMask=update_mask,
body=updated_settings
).execute()
print(“——– UPDATE ————“)
print(f”UpdateList: {updateList} “)
except Exception as e:
print(“\n\n———————— EXCEPTION ——————————-“)
print(f”Exception during updating: {e}”)
print(“——————————————————————\n\n”)
locationsList = service.accounts().getNotificationSetting(
name=f”accounts/{account_id}/notificationSetting”
).execute()
print(“—————— AFTER ——————————————“)
print(locationsList)
print(“——————————————————————“)

