Credit to https://github.com/trydis/FIFA-Ultimate-Team-Toolkit
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);
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));