# Account

The `Account` entity represents the account observed in the network activity. For example, when the corresponding public key was passed as a deploy argument. Because of that, an `Account` may not necessarily have a purse and on-chain balance.

## Properties

The `Account` entity has the following properties:

| Property          | Type         | Description                                                                                        |
| ----------------- | ------------ | -------------------------------------------------------------------------------------------------- |
| `public_key`      | `string(68)` | Account public key represented as a hexadecimal string. Primary account identifier                 |
| `account_hash`    | `string(64)` | 32-byte hash of the `public_key` represented as a hexadecimal string. Secondary account identifier |
| `main_purse_uref` | `string(73)` | Account main purse URef in the `uref-dead...beef-007` format                                       |
| `balance`         | `uint64`     | Account main purse balance in motes                                                                |

**Example**

```json
{
    "account_hash": "fa12d2dd5547714f8c2754d418aa8c9d59dc88780350cb4254d622e2d4ef7e69",
    "balance": 1325092768520378,
    "main_purse_uref": "uref-bb9f47c30ddbe192438fad10b7db8200247529d6592af7159d92c5f3aa7716a1-007",
    "public_key": "0106ca7c39cd272dbf21a86eeb3b36b7c26e2e9b94af64292419f7862936bca2ca"
}
```

## Optional properties

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

| Property               | Type     | Description                                                                                             |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------- |
| `auction_status`       | `string` | Account auction status: `inactive_bidder`, `active_bidder`, `active_validator`, `pending_validator`     |
| `delegated_balance`    | `uint64` | Total funds delegated across all validators                                                             |
| `staked_balance`       | `uint64` | Total funds staked as validator                                                                         |
| `undelegating_balance` | `uint64` | Total undelegated funds that will be returned to the account main purse after the 7 era lockdown period |

## Relations

The `Account` entity has the following relations with other entities:

| Entity                                                                                                                                                            | Mapping property                            | Description                                                                                                                                               |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`AccountInfo`](https://docs.cspr.cloud/1.1.x/rest-api/account-info)                                                                                              | `account_hash`                              | Account can have account info data if provided by the owner to the [Account Info contract](https://github.com/make-software/casper-account-info-contract) |
| [`Bidder`](https://docs.cspr.cloud/1.1.x/rest-api/bidder)                                                                                                         | `public_key`                                | Account can be a bidder in the auction                                                                                                                    |
| [`Contract package`](https://docs.cspr.cloud/1.1.x/rest-api/contract-package)                                                                                     | `owner_public_key`                          | Account can deploy contracts to the network                                                                                                               |
| [`Deploy`](https://docs.cspr.cloud/1.1.x/rest-api/deploy)                                                                                                         | `caller_public_key`                         | Account can call deploys on the network                                                                                                                   |
| [`Delegation`](https://docs.cspr.cloud/1.1.x/rest-api/delegation)                                                                                                 | `proposer_public_key`                       | Account can have delegations to validators                                                                                                                |
| [`Delegator reward`](https://docs.cspr.cloud/1.1.x/rest-api/delegator-reward)                                                                                     | `public_key`                                | Account can receive delegator rewards                                                                                                                     |
| [`Fungible token ownership`](https://github.com/make-software/casper-middleware/blob/documentation-1.1.x/docs/public/rest-api/fungible-token-ownership/README.md) | `owner_hash`                                | Account can own fungible tokens                                                                                                                           |
| [`Fungible token action`](https://docs.cspr.cloud/1.1.x/rest-api/fungible-token-action)                                                                           | `from_hash`, `to_hash`                      | Account can be on the sending or receiving end of a fungible token action                                                                                 |
| [`NFT`](https://github.com/make-software/casper-middleware/blob/documentation-1.1.x/docs/public/rest-api/non-fungible-token/README.md)                            | `owner_hash`                                | Account can own NFTs                                                                                                                                      |
| [`NFT action`](https://github.com/make-software/casper-middleware/blob/documentation-1.1.x/docs/public/rest-api/non-fungible-token-action/README.md)              | `from_hash`, `to_hash`                      | Account can be on the sending or receiving end of a fungible token action                                                                                 |
| [`NFT ownership`](https://github.com/make-software/casper-middleware/blob/documentation-1.1.x/docs/public/rest-api/non-fungible-token-ownership/README.md)        | `owner_hash`                                | Account can own multiple NFTs in one NFT contract                                                                                                         |
| [`Transfer`](https://docs.cspr.cloud/1.1.x/rest-api/transfer)                                                                                                     | `initiator_account_hash`, `to_account_hash` | Account can initiate transfers and be a transfer recipient                                                                                                |
| [`Validator`](https://docs.cspr.cloud/1.1.x/rest-api/validator)                                                                                                   | `public_key`                                | Account can be a validator                                                                                                                                |

## Endpoints

The `Account` entity has the following endpoints:

* [Get account](https://docs.cspr.cloud/1.1.x/rest-api/account/get-account)
* [Get accounts](https://docs.cspr.cloud/1.1.x/rest-api/account/get-accounts)

## Relation endpoints

The `Account` entity has the following relation endpoints:

* [Get account contract packages](https://docs.cspr.cloud/1.1.x/rest-api/contract-package/get-account-contract-packages)
* [Get account delegations](https://docs.cspr.cloud/1.1.x/rest-api/delegation/get-account-delegations)
* [Get account delegator rewards](https://docs.cspr.cloud/1.1.x/rest-api/delegator-reward/get-account-delegator-rewards)
* [Get account deploys](https://docs.cspr.cloud/1.1.x/rest-api/deploy/get-account-deploys)
* [Get account fungible token ownership](https://docs.cspr.cloud/1.1.x/rest-api/fungible-token-ownership/get-account-fungible-token-ownership)
* [Get account fungible token actions](https://docs.cspr.cloud/1.1.x/rest-api/fungible-token-action/get-account-token-actions)
* [Get account NFTs](https://docs.cspr.cloud/1.1.x/rest-api/non-fungible-token/get-account-tokens)
* [Get account NFT actions](https://docs.cspr.cloud/1.1.x/rest-api/non-fungible-token-action/get-account-token-actions)
* [Get account transfers](https://docs.cspr.cloud/1.1.x/rest-api/transfer/get-account-transfers)
