# Fungible token action

The `FTTokenAction` entity describes standard actions that can be performed on fungible tokens, such as mint, transfer, or burn. CSPR.cloud supports fungible tokens compatible with the [CEP-18](https://github.com/casper-ecosystem/cep18) Casper Network standard.

### Properties

The `FTTokenAction` entity has the following properties:

| Property                | Type         | Description                                                                                                                                      |
| ----------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `deploy_hash`           | `string(64)` | Deploy hash in which the token action occurred. First part of token action identifier, represented as a hexadecimal string                       |
| `block_height`          | `uint64`     | Height of the block in which the token action occurred.                                                                                          |
| `transform_idx`         | `int`        | ID of the transform in the deploy execution result containing performed token action in deploy execution. Second part of token action identifier |
| `contract_package_hash` | `string(64)` | Contract package hash of fungible token contract, represented as a hexadecimal string                                                            |
| `from_hash`             | `string(64)` | Action source account or contract hash, represented as a hexadecimal string                                                                      |
| `from_type`             | `uint8`      | Action source hash type: `0` for account, `1` for contract                                                                                       |
| `to_hash`               | `string(64)` | Action target account or contract hash, represented as a hexadecimal string                                                                      |
| `to_type`               | `uint8`      | Action target hash type: `0` for account, `1` for contract                                                                                       |
| `ft_action_type_id`     | `uint8`      | [Fungible token action type](https://docs.cspr.cloud/rest-api/fungible-token-action/get-token-action-types) type identifier                      |
| `amount`                | `string`     | Tokens amount value used during the token action                                                                                                 |
| `timestamp`             | `uint16`     | The timestamp of performed token action                                                                                                          |

**Example**

```json
{
  "amount": "37357",
  "contract_package_hash": "883238e99639bc7f5f7858398d0df94138c8ad89f76bdef7fac5fdd3df7f033a",
  "deploy_hash": "0005f1e53afa9799a66a389a90caab84ab3cbd000ab7741e55e09f80c75002b6",
  "block_height": 2404571,
  "from_hash": "f41cc7553d271e7ac70899ead4d3584c72ca2e119f2a86fbb4641ca95f3ba9e7",
  "from_type": 0,
  "ft_action_type_id": 2,
  "timestamp": "2023-02-09T19:16:21Z",
  "to_hash": "a5a9a804a383f3b0e131c85d471542af2c6d4ec57bab39182ba93dd7bd86f46c",
  "to_type": 1,
  "transform_idx": 67
}
```

## Optional properties

Depending on the endpoint some of the following optional properties may be included in the `FTTokenAction` entity:

| Property                        | Type                                                                                  | Description                                                       |
| ------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| `contract_package`              | [`ContractPackage`](https://docs.cspr.cloud/rest-api/contract-package)                | Fungible contract package                                         |
| `deploy`                        | [`Deploy`](https://docs.cspr.cloud/rest-api/deploy)                                   | Deploy in which the token action occurred                         |
| `from_public_key`               | `string(68)`                                                                          | Action source public key if it's an account                       |
| `to_public_key`                 | `string(68)`                                                                          | Action target public key if it's an account                       |
| `to_account_info`               | [`AccountInfo`](https://docs.cspr.cloud/rest-api/account-info)                        | Action source account info if it's an account                     |
| `from_account_info`             | [`AccountInfo`](https://docs.cspr.cloud/rest-api/account-info)                        | Action target account info if it's an account                     |
| `to_centralized_account_info`   | [`CentralizedAccountInfo`](https://docs.cspr.cloud/rest-api/centralized-account-info) | Action target centralized account info if it's an account         |
| `from_centralized_account_info` | [`CentralizedAccountInfo`](https://docs.cspr.cloud/rest-api/centralized-account-info) | Action target centralized account info if it's an account         |
| `from_cspr_name`                | `string`                                                                              | Primary CSPR.name of the source account, if it is an account      |
| `to_cspr_name`                  | `string`                                                                              | Primary CSPR.name of the destination account, if it is an account |

### Relations

| Entity                                                                     | Mapping property        | Description                                                                                        |
| -------------------------------------------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------- |
| [`Contract package`](https://docs.cspr.cloud/rest-api/contract-package)    | `contract_package_hash` | Fungible tokens actions belong to a contract package                                               |
| [`Account`](https://docs.cspr.cloud/rest-api/account)                      | `from_hash, to_hash`    | Fungible token actions could have accounts as the action source and target                         |
| [`Deploy`](https://docs.cspr.cloud/rest-api/deploy)                        | `deploy_hash`           | FT actions are result of deploy execution                                                          |
| [`FTOwnership`](https://docs.cspr.cloud/rest-api/fungible-token-ownership) | `from_hash, to_hash`    | Fungible token actions affect fungible token ownership by changing token balances between accounts |

### Endpoints

The `FTTokenAction` entity has the following endpoints:

* [Get fungible token actions](https://docs.cspr.cloud/rest-api/fungible-token-action/get-token-actions)
* [Get contract package fungible token actions](https://docs.cspr.cloud/rest-api/fungible-token-action/get-contract-package-token-actions)
* [Get account fungible token actions](https://docs.cspr.cloud/rest-api/fungible-token-action/get-account-token-actions)

### Relation endpoints

The `FTTokenAction` entity has the following relation endpoints:

* [Get fungible token action types](https://docs.cspr.cloud/rest-api/fungible-token-action/get-token-action-types)
