code: func (i *MintedOAuthTokenInfo) toBigQueryMessage() *bqpb.OAuthToken {
  	return &bqpb.OAuthToken{
  		Fingerprint:      utils.TokenFingerprint(i.Response.AccessToken),
  		GrantFingerprint: utils.TokenFingerprint(i.Request.GrantToken),
  		ServiceAccount:   i.GrantBody.ServiceAccount,
  		OauthScopes:      i.Request.OauthScope,
  		ProxyIdentity:    i.GrantBody.Proxy,
  		EndUserIdentity:  i.GrantBody.EndUser,
  
  		// Note: we are not using 'issued_at' because the returned token is often
  		// fetched from cache (and thus it was issued some time ago, not now). This
  		// timestamp is not preserved in the cache, since it can be calculated from
  		// 'expiration' if necessary.
  		RequestedAt: google.NewTimestamp(i.RequestedAt),
  		Expiration:  i.Response.Expiry,
  
  		// Information supplied by the caller.
  		AuditTags: i.Request.AuditTags,
  
  		// Information about the service account rule used.
  		ConfigRev:  i.ConfigRev,
  		ConfigRule: i.Rule.Name,
  
  		// Information about the request handler environment.
  		PeerIp:         i.PeerIP.String(),
  		ServiceVersion: i.Response.ServiceVersion,
  		GaeRequestId:   i.RequestID,
  		AuthDbRev:      i.AuthDBRev,
  	}
  }
docs: // toBigQueryMessage returns a message to upload to BigQuery.