I'm using your CredentialsGoogleToken to sign in a user on a server, where the user signed in originally on an iOS mobile app using Google Sign in. Because my server operates somewhat independently of the mobile app, it's important for me to pass along a Google Sign in server auth code (https://developers.google.com/identity/sign-in/web/server-side-flow). This is used on the server to obtain a server-side refresh token, in addition to obtaining an access token. I think it makes sense for me to pass that server auth code up to the server as a HTTP header-- since its authentication related.
Thus, it would seem to make sense to add a parameter to your UserProfileDelegate update method that provides access to the HTTP headers. E.g.,
func update(userProfile: UserProfile, from dictionary: [String:Any] andHeaders:Headers)