- .NET 4.5
- Windows 8.x
- Windows Phone 8.1
- Xamarin.Android
- Xamarin.iOS
- Xamarin.Mac
- ASP.NET Core 1.0
Initialization
Login
Player search
Place bid
Trade status
Item data
Player image
Club image
Nation image
Credits
List auction
Get trade pile
Get watch list
Get Consumables
Add auction to watch list
Get Purchased items
Development search
Training search
Send to trade pile
Send to club
Quick sell
Remove from watch list
Remove from trade pile
Get pile sizes
Relist Tradepile
Get players from club
Get squads from club
Get squad details
Get definitions
Get daily gift
Remove sold items from trade pile
Open a pack
var client = new FutClient();
var loginDetails = new LoginDetails("e-mail", "password", "secret answer", Platform.Ps4 /* or any of the other platforms */, AppVersion.WebApp /* or AppVersion.CompanionApp */);
ITwoFactorCodeProvider provider = // initialize an implementation of this interface
var loginResponse = await client.LoginAsync(loginDetails, provider);
Example implementation of ITwoFactorCodeProvider interface
...
ITwoFactorCodeProvider provider = new FutAuth();
...
public class FutAuth : ITwoFactorCodeProvider
{
public TaskCompletionSource<string> taskResult = new TaskCompletionSource<string>();
public Task<string> GetTwoFactorCodeAsync(AuthenticationType authType)
{
Console.WriteLine($"{ DateTime.Now } Enter OTP ({ authType }):");
taskResult.SetResult(Console.ReadLine());
return taskResult.Task;
}
}
All the search parameters are optional. If none are specified, you will get the 1st page of results with no filters applied.
var searchParameters = new PlayerSearchParameters
{
Page = 1,
Level = Level.Gold,
ChemistryStyle = ChemistryStyle.Sniper,
League = League.BarclaysPremierLeague,
Nation = Nation.Norway,
Position = Position.Striker,
Team = Team.ManchesterUnited
};
var searchResponse = await client.SearchAsync(searchParameters);
foreach (var auctionInfo in searchResponse.AuctionInfo)
{
// Handle auction data
}
Passing the amount explicitly:
var auctionResponse = await client.PlaceBidAsync(auctionInfo, 150);
Place the next valid bid amount:
var auctionResponse = await client.PlaceBidAsync(auctionInfo);
Retrieves the trade status of the auctions of interest.
var auctionResponse = await client.GetTradeStatusAsync(
Auctions // Contains the auctions we're currently watching
.Where(x => x.AuctionInfo.Expires != -1) // Not expired
.Select(x => x.AuctionInfo.TradeId));
foreach (var auctionInfo in auctionResponse.AuctionInfo)
{
// Handle the updated auction data
}
Contains info such as name, ratings etc.
var item = await client.GetItemAsync(auctionInfo);
- Format: PNG
- Dimensions: 100 x 100 pixels
var imageBytes = await client.GetPlayerImageAsync(auctionInfo);
- Format: PNG
- Dimensions: 256 x 256 pixels
var imageBytes = await client.GetClubImageAsync(auctionInfo);
- Format: PNG
- Dimensions: 71 x 45 pixels
var imageBytes = await client.GetNationImageAsync(auctionInfo);
Amount of coins and unopened packs.
var creditsResponse = await client.GetCreditsAsync();
Lists an auction from a trade pile item.
// Duration = one hour, starting bid = 150 and no buy now price
var auctionDetails = new AuctionDetails(auctionInfo.ItemData.Id);
// Duration = three hours, starting bid = 200 and buy now price = 1000
var auctionDetails = new AuctionDetails(auctionInfo.ItemData.Id, AuctionDuration.ThreeHours, 200, 1000);
var listAuctionResponse = await client.ListAuctionAsync(auctionDetails);
Gets the items in the trade pile.
var tradePileResponse = await client.GetTradePileAsync();
Retrieves the the watch list.
var watchlistResponse = await client.GetWatchlistAsync();
Retrieves the consumables of your club
var consumablesResponse = await client.GetConsumablesAsync();
var addAuctionToWatchlistResponse = await client.AddToWatchlistRequestAsync(auctionInfo);
Items that have been bought or received in gift packs.
var purchasedItemsResponse = await client.GetPurchasedItemsAsync();
All the search parameters are optional. If none are specified, you will get the 1st page of results with no filters applied.
var searchParameters = new DevelopmentSearchParameters
{
Page = 1,
Level = Level.Gold,
DevelopmentType = DevelopmentType.Healing,
};
var searchResponse = await client.SearchAsync(searchParameters);
foreach (var auctionInfo in searchResponse.AuctionInfo)
{
// Handle auction data
}
All the search parameters are optional. If none are specified, you will get the 1st page of results with no filters applied.
var searchParameters = new TrainingSearchParameters
{
Page = 1,
Level = Level.Gold,
TrainingType = TrainingType.ChemistryStyles,
};
var searchResponse = await client.SearchAsync(searchParameters);
foreach (var auctionInfo in searchResponse.AuctionInfo)
{
// Handle auction data
}
Sends an item to the trade pile (transfer market)
var sendToTradePileResponse = await client.SendItemToTradePileAsync(itemData);
Sends an item to your club
var sendToClubResponse = await client.SendItemToClubAsync(itemData);
Quick sell an item at discard value.
var quickSellResponse = await client.QuickSellItemAsync(ItemData.Id);
Removes an auction from the watch list.
await client.RemoveFromWatchlistAsync(auctionInfo);
Removes an auction from the trade pile.
await client.RemoveFromTradePileAsync(auctionInfo);
Gets the trade pile and watch list sizes.
var pileSizeResponse = await client.GetPileSizeAsync();
Relists all tradepile items as listed before.
await client.ReListAsync();
Gets the players from your 'My Club' section. Note, this will be expanded to include staff and club items.
var clubItems = await client.GetClubItemsAsync();
foreach (var itemData in clubItems.ItemData)
{
// deal with players
}
Gets the squads in your club. Note - many of the fields, such as players etc are not populated here and are in the squad details below.
var squadListResponse = await client.GetSquadListAsync();
foreach (var squad in squadListResponse.squad)
{
string name = squad.squadName;
// etc.
}
var squadDetailsResponse = await client.GetSquadDetailsAsync(squad.id);
foreach (var squadPlayer in squadDetailsResponse.players)
{
var itemData = squadPlayer.itemData;
//read properties of players etc.
//Positions seem to be set by index number and depend on formation
}
Gets all player cards (Standard, IF, SIF, TOTW,...) based on their Asset ID
var playerDefinitions = await client.GetDefinitionsAsync(/* AssetId */);
foreach (ItemData itemData in playerDefinitions.ItemData)
{
// Contains the Definition ID for i.e. a TOTW card, which you can use to search for this specific card
var definitionId = itemData.ResourceId;
}
Gets the daily gift from the WebApp if available - This feature is currently not implemented for the Companion App.
var giftsListResponse = await futClient.GetGiftsListAsync();
foreach (var activeMessages in giftsListResponse.ActiveMessage)
{
await GetGiftAsync(/* GiftId */);
}
var purchasedItemsResponse = await client.GetPurchasedItemsAsync();
if (purchasedItemsResponse.ItemData.Count > 0)
{
foreach (ItemData item in purchasedItemsResponse.ItemData)
{
await client.SendItemToClubAsync(item);
}
}
Removes all sold items from the trade pile.
await client.RemoveSoldItemsFromTradePileAsync();
Get all available Packs
var storeResponse = await futClient.GetPackDetailsAsync();
Buy pack
// Identify the pack id
uint packId = 0;
foreach (var packDetail in storeResponse.Purchase)
{
if (packDetail.Coins == 7500)
{
packId = packDetail.Id;
}
}
// Buy Pack
var buyPackResponse = await futClient.BuyPackAsync(new PackDetails(packId));