# Models

## The ErrorMessage object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"ErrorMessage":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}
```

## The InternalServerErrorMessage object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"InternalServerErrorMessage":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}
```

## The SOLDelegatorRewardsRequest object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"SOLDelegatorRewardsRequest":{"type":"object","required":["network","rollup_type","start","end","stake_accounts"],"properties":{"network":{"type":"string","description":"The network on which validators should be created. Supported values;\r\n- mainnet\r\n- testnet\r\n- devnet","enum":["mainnet","testnet","devnet"]},"rollup_type":{"type":"integer","description":"Denotes the granularity of rewards breakdown. THe applicable values are;\n- 1 (epoch)\n- 2 (date)","enum":[1,2]},"start":{"type":"string","description":"It specifies the start epoch if the type is 1, or the start date in the \"YYYY-MM-DD\" format (UTC timezone) if the type is 2."},"end":{"type":"string","description":"It specifies the end epoch if the type is 1, or the end date in the \"YYYY-MM-DD\" format (UTC timezone) if the type is 2."},"stake_accounts":{"type":"array","description":"List of delegator stake accounts to fetch the rewards breakdown. A maximum of 50 entries are allowed.","items":{"type":"string","description":"List of delegator stake accounts to fetch the rewards breakdown. A maximum of 50 entries are allowed."}}}}}}}
```

## The DelegatorRewardsInfoResponse object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"DelegatorRewardsInfoResponse":{"type":"object","properties":{"network":{"type":"string","description":"Network specified in the request.","enum":["mainnet","testnet","devnet"]},"start":{"type":"string","description":"Start epoch or start date specified in the request."},"end":{"type":"string","description":"End epoch or end date specified in the request."},"page":{"type":"integer","description":"The current page number sent in the request.","format":"int32"},"total":{"type":"integer","description":"The total number of records resulted for the input criteria.","format":"int64"},"data":{"type":"array","description":"An array that contains stake account rewards.","items":{"$ref":"#/components/schemas/DelegatorReward"}}},"title":""},"DelegatorReward":{"type":"object","properties":{"stake_account":{"type":"string","description":"The stake_account that received the rewards."},"validator_address":{"type":"string","description":"Address of the validator that distributed the rewards (the validator the delegator is attached to)."},"total_sol":{"type":"number","format":"double","description":"Total rewards the delegator earned from inception in SOL.\n\nNote: Block rewards will not be available from delegator inception, therefore this field will not consider block rewards. Only inflation rewards and MEV rewards will be considered.\n"},"total_lamports":{"type":"integer","description":"Total rewards the delegator earned from inception in lamports.\n\nNote : Similar to “total_sol” this field will not consider block rewards\n"},"apy":{"type":"number","format":"double","description":"The Annualized Percentage Yield of the stake account. This value is calcualted considering rewards earned during the last completed epoch."},"total_accumulated_sol":{"type":"number","format":"double","description":"Total rewards the delegator has earned for the query criteria in SOL.\n\nNote : Block rewards will be considered for this field \n"},"total_accumulated_lamports":{"type":"integer","description":"Total rewards the delegator has earned for the query criteria in lamports.\n\nNote : Block rewards will be considered for this field \n"},"accumulated_rewards":{"type":"array","description":"Protocol and MEV rewards for the given delegator and query criteria.","items":{"$ref":"#/components/schemas/AccumulatedReward"}},"rewards_breakdown":{"type":"array","description":"Per-epoch (or period) rewards breakdown.","items":{"$ref":"#/components/schemas/RewardBreakdown"}}},"required":["stake_account","validator_address"]},"AccumulatedReward":{"type":"object","properties":{"accumulated_sol":{"type":"number","format":"double","description":"Accumulated rewards in SOL between the start and end specified in the request.\n\nNote : Block rewards will be considered for this field \n"},"accumulated_lamports":{"type":"integer","description":"Accumulated rewards in lamports between the start and end specified in the request.\n\nNote : Block rewards will be considered for this field \n"},"type":{"type":"string","description":"Type of rewards.","enum":["PROTOCOL","MEV","BLOCK"]}}},"RewardBreakdown":{"type":"object","description":"Rewards for a given epoch/period.","properties":{"epoch":{"type":"integer","description":"The epoch corresponding to the rewards. This is applicable only if the rollup_type is 1"},"timestamp":{"type":"string","format":"date-time","description":"If the rollup_type is 1, it should specify the timestamp corresponding to the end of the epoch."},"balance":{"type":"number","format":"double","description":"The balance of the account after rewards have been added."},"total_epoch_sol":{"type":"number","format":"double","description":"Total rewards accumulated during the period in SOL.\n\nNote : Block rewards will be considered for this field \n"},"total_epoch_lamports":{"type":"integer","description":"Total rewards accumulated during the period in lamports.\n\nNote : Block rewards will be considered for this field \n"},"rewards":{"type":"array","description":"An array that contains protocol and mev rewards corresponding to the given epoch.","items":{"$ref":"#/components/schemas/RewardItem"}}},"required":["rewards"]},"RewardItem":{"type":"object","properties":{"rewards_sol":{"type":"number","format":"double","description":"Rewards accumulated during the period in SOL.\n\nNote : Block rewards will be considered for this field \n"},"rewards_lamports":{"type":"integer","description":"Rewards accumulated during the period in lamports.\n\nNote : Block rewards will be considered for this field \n"},"type":{"type":"string","description":"Type of rewards.","enum":["PROTOCOL","MEV","BLOCK"]}}}}}}
```

## The DelegatorReward object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"DelegatorReward":{"type":"object","properties":{"stake_account":{"type":"string","description":"The stake_account that received the rewards."},"validator_address":{"type":"string","description":"Address of the validator that distributed the rewards (the validator the delegator is attached to)."},"total_sol":{"type":"number","format":"double","description":"Total rewards the delegator earned from inception in SOL.\n\nNote: Block rewards will not be available from delegator inception, therefore this field will not consider block rewards. Only inflation rewards and MEV rewards will be considered.\n"},"total_lamports":{"type":"integer","description":"Total rewards the delegator earned from inception in lamports.\n\nNote : Similar to “total_sol” this field will not consider block rewards\n"},"apy":{"type":"number","format":"double","description":"The Annualized Percentage Yield of the stake account. This value is calcualted considering rewards earned during the last completed epoch."},"total_accumulated_sol":{"type":"number","format":"double","description":"Total rewards the delegator has earned for the query criteria in SOL.\n\nNote : Block rewards will be considered for this field \n"},"total_accumulated_lamports":{"type":"integer","description":"Total rewards the delegator has earned for the query criteria in lamports.\n\nNote : Block rewards will be considered for this field \n"},"accumulated_rewards":{"type":"array","description":"Protocol and MEV rewards for the given delegator and query criteria.","items":{"$ref":"#/components/schemas/AccumulatedReward"}},"rewards_breakdown":{"type":"array","description":"Per-epoch (or period) rewards breakdown.","items":{"$ref":"#/components/schemas/RewardBreakdown"}}},"required":["stake_account","validator_address"]},"AccumulatedReward":{"type":"object","properties":{"accumulated_sol":{"type":"number","format":"double","description":"Accumulated rewards in SOL between the start and end specified in the request.\n\nNote : Block rewards will be considered for this field \n"},"accumulated_lamports":{"type":"integer","description":"Accumulated rewards in lamports between the start and end specified in the request.\n\nNote : Block rewards will be considered for this field \n"},"type":{"type":"string","description":"Type of rewards.","enum":["PROTOCOL","MEV","BLOCK"]}}},"RewardBreakdown":{"type":"object","description":"Rewards for a given epoch/period.","properties":{"epoch":{"type":"integer","description":"The epoch corresponding to the rewards. This is applicable only if the rollup_type is 1"},"timestamp":{"type":"string","format":"date-time","description":"If the rollup_type is 1, it should specify the timestamp corresponding to the end of the epoch."},"balance":{"type":"number","format":"double","description":"The balance of the account after rewards have been added."},"total_epoch_sol":{"type":"number","format":"double","description":"Total rewards accumulated during the period in SOL.\n\nNote : Block rewards will be considered for this field \n"},"total_epoch_lamports":{"type":"integer","description":"Total rewards accumulated during the period in lamports.\n\nNote : Block rewards will be considered for this field \n"},"rewards":{"type":"array","description":"An array that contains protocol and mev rewards corresponding to the given epoch.","items":{"$ref":"#/components/schemas/RewardItem"}}},"required":["rewards"]},"RewardItem":{"type":"object","properties":{"rewards_sol":{"type":"number","format":"double","description":"Rewards accumulated during the period in SOL.\n\nNote : Block rewards will be considered for this field \n"},"rewards_lamports":{"type":"integer","description":"Rewards accumulated during the period in lamports.\n\nNote : Block rewards will be considered for this field \n"},"type":{"type":"string","description":"Type of rewards.","enum":["PROTOCOL","MEV","BLOCK"]}}}}}}
```

## The AccumulatedReward object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"AccumulatedReward":{"type":"object","properties":{"accumulated_sol":{"type":"number","format":"double","description":"Accumulated rewards in SOL between the start and end specified in the request.\n\nNote : Block rewards will be considered for this field \n"},"accumulated_lamports":{"type":"integer","description":"Accumulated rewards in lamports between the start and end specified in the request.\n\nNote : Block rewards will be considered for this field \n"},"type":{"type":"string","description":"Type of rewards.","enum":["PROTOCOL","MEV","BLOCK"]}}}}}}
```

## The RewardBreakdown object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"RewardBreakdown":{"type":"object","description":"Rewards for a given epoch/period.","properties":{"epoch":{"type":"integer","description":"The epoch corresponding to the rewards. This is applicable only if the rollup_type is 1"},"timestamp":{"type":"string","format":"date-time","description":"If the rollup_type is 1, it should specify the timestamp corresponding to the end of the epoch."},"balance":{"type":"number","format":"double","description":"The balance of the account after rewards have been added."},"total_epoch_sol":{"type":"number","format":"double","description":"Total rewards accumulated during the period in SOL.\n\nNote : Block rewards will be considered for this field \n"},"total_epoch_lamports":{"type":"integer","description":"Total rewards accumulated during the period in lamports.\n\nNote : Block rewards will be considered for this field \n"},"rewards":{"type":"array","description":"An array that contains protocol and mev rewards corresponding to the given epoch.","items":{"$ref":"#/components/schemas/RewardItem"}}},"required":["rewards"]},"RewardItem":{"type":"object","properties":{"rewards_sol":{"type":"number","format":"double","description":"Rewards accumulated during the period in SOL.\n\nNote : Block rewards will be considered for this field \n"},"rewards_lamports":{"type":"integer","description":"Rewards accumulated during the period in lamports.\n\nNote : Block rewards will be considered for this field \n"},"type":{"type":"string","description":"Type of rewards.","enum":["PROTOCOL","MEV","BLOCK"]}}}}}}
```

## The RewardItem object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"RewardItem":{"type":"object","properties":{"rewards_sol":{"type":"number","format":"double","description":"Rewards accumulated during the period in SOL.\n\nNote : Block rewards will be considered for this field \n"},"rewards_lamports":{"type":"integer","description":"Rewards accumulated during the period in lamports.\n\nNote : Block rewards will be considered for this field \n"},"type":{"type":"string","description":"Type of rewards.","enum":["PROTOCOL","MEV","BLOCK"]}}}}}}
```

## The DelegatorInfoListRequest object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"DelegatorInfoListRequest":{"type":"object","required":["network"],"properties":{"network":{"type":"string","description":"The network on which the queried stake accounts have been created . Supported values;\r\n- mainnet\r\n- testnet\r\n- devnet","enum":["mainnet","testnet","devnet"]},"participant":{"type":"string","description":"The participant name registered on the staking platform from which stake accounts need to be retrieved."},"account":{"type":"string","description":"The account name registered on the staking platform from which stake accounts need to be retrieved."},"status":{"type":"array","description":"The status of the stake accounts that need to be retrieved. Results will be returned in the order of the statuses sent in the request. Supported values;\r\n- ACTIVE\r\n- INACTIVE\r\n- ACTIVATING\r\n- DEACTIVATING","items":{"type":"string","enum":["ACTIVE","INACTIVE","ACTIVATING","DEACTIVATING"]}},"stake_accounts":{"type":"array","description":"List of delegator stake accounts to fetch the delegator information. A maximum of 250 entries are allowed.","items":{"type":"string","description":"List of delegator stake accounts to fetch the delegator information. A maximum of 250 entries are allowed."}}}}}}}
```

## The DelegatorInfoListResponse object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"DelegatorInfoListResponse":{"type":"object","properties":{"network":{"type":"string","description":"Network specified in the request. Supported values;\r\n- mainnet\r\n- testnet\r\n- devnet","enum":["mainnet","testnet","devnet"]},"page":{"type":"integer","description":"The current page number sent in the request.","format":"int32"},"total":{"type":"integer","description":"Total number of stake accounts being sent in the API response","format":"int64"},"data":{"type":"object","description":"An array that contains the details about stake accounts.","properties":{"stake_account":{"type":"string","description":"\t\nThe public key of the stake account"},"status":{"type":"string","description":"Current status of the delegator"},"balance_in_sol":{"type":"number","description":"The current balance of the stake account in SOL","format":"double"},"balance_in_lamports":{"type":"number","description":"The balance in the stake account in Lamports","format":"double"},"validator_info":{"$ref":"#/components/schemas/ValidatorInfo"},"provision_info":{"$ref":"#/components/schemas/ProvisionInfo"}}}}},"ValidatorInfo":{"type":"object","description":"JSON object that represents the validator for which the given stake account is attached to.","properties":{"address":{"type":"string","description":"The public key of the validator"}}},"ProvisionInfo":{"type":"object","description":"JSON object that contains the registration details of the delegator.","properties":{"id":{"type":"string","description":"The reference number issued when successfully onboarding the stake account"},"created_at":{"type":"string","description":"Created date and time in the platform. This should be YYYY-MM-DD HH:mm:ss in UTC."}}}}}}
```

## The DelegatorInfoResponse object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"DelegatorInfoResponse":{"required":["network"],"type":"object","properties":{"network":{"type":"string","description":"The network on which validators should be created. Supported values.","enum":["mainnet","testnet","devnet"]},"stake_account":{"type":"string","description":"\t\nThe public key of the stake account"},"status":{"type":"string","description":"Current status of the delegator"},"balance_in_lamports":{"type":"number","description":"The balance in the stake account in Lamports","format":"double"},"balance_in_sol":{"type":"number","description":"The balance of the stake account in SOL","format":"double"},"validator_info":{"$ref":"#/components/schemas/ValidatorInfo"},"provision_info":{"$ref":"#/components/schemas/ProvisionInfo"}}},"ValidatorInfo":{"type":"object","description":"JSON object that represents the validator for which the given stake account is attached to.","properties":{"address":{"type":"string","description":"The public key of the validator"}}},"ProvisionInfo":{"type":"object","description":"JSON object that contains the registration details of the delegator.","properties":{"id":{"type":"string","description":"The reference number issued when successfully onboarding the stake account"},"created_at":{"type":"string","description":"Created date and time in the platform. This should be YYYY-MM-DD HH:mm:ss in UTC."}}}}}}
```

## The ProvisionInfo object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"ProvisionInfo":{"type":"object","description":"JSON object that contains the registration details of the delegator.","properties":{"id":{"type":"string","description":"The reference number issued when successfully onboarding the stake account"},"created_at":{"type":"string","description":"Created date and time in the platform. This should be YYYY-MM-DD HH:mm:ss in UTC."}}}}}}
```

## The ValidatorInfo object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"ValidatorInfo":{"type":"object","description":"JSON object that represents the validator for which the given stake account is attached to.","properties":{"address":{"type":"string","description":"The public key of the validator"}}}}}}
```

## The SolValidatorInfoResponse object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"SolValidatorInfoResponse":{"type":"object","properties":{"network":{"type":"string","description":"Network specified in the request. Supported values;\r\n- mainnet\r\n- testnet\r\n- devnet","enum":["mainnet","testnet","devnet"]},"apy":{"type":"number","description":"The Annualized Percentage Yield of the validator. This value will be calculated only using the stake accounts for the specified validator that have been onboarded onto the staking platform. The calculation will consider rewards earned across the past 4 epochs (the past week)","format":"double"},"validator_address":{"type":"string","description":"The address of the validator for which information is requested."},"validator_status":{"type":"string","description":"The current status of the validator"},"delegated_balance":{"type":"number","description":"The total balance delegated under the validator in SOL. The total “net balance” values of the delegators under the staking platform","format":"double"}}}}}}
```

## The ValidatorMonitoringRequest object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"ValidatorMonitoringRequest":{"type":"object","required":["network","validator_address","delegators"],"properties":{"network":{"type":"string","description":"Applicable network. Supported values;\r\n- mainnet\r\n- testnet\r\n- devnet","enum":["mainnet","testnet","devnet"]},"validator_address":{"type":"string","description":"The address of the validator under which the stake account is delegating SOL."},"delegators":{"type":"array","description":"A list containing the information of the delegator addresses that will be monitored on the staking platform.","items":{"$ref":"#/components/schemas/Delegators"}}}},"Delegators":{"type":"object","description":"A list containing the information of the delegator addresses that will be monitored on the staking platform.","required":["stake_accounts","participant"],"properties":{"stake_accounts":{"type":"array","description":"A list of the delegator addresses. A maximum of 250 entries are allowed. ","items":{"type":"string","description":"A list of the delegator addresses"}},"participant":{"type":"string","description":"The participant name registered on the staking platform that is associated with the client’s customer. "},"account":{"type":"string","description":"The account name registered on the staking platform that is associated with the client's customer. If not provided, requests will be assigned to a default account."}}}}}}
```

## The Delegators object

```json
{"openapi":"3.0.0","info":{"title":"Solana API Specification","version":"1.117.0"},"components":{"schemas":{"Delegators":{"type":"object","description":"A list containing the information of the delegator addresses that will be monitored on the staking platform.","required":["stake_accounts","participant"],"properties":{"stake_accounts":{"type":"array","description":"A list of the delegator addresses. A maximum of 250 entries are allowed. ","items":{"type":"string","description":"A list of the delegator addresses"}},"participant":{"type":"string","description":"The participant name registered on the staking platform that is associated with the client’s customer. "},"account":{"type":"string","description":"The account name registered on the staking platform that is associated with the client's customer. If not provided, requests will be assigned to a default account."}}}}}}
```
