# Activity Schema

## ID
- **Type**: string  
- **Required**: true  
- **Description**: Activity UUID or transaction hash.

## Network
- **Type**: string  
- **Enum**: mainnet, testnet, devnet  
- **Required**: true

## 200  
A single activity.

### Delegation, Undelegation, Withdrawal
- **Description**: Stake account delegated to a validator.

### ID  
- **Type**: uuid  
- **Description**: Activity UUID.

### Status  
- **Type**: string  
- **Enum**: pending, complete, failed  
- **Description**: Activity-life status (warmup/cooldown), not the on-chain status.

### Network
- **Type**: string  
- **Enum**: mainnet, testnet, devnet

### Protocol
- **Type**: string

### Amount  
- **Type**: number  
- **Description**: Amount in the asset major unit.

### Currency  
- **Type**: string

### Timestamp  
- **Type**: string

### Estimated Completed At  
- **Type**: string | null  
- **Description**: Estimated activity completion time, when known.

### Delegation Address  
- **Type**: string | null  
- **Description**: The wallet that originated the activity — for Solana, the stake authority (not the stake account).

### Transaction (tx)  
- **Type**: object  
- **Description**: On-chain transaction axis. Distinct from the activity-life status.

#### Hash  
- **Type**: string | null  
- **Description**: Transaction hash, when one exists.

#### Status  
- **Type**: string | null  
- **Enum**: in_progress, confirmed, failed, expired, null  
- **Description**: On-chain/transaction status, resolved via tx-tracking for SOL.

### Details  
- **Type**: object | null  
- **Description**: Type-specific details. Null for activity types that have none.

## Example Activity
```json
{
  "id": "9f7c5b8a-4e0d-4a2b-3c7e-8d1f4a6b9c0d",
  "type": "delegation",
  "status": "pending",
  "network": "mainnet",
  "protocol": "solana",
  "amount": 10,
  "currency": "SOL",
  "timestamp": "2024-03-12T08:02:17Z",
  "estimated_completed_at": null,
  "delegation_address": "StakeAuth1111111111111111111111111111111111",
  "tx": {
    "hash": "solTxAbcDef123456789",
    "status": "confirmed"
  },
  "details": null
}
```

## API Request Example
```
curl --request GET \
     --url 'https://api.figment.io/solana/activities/id?network=mainnet' \
     --header 'accept: application/json' \
     --header 'x-api-key: your-api-key-here'
```
