There is no "invited" but its specificed in docs.
JObject GetClan(string tag) // Returns a JObject containing all of the specified clans information //Available properties: // "tag" - (string) clan tag // "owner" - (string) clan owner id // "moderators" - (JArray) moderator user id's // "members" - (JArray) member user id's // "invited" - (JArray) invited player user id's // "allies" - (JArray) ally clan tags // "invitedallies" - (JArray) invited ally clan tags

There is no property called "invited" when using GetClan but its specified in documentation. 

Also, if you Kick a player from the clan, the data doesnt update coming from `GetClan`. "members" will still contain kicked users.

I see in the code you dont MarkDirty on Kick. So the data doesnt recache.

For anyone interested, i did this as a temporary fix... I removed it from the cache just because i wanted my UI to update instantly.

internal JObject ToJObject()
{
// Build and cache everything *except* the invited list
if (serializedClanObject == null)
{
serializedClanObject = new JObject();
serializedClanObject["tag"] = Tag;
serializedClanObject["description"] = Description;
serializedClanObject["owner"] = OwnerID;

// Moderators & Members
var jmoderators = new JArray();
var jmembers = new JArray();
foreach (var kvp in ClanMembers)
{
if (kvp.Value.Role == Member.MemberRole.Moderator)
jmoderators.Add(kvp.Key);
jmembers.Add(kvp.Key);
}
serializedClanObject["moderators"] = jmoderators;
serializedClanObject["members"] = jmembers;

// Allies
var jallies = new JArray();
foreach (var ally in Alliances)
jallies.Add(ally);
serializedClanObject["allies"] = jallies;

// Invited allies
var jinvallies = new JArray();
foreach (var ally in AllianceInvites.Keys)
jinvallies.Add(ally);
serializedClanObject["invitedallies"] = jinvallies;
}

// ALWAYS rebuild the pending player-invites list
var jinvites = new JArray();
foreach (var inviteeId in MemberInvites.Keys)
jinvites.Add(inviteeId);
serializedClanObject["invited"] = jinvites;

return serializedClanObject;
}