Everything in this repo has been coded from scratch during the Polkadot Global Series hackathon (3 – 23 July 2023).
This project is production ready.
Easy to use tool for querying indexed NFT data.
This is a c# implementation of Uniquery with many improvements on top.
- Overall structure has been improved:
- confusing method
getClient("name")
has been replaced with static functions. - All types have been converted to native c# classes
- confusing method
Uniquery.Universal
- very cozy way to query data from multiple endpoints at the same time.- Inclusion of new Networks/NftStandards, that are missing in the original uniquery: Acala, Astar, Shiden, Unique, Quartz, Opal
- More flexible parameters
Nuget package: https://www.nuget.org/packages/Uniquery/
dotnet add package Uniquery
- Rmrk
- RmrkV2
- Basilisk
- Glmr
- Movr
- Unique
- Quartz
- Opal
- Acala (OnFinality BETA)
- Astar (OnFinality BETA)
- Shiden (OnFinality BETA)
Originally, I just wanted query NFT data to display them in PlutoWallet. Afterwards, I received request from Kodadot to make a full c# implementation, hence, here it is.
This tool will be useful to many people and will significantly simplify the querying of NFT data.
Without Uniquery you would have to write something like this:
query itemListByCollectionIdList {
nft: nftEntities(where: { collection: { id_eq: "7EA1DCF47E98A25067-CAVE" }}) {
id
metadata
currentOwner
issuer
}
}
With Uniquery you can write this:
string id = "7EA1DCF47E98A25067-CAVE";
var nfts = await Uniquery.Rmrk.NftListByCollectionId(id);
One of the major improvements over the original Kodadot/Uniquery js package is the inclusion of
Uniquery.Universal
Without Uniquery.Universal
you would have to write something like this:
string address = "5HGuhwGJZC5zvWQm1kGpobJxwAv6bUtKyLGjKL7m2YaJtmDQ";
List<Nft> nfts = new List<Nft>();
nfts.AddRange(await Rmrk.NftListByOwner(address, limit, offset, orderBy, forSale, eventsLimit));
nfts.AddRange(await RmrkV2.NftListByOwner(address, limit, offset, orderBy, forSale, eventsLimit));
nfts.AddRange(await Unique.NftListByOwner(address, limit, offset));
nfts.AddRange(await Quartz.NftListByOwner(address, limit, offset));
nfts.AddRange(await Opal.NftListByOwner(address, limit, offset));
nfts.AddRange(await Basilisk.NftListByOwner(address, limit, offset, orderBy, forSale, eventsLimit));
nfts.AddRange(await Glmr.NftListByOwner(address, limit, offset, orderBy, forSale, eventsLimit));
nfts.AddRange(await Movr.NftListByOwner(address, limit, offset, orderBy, forSale, eventsLimit));
nfts.AddRange(await Acala.NftListByOwner(address, limit, offset));
nfts.AddRange(await Astar.NftListByOwner(address, limit, offset));
nfts.AddRange(await Shiden.NftListByOwner(address, limit, offset));
With Uniquery.Universal
you can write this:
string address = "5HGuhwGJZC5zvWQm1kGpobJxwAv6bUtKyLGjKL7m2YaJtmDQ";
List<Nft> nfts = Uniquery.Universal.NftListByOwner(address);
- CollectionById - Returns collection by id.
- CollectionListByIssuer - returns collections where issuer (creator) is equal to provided address
- CollectionListByName - returns collections where name contains provided name
- CollectionListByOwner - returns collections where owner is equal to provided address
- NftById - returns NFT by id
- NftListByCollectionId - returns NFTs where collection id is equal to provided id
- NftListByName - returns NFTs by name
- NftListByMetadataId - returns NFTs where metadata match Nft metadata id
- NftListByCollectionMetadataId - returns NFTs where metadata match Collection metadata id
- NftListByOwner - returns NFTs owned by the address
- NftList - returns NFTs
- EventList - returns all events
- EventListByAddress - returns events by address
- EventListByCollectionId - returns events by collection id
- EventListByInteraction - returns events by interaction
- EventListByNftId - returns events by nft id
- <custom_parameter> = custom filter parameter
- limit = number of returned items, Default = 25
- offset = offset of index of the returned items, Default = 0
- orderBy = ordering of the returned items, Default = <time_desc>
In-code documentation with wispering and examples is also included:
- C#, graphql
- Subsquid api
- Unique network api
- OnFinality Unified NFT api (BETA)
- https://github.com/kodadot/uniquery - This project is a c# implementation of this original javascript package.