Getting campaigh Info returns null on a user's discord id

So in asp.net I managed to get this far. But now I need to be able to get a patron’s discord.

The code is as follows:

(The code embeds a slightly modified patreon.net added to the project code to have it also use netcoreapp3.1)

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System.Text.Encodings;
using WebApi1.Discord;
using WebApi1.Patreon.Requests;
using WebApi1.Patreon.API;

namespace WebApi1.Patreon.Controllers
{
    [ApiController]
    public class PatreonPledgesController : ControllerBase
    {
        private readonly ILogger<PatreonPledgesController> _logger;

        public PatreonPledgesController(ILogger<PatreonPledgesController> logger)
            => this._logger = logger;

        [HttpPost("pledges")]
        public async Task<IActionResult> GetPatreonPledges(/*[FromBody] PatreonRequestData request*/)
        {
            if (!string.IsNullOrEmpty(this.Request.Headers["X-Patreon-Event"]))
            {
                string trigger = this.Request.Headers["X-Patreon-Event"];

                // do stuff for each trigger.
                return this.ProcessTriggers(trigger/*, request*/);
            }
            else
            {
                return this.BadRequest();
            }
        }

        private IActionResult ProcessTriggers(string trigger/*, PatreonRequestData request*/)
        {
            _ = Task.Run(() => { _ = this.FilterDiscordInfo(trigger/*, request*/); });

            return this.Ok();
        }

        private async Task FilterDiscordInfo(string trigger/*, PatreonRequestData request*/)
        {
            var myUniqueFileName = "PatreonToken.json";
            var jsonString = System.IO.File.ReadAllText(myUniqueFileName);
            var patreonToken = PatreonToken.FromJson(jsonString);
            var patreon = new PatreonClient(patreonToken.AccessToken);
            await patreon.RefreshToken(patreonToken);
            var pledges = patreon?.GetCampaignPledges(patreonToken.CampaignId)?.Result;
            
            // for each user filter the values to see if their payment went through or not (aka are valid patrons).
            foreach (var pledge in pledges)
            {
                var creatorUser = patreon.GetUser(patreonToken.CreatorUserId)?.Result;
                var patronUser = patreon.GetUser(pledge.Relationships.Patron.Id)?.Result;  // always null on id for some reason atm.
                var creatorDiscordServerId = creatorUser.Attributes.DiscordServerId;  // always null for some reason atm.
                var valid_patron = pledge.Attributes.DeclinedSince == null;
                var userDiscordId = patronUser .Attributes?.DiscordId;  // always null for some reason atm.
                var patronFullName = patronUser .Attributes?.FullName;  // always null for some reason atm.
                #region current triggers.
                if (!string.IsNullOrEmpty(userDiscordId))
                {
                    if (trigger.Equals(PledgeTypeHelper.GetStringType(PledgeType.MemberCreate)))
                    {
                        if (!valid_patron)
                        {
                            this._logger.LogInformation($"Found invalid patron. {patronFullName}", Array.Empty<object>());
                            await DiscordRoleHelper.RemoveRole(creatorDiscordServerId, userDiscordId, "Patron");
                        }
                        else
                        {
                            await DiscordRoleHelper.AddRole(creatorDiscordServerId, userDiscordId, "Patron");
                        }
                    }
                    else if (trigger.Equals(PledgeTypeHelper.GetStringType(PledgeType.MemberUpdate)))
                    {
                        // filter between old and new tiers and optionally edit the roles on discord.
                    }
                    else if (trigger.Equals(PledgeTypeHelper.GetStringType(PledgeType.MemberDelete)))
                    {
                        await DiscordRoleHelper.RemoveRole(creatorDiscordServerId, userDiscordId, "Patron");
                    }
                    else if (trigger.Equals(PledgeTypeHelper.GetStringType(PledgeType.MemberPledgeCreate)))
                    {
                        if (!valid_patron)
                        {
                            this._logger.LogInformation($"Found invalid patron. {patronFullName}", Array.Empty<object>());
                            await DiscordRoleHelper.RemoveRole(creatorDiscordServerId, userDiscordId, "Patron");
                        }
                        else
                        {
                            await DiscordRoleHelper.AddRole(creatorDiscordServerId, userDiscordId, "Patron");
                        }
                    }
                    else if (trigger.Equals(PledgeTypeHelper.GetStringType(PledgeType.MemberPledgeUpdate)))
                    {
                        // filter between old and new tiers and optionally edit the roles on discord.
                    }
                    else if (trigger.Equals(PledgeTypeHelper.GetStringType(PledgeType.MemberPledgeDelete)))
                    {
                        await DiscordRoleHelper.RemoveRole(creatorDiscordServerId, userDiscordId, "Patron");
                    }
                }
                #endregion current triggers.
            }
        }
    }
}

However my issue is somehow 3 things from it returns always null.

Maybe I am missing a request scope?

Edit: It seems anything under the Attributes property when getting pledges is always null and pledges only gives the pledge id.