Wallets
Operations to help you create and manage wallets.
Please note: This is an introductory reference
For the most up-to-date information, refer to the GraphQL Playground and Apollo API Reference.
🚧 The information provided in this section cannot be programmatically updated and may be subject to inconsistencies over time.
Core Endpoints
- Testnet:
http://platform.canary.enjin.io/graphql
- Mainnet:
http://platform.enjin.io/graphql
This is a detailed reference guide that explains the most commonly used operations.
Queries
GetWallet
The GetWallet
query provides detailed information about a specific wallet. This query retrieves various details related to the wallet, including account information, balances, associated collections and tokens, approvals, and transaction history.
query GetWallet {
GetWallet(
id: 5
) {
id
account {
publicKey
address
}
externalId
managed
network
nonce
balances {
free
reserved
miscFrozen
feeFrozen
}
collectionAccounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
accountCount
isFrozen
collection {
collectionId
}
wallet {
account {
publicKey
address
}
}
approvals {
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
}
tokenAccounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
balance
reservedBalance
isFrozen
collection {
collectionId
}
wallet {
account {
publicKey
address
}
}
token {
tokenId
}
approvals {
amount
expiration
wallet {
account {
publicKey
address
}
}
}
namedReserves {
pallet
amount
}
}
}
}
collectionAccountApprovals {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
tokenAccountApprovals {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
amount
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
transactions {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
id
transactionId
transactionHash
method
state
encodedData
events {
edges {
cursor
node {
phase
lookUp
moduleId
eventId
params {
type
value
}
}
}
totalCount
pageInfo {
hasPreviousPage
hasNextPage
startCursor
endCursor
}
}
wallet {
account {
publicKey
address
}
}
}
}
}
ownedCollections {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
collectionId
maxTokenCount
maxTokenSupply
forceSingleMint
network
owner {
account {
publicKey
address
}
}
attributes {
key
value
}
accounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
accountCount
isFrozen
collection {
collectionId
}
wallet {
account {
publicKey
address
}
}
approvals {
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
}
tokens {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
tokenId
supply
cap
capSupply
isFrozen
minimumBalance
unitPrice
mintDeposit
attributeCount
collection {
collectionId
}
attributes {
key
value
}
accounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
balance
}
}
}
metadata
nonFungible
}
}
}
}
}
}
}
}
{
"data": {
"GetWallet": {
"id": 5,
"account": {
"publicKey": "0x1edb67183fcd7846e717b16a37ae4326c7814090c748b5698a3b6a9e946a9f37",
"address": "cxK83gJm3F8LV4Kh1YjA6KaSgJev1RgatHrum4Ap4AFcHSrNe"
},
"externalId": null,
"managed": false,
"network": "developer",
"nonce": 0,
"balances": {
"free": "0",
"reserved": "0",
"miscFrozen": "0",
"feeFrozen": "0"
},
"collectionAccounts": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"tokenAccounts": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"collectionAccountApprovals": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"tokenAccountApprovals": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"transactions": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"ownedCollections": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
}
}
}
}
Use Case:
As a developer, you can use the GetWallet
query for various purposes, including:
- Token Gating:Enhancing the utility of tokens in your users' wallets, commonly referred to as token gating content. This allows for controlled access to specific content based on token ownership.
- Transaction Auditing: Audit historical transactions associated with the wallet to ensure compliance and security.
- Account Management: Manage and review collection and token accounts associated with the wallet.
- Asset Management: Understand the wallet's interaction with various collections and tokens.
By utilizing the GetWallet
query, you gain insight into the detailed attributes and activities of a wallet, enabling you to make informed decisions, track transactions, and manage assets effectively.
GetWallets
The GetWallets
query allows you to retrieve an array of wallets. You have the option to apply filters based on parameters such as external IDs, verification IDs, or account addresses to narrow down the results. This query is useful for applications that need to access and display user wallet information, including transaction history and asset balances.
This query might return items in multiple pages using Connections
To learn how to use GraphQL cursors for pagination, head to Using the API --> Pagination.
query GetWallets {
GetWallets(
ids: [5]
) {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
id
account {
publicKey
address
}
externalId
managed
network
nonce
balances {
free
reserved
miscFrozen
feeFrozen
}
collectionAccounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
accountCount
isFrozen
collection {
collectionId
}
wallet {
account {
publicKey
address
}
}
approvals {
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
}
tokenAccounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
balance
reservedBalance
isFrozen
collection {
collectionId
}
wallet {
account {
publicKey
address
}
}
token {
tokenId
}
approvals {
amount
expiration
wallet {
account {
publicKey
address
}
}
}
namedReserves {
pallet
amount
}
}
}
}
collectionAccountApprovals {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
tokenAccountApprovals {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
amount
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
transactions {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
id
transactionId
transactionHash
method
state
encodedData
events {
edges {
cursor
node {
phase
lookUp
moduleId
eventId
params {
type
value
}
}
}
totalCount
pageInfo {
hasPreviousPage
hasNextPage
startCursor
endCursor
}
}
wallet {
account {
publicKey
address
}
}
}
}
}
ownedCollections {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
collectionId
maxTokenCount
maxTokenSupply
forceSingleMint
network
owner {
account {
publicKey
address
}
}
attributes {
key
value
}
accounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
accountCount
isFrozen
collection {
collectionId
}
wallet {
account {
publicKey
address
}
}
approvals {
expiration
wallet {
account {
publicKey
address
}
}
}
}
}
}
tokens {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
tokenId
supply
cap
capSupply
isFrozen
minimumBalance
unitPrice
mintDeposit
attributeCount
collection {
collectionId
}
attributes {
key
value
}
accounts {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
balance
}
}
}
metadata
nonFungible
}
}
}
}
}
}
}
}
}
}
{
"data": {
"GetWallets": {
"totalCount": 1,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": [
{
"cursor": "eyJpZCI6NSwiX3BvaW50c1RvTmV4dEl0ZW1zIjp0cnVlfQ",
"node": {
"id": 5,
"account": {
"publicKey": "0x1edb67183fcd7846e717b16a37ae4326c7814090c748b5698a3b6a9e946a9f37",
"address": "cxK83gJm3F8LV4Kh1YjA6KaSgJev1RgatHrum4Ap4AFcHSrNe"
},
"externalId": null,
"managed": false,
"network": "developer",
"nonce": 0,
"balances": {
"free": "0",
"reserved": "0",
"miscFrozen": "0",
"feeFrozen": "0"
},
"collectionAccounts": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"tokenAccounts": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"collectionAccountApprovals": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"tokenAccountApprovals": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"transactions": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
},
"ownedCollections": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
}
}
}
]
}
}
}
Use Case:
As a developer, you can use the GetWallets
query for various purposes, including:
- Wallet Listing: Retrieve a list of wallets based on specific criteria.
- User Wallet Overview: Display a user's wallet information, including balances and transaction history.
- Asset Management: Manage and monitor assets associated with wallets, including collections and tokens.
- Data Analysis: Analyze wallet-related data to gain insights into user behavior and asset distribution.
By utilizing the GetWallets
query, you can efficiently access and manage wallet-related data, enabling you to create user-friendly applications and perform in-depth analysis of wallet activities.
GetAccountVerified
The GetAccountVerified
query allows you to check the verification status of a specific account. It is used to determine whether an account is verified. The query takes a verificationId
as a parameter, which serves as a unique identifier for the verification process.
query GetAccountVerified {
GetAccountVerified(
verificationId: "0x684768963b832de4f593da456ed3d099c2b8c580383492d3b0e735c4d1dfe740"
) {
verified
account {
publicKey
address
}
}
}
{
"data": {
"GetAccountVerified": {
"verified": true,
"account": {
"publicKey": "0x8b4cd0e710d3cd14b3a407cac1326dc6c8ac68b4ff22f8d239cbd460d831d608",
"address": "cxMaEYKfjJQrQQZ4cmXUjRqfPNRkRUSgsESMiEeyP6pzsBm4V"
}
}
}
}
Use Case:
- Verification Status Check: You can use the
GetAccountVerified
query to check whether a specific account has been verified. This is useful for verifying the authenticity of accounts and their associated data. - Authentication and Access Control: Knowing the verification status of an account can be used for access control or authentication purposes within your application. For example, you can grant certain privileges or access levels based on whether an account is verified.
- Integration with Verification Services: This query can be integrated with verification services to confirm the identity of users or entities.
To use this query, you provide the verificationId
parameter with the unique identifier of the account you want to check. The response will include whether the account is verified (true
or false
) and additional account information for reference.
RequestAccount
The RequestAccount
query is designed for generating a QR code that users can scan to provide their wallet account information. It facilitates user authentication and linking wallet accounts to a service or application. The generated QR code contains encoded data that, when scanned, triggers a specific action, such as authentication or the transfer of wallet details.
query RequestAccount {
RequestAccount(
callback: "https://enjin.io"
) {
qrCode
verificationId
}
}
{
"data": {
"RequestAccount": {
"qrCode": "https://chart.googleapis.com/chart?chs=512x512&cht=qr&chl=https://deeplink.wallet.enjin.io/proof/0xa144ac5ef19bf4e3523cca27d9f998781c64692ea68843602da0dc95f6c4aa70:A2010LJAJ:aHR0cHM6Ly9lbmppbi5pbw==",
"verificationId": "0xa144ac5ef19bf4e3523cca27d9f998781c64692ea68843602da0dc95f6c4aa70"
}
}
}
Use Case:
- User-Friendly Wallet Authentication: You can use the
RequestAccount
query to provide a user-friendly method for users to authenticate and link their wallet accounts to your service or application. - Secure Data Entry: By using QR codes, you reduce the risk of errors that may occur during manual entry of sensitive wallet data.
- Tracking and Verification: You can track and verify the status of the authentication process using the unique
verificationId
, enabling you to ensure that users successfully linked their wallets.
To implement this query, you need to specify the callback
parameter, which should be the URL where users will be redirected after scanning the QR code. Your system should be capable of generating QR codes and handling the callback process to complete the wallet authentication or linking workflow.
VerifyMessage
The VerifyMessage
query is used to verify the authenticity of a message by confirming that it was signed with a specific private key corresponding to the provided public key. This query is essential for ensuring the integrity and origin of messages in a secure communication or authentication process.
query VerifyMessage {
VerifyMessage(
message: "0x74657374"
signature: "0xbe32fc5fbe033ebb2dd94bcf0d06a52299042592006b0956cfd7606dea015b60f834d3b299172ad098e841efa3a61e9fb8e37a8912f85821eaf3df64f0e49083"
publicKey: "0xb0e3d2a901fe662e3f693704a599d4ec06da13b213f46e9ba479ba8e95dbfa61"
cryptoSignatureType: SR25519
)
}
{
"data": {
"VerifyMessage": true
}
}
Use Case:
- Message Authentication: You can use the
VerifyMessage
query to ensure the authenticity and integrity of messages exchanged between parties. This is crucial for secure communication, as it verifies that the message has not been tampered with and confirms the identity of the sender. - Secure Login: Utilize this query for message verification to confirm wallet ownership, authenticate user identity, and facilitate secure logins to games or applications.
- Cryptographic Security: It is essential for cryptographic security, as it ensures that messages are not susceptible to unauthorized modification or impersonation.
To use this query effectively, provide the necessary parameters: the original message, the cryptographic signature, the corresponding public key, and the type of cryptographic signature used. The response will inform you whether the message's signature is valid, helping you maintain the security and authenticity of your communications or authentication processes.
GetPendingWallets
The GetPendingWallets
query is used to retrieve an array of wallet accounts that have not yet undergone the verification process. This query is particularly useful for administrators and account management systems to identify and handle pending wallet accounts that require verification.
query GetPendingWallets {
GetPendingWallets {
totalCount
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
id
account {
publicKey
address
}
externalId
managed
network
}
}
}
}
{
"data": {
"GetPendingWallets": {
"totalCount": 0,
"pageInfo": {
"startCursor": "",
"endCursor": "",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": []
}
}
}
Use Case:
- Account Verification Management: You can use the
GetPendingWallets
query to manage the verification process of wallet accounts. By retrieving a list of pending wallets, you can prioritize and streamline the verification workflow. - Administrative Tasks: As an administrator, you can monitor and keep track of wallet accounts that require attention. This is essential for maintaining the security and integrity of your application.
- Security Audits: Use this query to perform security audits and identify accounts that need additional verification steps before they are allowed to transact or access certain features.
To utilize this query effectively, you do not need to provide any parameters. The response will contain all the relevant information about pending wallet accounts, allowing you to take appropriate actions to verify and manage these accounts within your system.
Updated 2 months ago