code: func (i *MintedGrantInfo) toBigQueryMessage() *bqpb.OAuthTokenGrant {
  	return &bqpb.OAuthTokenGrant{
  		// Information about the produced token.
  		Fingerprint:     utils.TokenFingerprint(i.Response.GrantToken),
  		TokenId:         fmt.Sprintf("%d", i.GrantBody.TokenId),
  		ServiceAccount:  i.GrantBody.ServiceAccount,
  		ProxyIdentity:   i.GrantBody.Proxy,
  		EndUserIdentity: i.GrantBody.EndUser,
  		IssuedAt:        i.GrantBody.IssuedAt,
  		Expiration: &timestamp.Timestamp{
  			Seconds: i.GrantBody.IssuedAt.Seconds + i.GrantBody.ValidityDuration,
  			Nanos:   i.GrantBody.IssuedAt.Nanos,
  		},
  
  		// 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.