# Delegation

The `Delegation` entity represents a record of a delegation transaction in the context of Casper Network [Staking vs. Delegating process](https://docs.casper.network/staking/)

## Properties

The `Delegation` entity has the following properties:

| Property                       | Type         | Description                                                                                                                                                        |
| ------------------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `delegator_identifier`         | `string(64)` | A representation of the delegator identifier, which can be either: a hex-encoded public key, or a purse URef, depending on `delegator_identifier_type_id`          |
| `delegator_identifier_type_id` | `uint8`      | Identifier representing the type of the delegator identifier: `0` for PublicKey, `1` for purse URef\`                                                              |
| `public_key`                   | `string(68)` | Public key of the delegator represented as a hexadecimal string (deprecated: use `delegator_identifier` instead, this property will be removed in future versions) |
| `validator_public_key`         | `string(68)` | Public key of the validator represented as a hexadecimal string                                                                                                    |
| `stake`                        | `string`     | Delegation amount in motes. The type is string to avoid overflow in languages that don't support uint64, which is the correct type.                                |
| `bonding_purse`                | `string(72)` | URef of the purse from which the delegation was made in the `uref-dead...beef-007` format                                                                          |

**Example**

```json
{
  "bonding_purse": "uref-2bd212c2b75dbc99a6ac8ea7d543b322967f39132ad7bc2c927cfed21d3fce4a-007",
  "delegator_identifier": "018afa98ca4be12d613617f7339a2d576950a2f9a92102ca4d6508ee31b54d2c02",
  "delegator_identifier_type_id": 0,
  "public_key": "018afa98ca4be12d613617f7339a2d576950a2f9a92102ca4d6508ee31b54d2c02",
  "stake": "10118248961309619",
  "validator_public_key": "0107a9a673f54c231da8a9cf96e041701293e15c7f05dd5e7fddb2678ccb411555"
}
```

## Optional properties

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

| Property                   | Type                                                                                  | Description                                                                                             |
| -------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `account_info`             | [AccountInfo](https://docs.cspr.cloud/rest-api/account-info)                          | [Account info](https://github.com/make-software/casper-account-info-contract) provided by the delegator |
| `validator_account_info`   | [AccountInfo](https://docs.cspr.cloud/rest-api/account-info)                          | [Account info](https://github.com/make-software/casper-account-info-contract) provided by the validator |
| `centralized_account_info` | [`CentralizedAccountInfo`](https://docs.cspr.cloud/rest-api/centralized-account-info) | Account information available for known accounts provided by CSPR.cloud team                            |
| `bidder`                   | [`Bidder`](https://docs.cspr.cloud/rest-api/bidder)                                   | Bidder auction info of the validator                                                                    |
| `cspr_name`                | `string`                                                                              | Primary CSPR.name of the account                                                                        |
| `validator_cspr_name`      | `string`                                                                              | Primary CSPR.name of the validator account                                                              |

## Relations

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

| Entity                                                    | Mapping property       | Description                                                   |
| --------------------------------------------------------- | ---------------------- | ------------------------------------------------------------- |
| [`Account`](https://docs.cspr.cloud/rest-api/account)     | `public_key`           | Delegations are made by accounts                              |
| [`Validator`](https://docs.cspr.cloud/rest-api/validator) | `validator_public_key` | Delegations are made to validators                            |
| [`Bidder`](https://docs.cspr.cloud/rest-api/bidder)       | `validator_public_key` | Delegations can be made to bidders who are not validators yet |

## Endpoints

The `Delegation` entity has the following endpoints:

* [Get account delegations](https://docs.cspr.cloud/rest-api/delegation/get-account-delegations)
* [Get purse delegations](https://docs.cspr.cloud/rest-api/delegation/get-purse-uref-delegations)
* [Get validator delegations](https://docs.cspr.cloud/rest-api/delegation/get-validator-delegations)

## Relation endpoints

None
