TokenAirdropTransaction - Test specification
Description:
This test specification for TokenAirdropTransaction is to be one of many for testing the functionality of the Hedera SDKs. The SDK under test will use the language specific JSON-RPC server return responses back to the test driver.
Design:
Each test within the test specification is linked to one of the functions within TokenAirdropTransaction. Each function is tested with a mix of boundaries. The inputs for each test are a range of valid, minimum, maximum, negative and invalid values for the method. The expected response of a passed test can be a correct error response code or seen as the result of node queries. A successful transaction (the transaction reached consensus and was applied to state) can be determined by getting a TransactionReceipt
or TransactionRecord
, or can be determined by using queries such as AccountInfoQuery
or AccountBalanceQuery
and investigating for the required changes (creations, updates, etc.). The mirror node can also be used to determine if a transaction was successful via its rest API. Error codes are obtained from the response code proto files.
Transaction properties:
https://docs.hedera.com/hedera/sdks-and-apis/sdks/token-service/airdrop-a-token
TokenAirdrop protobufs:
https://github.com/hashgraph/hedera-protobufs/blob/main/services/token_airdrop.proto
Response codes:
https://github.com/hashgraph/hedera-protobufs/blob/main/services/response_code.proto
Mirror Node APIs:
https://docs.hedera.com/hedera/sdks-and-apis/rest-api
JSON-RPC API Endpoint Documentation
Method Name
airdropToken
Input Parameters
Parameter Name | Type | Required/Optional | Description/Notes |
---|---|---|---|
tokenTransfers | list<json object> | optional | The transfer information. The transfers here should ONLY be token or nft transfers. Should return INVALID_PARAMS otherwise. |
commonTransactionParams | json object | optional |
Output Parameters
Parameter Name | Type | Description/Notes |
---|---|---|
status | string | The status of the submitted TokenAirdropTransaction (from a TransactionReceipt ). |
Additional Notes
The tests contained in this specification will assume that valid sender and receiver accounts were already successfully created. <CREATED_SENDER_ID> will denote the ID of the sender account and <CREATED_SENDER_PRIVATE_KEY> will denote the private key of the account as a DER-encoded hex string. <CREATED_RECEIVER_ID> will the denote the ID of the receiver account, and <CREATED_RECEIVER_PRIVATE_KEY> will denote the private key of the account as a DER-encoded hex string. Tests will assume a valid token has already been created. <CREATED_TOKEN_ID> will denote the ID of this token. For tests that require NFTs, they will assume one valid NFT was minted. <NFT_SERIAL_NUMBER> will denote the serial number of the minted NFT. For tests that require decimals, they will assume a valid token was created with two decimals. For tests that require an approval, they will assume another account has been created and an allowance has been approved for that account. <CREATED_ALLOWANCED_ID> will denote the ID of the allowanced account, and <CREATED_ALLOWANCED_PRIVATE_KEY> will denote the private key of the account as a DER-encoded hex string.
Function Tests
AddTokenTransfer:
- Airdrop fungible tokens from an account to another account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Airdrops an amount of fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
2 | Airdrops an amount of fungible token from a sender account that doesn't exist to a receiver account | tokenTransfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
3 | Airdrops an amount of fungible token from an empty sender account to a receiver account | tokenTransfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The airdrop fails with an SDK internal error. | N |
4 | Airdrops an amount of fungible token from a sender account to a receiver account that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
5 | Airdrops an amount of fungible token from a sender account to an empty receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The airdrop fails with an SDK internal error. | N |
6 | Airdrops an amount of fungible token from a sender account to a deleted receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
7 | Airdrops an amount of fungible token that doesn't exist from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_TOKEN_ID response code from the network. | N |
8 | Airdrops an amount of fungible token that is empty from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
9 | Airdrops an amount of fungible token that is deleted from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_WAS_DELETED response code from the network. | N |
10 | Airdrops an amount of NFT from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | N |
11 | Airdrops 0 fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds and the spender and receiver accounts have the same balance as before. | N |
12 | Airdrops an amount of fungible token from a sender account to a receiver account without signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
13 | Airdrops an amount of fungible token from a sender account to nowhere | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | N |
14 | Airdrops an amount of fungible token that is greater than the sender balance from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INSUFFICIENT_TOKEN_BALANCE response code from the network. | N |
15 | Airdrops an amount of fungible token from a sender account to a receiver account that requires a signature to receive | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
16 | Airdrops an amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
17 | Airdrops an amount of fungible token from a sender account to itself | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an EMPTY_TOKEN_TRANSFER_BODY response code from the network. | N |
18 | Airdrops an amount of fungible token from a frozen sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
19 | Airdrops an amount of fungible token from a sender account to a frozen receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
20 | Airdrops an amount of paused fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_IS_PAUSED response code from the network. | N |
21 | Airdrops an amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
22 | Airdrops an amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and an airdrop is created and stored on the network. | N |
23 | Airdrops an amount of fungible token with an inclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
24 | Airdrops an amount of fungible token with an exclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
25 | Airdrops an amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | N |
26 | Airdrops an amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | N |
27 | Airdrops an amount of fungible token from several sender accounts to one receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver account has the total amount credited to its balance. | N |
28 | Airdrops an amount of fungible token from several sender accounts to one receiver account with a sender that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
29 | Airdrops an amount of fungible token from several sender accounts to one receiver account with a sender that is empty | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
30 | Airdrops an amount of fungible token from several sender accounts to one receiver account with a sender that is deleted | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
31 | Airdrops an amount of fungible token from several sender accounts to one receiver account with one not signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
32 | Airdrops an amount of fungible token from several sender accounts to one receiver account with the amounts not adding up | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | N |
33 | Airdrops an amount of fungible token from several sender accounts to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, and three airdrops are created and stored on the network. | N |
34 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | N |
35 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
36 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is empty | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
37 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is deleted | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
38 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that has no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, the two associated receivers have the amounts credited to their balance, and one airdrop is created and stored on the network. | N |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "airdropToken",
"params": {
"tokenTransfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100"
}
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddNftTransfer:
- Airdrops NFTs from an account to another account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Airdrops an NFT from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | N |
2 | Airdrops an NFT from a sender account that doesn't exist to a receiver account | tokenTransfers=[{nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
3 | Airdrops an NFT from an empty sender account to a receiver account | tokenTransfers=[{nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}] | The airdrop fails with an SDK internal error. | N |
4 | Airdrops an NFT from a sender account to a receiver account that doesn't exist | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
5 | Airdrops an NFT from a sender account to an empty receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
6 | Airdrops an NFT from a sender account to a deleted receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<DELETED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
7 | Airdrops an NFT that doesn't exist from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="123.456.789", nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_TOKEN_ID response code from the network. | N |
8 | Airdrops an NFT that is empty from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="", nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
9 | Airdrops an NFT that is deleted from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<DELETED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_WAS_DELETED response code from the network. | N |
10 | Airdrops an NFT with an invalid serial number from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber="1000000"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_NFT_ID response code from the network. | N |
11 | Airdrops an amount of fungible tokens from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_FUNGIBLE_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | N |
12 | Airdrops an NFT from a sender account to a receiver account without signing | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
13 | Airdrops an NFT from a sender account that doesn't possess the NFT to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an SENDER_DOES_NOT_OWN_NFT_SERIAL_NO response code from the network. | N |
14 | Airdrops an NFT from a sender account to a receiver account that requires a signature to receive | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | N |
15 | Airdrops an NFT from a sender account to a receiver account that requires a signature to receive but doesn't sign | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
16 | Airdrops an NFT from a sender account to itself | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_SENDER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_REPEATED_IN_ACCOUNT_AMOUNTS response code from the network. | N |
17 | Airdrops an NFT from a frozen sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
18 | Airdrops an NFT from a sender account to a frozen receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
19 | Airdrops a paused NFT token from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_IS_PAUSED response code from the network. | N |
20 | Airdrops an NFT from a sender account to an unassociated receiver account with unlimited automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer has the NFT, and the receiver account has the NFT. | N |
21 | Airdrops an NFT from a sender account to an unassociated receiver account with no automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer has the NFT, and an airdrop is created on the network. | N |
22 | Airdrops an NFT with a royalty fee from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}, {hbar.accountId=<CREATED_SENDER_ACCOUNT_ID>, hbar.amount=<NEGATED_FEE_AMOUNT>}, {hbar.accountId=<CREATED_RECEIVER_ACCOUNT_ID>, hbar.amount=<FEE_AMOUNT>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_AIRDROP_WITH_FALLBACK_ROYALTY response code from the network. | N |
23 | Airdrops NFTs from several sender accounts to one receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts no longer have the NFTs, and the receiver account now has the NFTs. | N |
24 | Airdrops NFTs from several sender accounts to one receiver account with a sender that doesn't exist | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
25 | Airdrops NFTs from several sender accounts to one receiver account with a sender that is empty | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
26 | Airdrops NFTs from several sender accounts to one receiver account with a sender that is deleted | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<DELETED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
27 | Airdrops NFTs from several sender accounts to one receiver account with one not signing | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
28 | Airdrops NFTs from several sender accounts to one receiver account with an invalid serial number | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<INVALID_NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_NFT_ID response code from the network. | N |
29 | Airdrops NFTs from several sender accounts to an unassociated receiver account with no automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts no longer have the NFTs, and three airdrops are created and stored on the network. | N |
30 | Airdrops NFTs from several sender accounts to several receiver accounts | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts no longer have the NFTs, and the receiver accounts have the NFTs. | N |
31 | Airdrops NFTs from several sender accounts to several receiver accounts with a receiver that doesn't exist | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
32 | Airdrops NFTs from several sender accounts to several receiver accounts with a receiver that is empty | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
33 | Airdrops NFTs from several sender accounts to several receiver accounts with a receiver that is deleted | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<DELETED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
34 | Airdrops NFTs from several sender accounts to several receiver accounts with a receiver that has no automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, the two associated receivers have the amounts credited to their balance, and one airdrop is created and stored on the network. | N |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "airdropToken",
"params": {
"tokenTransfers": [
{
"nft": {
"senderAccountId": "0.0.53232",
"receiverAccountId": "0.0.6491",
"tokenId": "0.0.9931",
"serialNumber": "4"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddTokenTransferWithDecimals:
- Airdrops fungible tokens with decimals from an account to another account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Airdrops an amount of fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
2 | Airdrops an amount of fungible token from a sender account that doesn't exist to a receiver account | tokenTransfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
3 | Airdrops an amount of fungible token from an empty sender account to a receiver account | tokenTransfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The airdrop fails with an SDK internal error. | N |
4 | Airdrops an amount of fungible token from a sender account to a receiver account that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
5 | Airdrops an amount of fungible token from a sender account to an empty receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The airdrop fails with an SDK internal error. | N |
6 | Airdrops an amount of fungible token from a sender account to a deleted receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
7 | Airdrops an amount of fungible token that doesn't exist from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_TOKEN_ID response code from the network. | N |
8 | Airdrops an amount of fungible token that is empty from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
9 | Airdrops an amount of fungible token that is deleted from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_WAS_DELETED response code from the network. | N |
10 | Airdrops an amount of NFT from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | N |
11 | Airdrops 0 fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds and the spender and receiver accounts have the same balance as before. | N |
12 | Airdrops an amount of fungible token from a sender account to a receiver account with the incorrect decimals | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an UNEXPECTED_TOKEN_DECIMALS response code from the network. | N |
13 | Airdrops an amount of fungible token from a sender account to a receiver account without signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
14 | Airdrops an amount of fungible token from a sender account to nowhere | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TRANSFERS_NOT_ZERO_SUM_FOR_TOKEN response code from the network. | N |
15 | Airdrops an amount of fungible token that is greater than the sender balance from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INSUFFICIENT_TOKEN_BALANCE response code from the network. | N |
16 | Airdrops an amount of fungible token from a sender account to a receiver account that requires a signature to receive | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
17 | Airdrops an amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
18 | Airdrops an amount of fungible token from a sender account to itself | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an EMPTY_TOKEN_TRANSFER_BODY response code from the network. | N |
19 | Airdrops an amount of fungible token from a frozen sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
20 | Airdrops an amount of fungible token from a sender account to a frozen receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
21 | Airdrops an amount of paused fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_IS_PAUSED response code from the network. | N |
22 | Airdrops an amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
23 | Airdrops an amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and an airdrop is created on the network. | N |
24 | Airdrops an amount of fungible token with an inclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
25 | Airdrops an amount of fungible token with an exclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
26 | Airdrops an amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | N |
27 | Airdrops an amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | N |
28 | Airdrops an amount of fungible token from several sender accounts to one receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver account has the total amount credited to its balance. | N |
29 | Airdrops an amount of fungible token from several sender accounts to one receiver account with a sender that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
30 | Airdrops an amount of fungible token from several sender accounts to one receiver account with a sender that is empty | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
31 | Airdrops an amount of fungible token from several sender accounts to one receiver account with a sender that is deleted | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
32 | Airdrops an amount of fungible token from several sender accounts to one receiver account with one not signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
33 | Airdrops an amount of fungible token from several sender accounts to one receiver account with the amounts not adding up | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | N |
34 | Airdrops an amount of fungible token from several sender accounts to one receiver account with one incorrect decimals amount | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=3}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an UNEXPECTED_TOKEN_DECIMALS response code from the network. | N |
35 | Airdrops an amount of fungible token from several sender accounts to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, and three airdrops are created and stored on the network. | N |
36 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | N |
37 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
38 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is empty | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
39 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is deleted | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
40 | Airdrops an amount of fungible token from several sender accounts to several receiver accounts with a receiver that has no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, the two associated receivers have the amounts credited to their balance, and one airdrop is created and stored on the network. | N |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "airdropToken",
"params": {
"tokenTransfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100",
"decimals": 2
}
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100",
"decimals": 2
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddApprovedTokenTransfer:
- Airdrop fungible tokens from an account to another account via an approved account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Airdrops an approved amount of fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
2 | Airdrops an approved amount of fungible token from a sender account that doesn't exist to a receiver account | tokenTransfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
3 | Airdrops an approved amount of fungible token from an empty sender account to a receiver account | tokenTransfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The airdrop fails with an SDK internal error. | N |
4 | Airdrops an approved amount of fungible token from a sender account to a receiver account that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
5 | Airdrops an approved amount of fungible token from a sender account to an empty receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The airdrop fails with an SDK internal error. | N |
6 | Airdrops an approved amount of fungible token from a sender account to a deleted receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
7 | Airdrops an approved amount of fungible token that doesn't exist from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_TOKEN_ID response code from the network. | N |
8 | Airdrops an approved amount of fungible token that is empty from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
9 | Airdrops an approved amount of fungible token that is deleted from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_WAS_DELETED response code from the network. | N |
10 | Airdrops an approved amount of NFT from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | N |
11 | Airdrops an approved 0 fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds and the spender and receiver accounts have the same balance as before. | N |
12 | Airdrops an approved amount of fungible token from a sender account to a receiver account without signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
13 | Airdrops an approved amount of fungible token from a sender account to nowhere | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TRANSFERS_NOT_ZERO_SUM_FOR_TOKEN response code from the network. | N |
14 | Airdrops an approved amount of fungible token that is greater than the allowanced amount from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an AMOUNT_EXCEEDS_ALLOWANCE response code from the network. | N |
15 | Airdrops an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
16 | Airdrops an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
17 | Airdrops an approved amount of fungible token from a sender account to itself | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds and nothing happens. | N |
18 | Airdrops an approved amount of fungible token from a frozen sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
19 | Airdrops an approved amount of fungible token from a sender account to a frozen receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
20 | Airdrops an approved amount of paused fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_IS_PAUSED response code from the network. | N |
21 | Airdrops an approved amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
22 | Airdrops an approved amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and an airdrop is created on the network. | N |
23 | Airdrops an approved amount of fungible token with an inclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
24 | Airdrops an approved amount of fungible token with an exclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
25 | Airdrops an approved amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | N |
26 | Airdrops an approved amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an AMOUNT_EXCEEDS_ALLOWANCE response code from the network. | N |
27 | Airdrops an approved amount of fungible token from a sender account to a receiver account without the allowanced account paying the fee | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | N |
28 | Airdrops an approved amount of fungible token from a sender account to a receiver account without using an allowanced account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | N |
29 | Airdrops an approved amount of fungible token from a sender account to a receiver account with an account that doesn't have an allowance | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<VALID_ACCOUNT_ID>, commonTransactionParams.signers=[<VALID_ACCOUNT_PRIVATE_KEY>] | The airdrop fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | N |
30 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver account has the total amount credited to its balance. | N |
31 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that doesn't exist | tokenTransfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
32 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is empty | tokenTransfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
33 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is deleted | tokenTransfers=[{token.accountId=<DELETED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
34 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender not signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
35 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with the amounts not adding up | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | N |
33 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, and an airdrop is created on the network. | N |
36 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | N |
37 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
38 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is empty | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
39 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is deleted | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
40 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that has no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, the two associated receivers have the amounts credited to their balance, and one airdrop is created and stored on the network. | N |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "airdropToken",
"params": {
"tokenTransfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100"
},
"approved": true
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddApprovedNftTransfer:
- Airdrops NFTs from an account to another account via an approved account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Airdrops an approved NFT from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | N |
2 | Airdrops an approved NFT from a sender account that doesn't exist to a receiver account | tokenTransfers=[{nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
3 | Airdrops an approved NFT from an empty sender account to a receiver account | tokenTransfers=[{nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}] | The airdrop fails with an SDK internal error. | N |
4 | Airdrops an approved NFT from a sender account to a receiver account that doesn't exist | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
5 | Airdrops an approved NFT from a sender account to an empty receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
6 | Airdrops an approved NFT from a sender account to a deleted receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<DELETED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
7 | Airdrops an approved NFT that doesn't exist from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="123.456.789", nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_TOKEN_ID response code from the network. | N |
8 | Airdrops an approved NFT that is empty from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="", nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
9 | Airdrops an approved NFT that is deleted from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<DELETED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_WAS_DELETED response code from the network. | N |
10 | Airdrops an approved NFT with an invalid serial number from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber="1000000", approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_TOKEN_NFT_SERIAL_NUMBER response code from the network. | N |
11 | Airdrops an approved amount of fungible tokens from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_FUNGIBLE_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | N |
12 | Airdrops an approved NFT from a sender account to a receiver account without signing | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
13 | Airdrops an approved NFT from a sender account that doesn't possess the NFT to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SENDER_DOES_NOT_OWN_NFT_SERIAL_NO response code from the network. | N |
14 | Airdrops an approved NFT from a sender account to a receiver account that requires a signature to receive | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | N |
15 | Airdrops an approved NFT from a sender account to a receiver account that requires a signature to receive but doesn't sign | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
16 | Airdrops an approved NFT from a sender account to itself | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_SENDER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_REPEATED_IN_ACCOUNT_AMOUNTS response code from the network. | N |
17 | Airdrops an approved NFT from a frozen sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
18 | Airdrops an approved NFT from a sender account to a frozen receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
19 | Airdrops an approved paused NFT token from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_IS_PAUSED response code from the network. | N |
20 | Airdrops an approved NFT from a sender account to an unassociated receiver account with unlimited automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer has the NFT, and the receiver account now has the NFT. | N |
21 | Airdrops an approved NFT from a sender account to an unassociated receiver account with no automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an NO_REMAINING_AUTOMATIC_ASSOCIATIONS response code from the network. | N |
22 | Airdrops an approved NFT with a royalty fee from a sender account to a receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account no longer has the NFT and the fee amount debited from its balance, the receiver account has the NFT, and the fee collector account has the fee amount credited to its balance. | N |
23 | Airdrops an approved NFT with a fee from a sender account to a receiver account with the fee collector not associated | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | N |
24 | Airdrops an approved NFT with a fee from a sender account to a receiver account with not enough token balance to pay the fee | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | N |
25 | Airdrops an approved NFT from a sender account to a receiver account without the allowanced account paying the fee | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | N |
26 | Airdrops an approved NFT from a sender account to a receiver account without using an allowanced account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | N |
27 | Airdrops an approved NFT from a sender account to a receiver account with an account that doesn't have an allowance | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<VALID_ACCOUNT_ID>, commonTransactionParams.signers=[<VALID_ACCOUNT_PRIVATE_KEY>] | The airdrop fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | N |
28 | Airdrops an approved NFT from a sender account and other sender accounts to one receiver account | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts no longer have the NFTs, and the receiver account now has the NFTs. | N |
29 | Airdrops an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender that doesn't exist | tokenTransfers=[{nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
30 | Airdrops an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender that is empty | tokenTransfers=[{nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
31 | Airdrops an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender that is deleted | tokenTransfers=[{nft.senderAccountId=<DELETED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<DELETED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
32 | Airdrops an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender not signing | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
33 | Airdrops an approved NFT from a sender account and other sender accounts to one receiver account with an invalid serial number | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<INVALID_NFT_SERIAL_NUMBER>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_NFT_ID response code from the network. | N |
34 | Airdrops an approved NFT from a sender account and other sender accounts to an unassociated receiver account with no automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts no longer have the NFTs, and three airdrops are created and stored on the network. | N |
35 | Airdrops an approved NFT from a sender account and other sender accounts to several receiver accounts | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts no longer have the NFTs, and the receiver accounts have the NFTs. | N |
36 | Airdrops an approved NFT from a sender account and other sender accounts to several receiver accounts with a receiver that doesn't exist | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
37 | Airdrops an approved NFT from a sender account and other sender accounts to several receiver accounts with a receiver that is empty | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
38 | Airdrops an approved NFT from a sender account and other sender accounts to several receiver accounts with a receiver that is deleted | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<DELETED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
39 | Airdrops an approved NFT from a sender account and other sender accounts to several receiver accounts with a receiver that has no automatic token associations | tokenTransfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts no longer have the NFTs, the two associated receivers have the NFTs, and one airdrop is created and stored on the network. | N |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "airdropToken",
"params": {
"tokenTransfers": [
{
"nft": {
"senderAccountId": "0.0.53232",
"receiverAccountId": "0.0.6491",
"tokenId": "0.0.9931",
"serialNumber": "4"
},
"approved": true
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddApprovedTokenTransferWithDecimals:
- Airdrops fungible tokens with decimals from an account to another account via an approved account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Airdrops an approved amount of fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
2 | Airdrops an approved amount of fungible token from a sender account that doesn't exist to a receiver account | tokenTransfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
3 | Airdrops an approved amount of fungible token from an empty sender account to a receiver account | tokenTransfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The airdrop fails with an SDK internal error. | N |
4 | Airdrops an approved amount of fungible token from a sender account to a receiver account that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
5 | Airdrops an approved amount of fungible token from a sender account to an empty receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
6 | Airdrops an approved amount of fungible token from a sender account to a deleted receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
7 | Airdrops an approved amount of fungible token that doesn't exist from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_TOKEN_ID response code from the network. | N |
8 | Airdrops an approved amount of fungible token that is empty from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
9 | Airdrops an approved amount of fungible token that is deleted from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_WAS_DELETED response code from the network. | N |
10 | Airdrops an approved amount of NFT from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | N |
11 | Airdrops an approved 0 fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds and the spender and receiver accounts have the same balance as before. | N |
12 | Airdrops an approved amount of fungible token from a sender account to a receiver account with the incorrect decimals | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an UNEXPECTED_TOKEN_DECIMALS response code from the network. | N |
13 | Airdrops an approved amount of fungible token from a sender account to a receiver account without signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
14 | Airdrops an approved amount of fungible token from a sender account to nowhere | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | N |
15 | Airdrops an approved amount of fungible token that is greater than the allowanced amount from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an AMOUNT_EXCEEDS_ALLOWANCE response code from the network. | N |
16 | Airdrops an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
17 | Airdrops an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
18 | Airdrops an approved amount of fungible token from a sender account to itself | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds and nothing happens. | N |
19 | Airdrops an approved amount of fungible token from a frozen sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
20 | Airdrops an approved amount of fungible token from a sender account to a frozen receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | N |
21 | Airdrops an approved amount of paused fungible token from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_IS_PAUSED response code from the network. | N |
22 | Airdrops an approved amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
23 | Airdrops an approved amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and an airdrop is created on the network. | N |
24 | Airdrops an approved amount of fungible token with an inclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
25 | Airdrops an approved amount of fungible token with an exclusive fee from a sender account to a receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | N |
26 | Airdrops an approved amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | N |
27 | Airdrops an approved amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | N |
28 | Airdrops an approved amount of fungible token from a sender account to a receiver account without the allowanced account paying the fee | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
29 | Airdrops an approved amount of fungible token from a sender account to a receiver account without using an allowanced account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The airdrop succeeds, the spender account has the amount airdropped debited from its balance, and the receiver account has the amount credited to its balance. | N |
30 | Airdrops an approved amount of fungible token from a sender account to a receiver account with an account that doesn't have an allowance | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<VALID_ACCOUNT_ID>, commonTransactionParams.signers=[<VALID_ACCOUNT_PRIVATE_KEY>] | The airdrop fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | N |
31 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver account has the total amount credited to its balance. | N |
32 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that doesn't exist | tokenTransfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
33 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is empty | tokenTransfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
34 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is deleted | tokenTransfers=[{token.accountId=<DELETED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
35 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender not signing | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_SIGNATURE response code from the network. | N |
36 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to one receiver account with the amounts not adding up | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | N |
37 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to an unassociated receiver account with no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, and three airdrops are created and stored on the network. | N |
38 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | N |
39 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that doesn't exist | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an INVALID_ACCOUNT_ID response code from the network. | N |
40 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is empty | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an SDK internal error. | N |
41 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is deleted | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop fails with an ACCOUNT_DELETED response code from the network. | N |
42 | Airdrops an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that has no automatic token associations | tokenTransfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The airdrop succeeds, the spender accounts have the amount airdropped debited from their balance, the two associated receivers have the amounts credited to their balance, and one airdrop is created and stored on the network. | N |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "airdropToken",
"params": {
"tokenTransfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100",
"decimals": 2
},
"approved": true
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100",
"decimals": 2
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}