# 步骤 1：获取可扩展的委托人

## 步骤 1：检查所有可延长的委托

<mark style="color:orange;">`POST`</mark> `https://api.tronsave.io/v2/get-extendable-delegates`

速率限制 (Rate limit): 每1秒1个请求。

**请求头**

<table><thead><tr><th width="135">名称 </th><th width="132">类型</th><th> 描述</th></tr></thead><tbody><tr><td>apikey<mark style="color:red;">*</mark></td><td>String</td><td>Tronsave API密钥，适用于内部账户</td></tr></tbody></table>

**请求体**

<table><thead><tr><th width="177">名称</th><th width="102">类型</th><th> 描述</th></tr></thead><tbody><tr><td>extendTo<mark style="color:red;">*</mark></td><td>String</td><td>你想要延长的时间（以毫秒为单位）</td></tr><tr><td>maxPriceAccepted</td><td>Number</td><td>你愿意支付的最大延长费用（数字）</td></tr><tr><td>receiver<mark style="color:red;">*</mark></td><td>String</td><td>接收资源委托的地址</td></tr><tr><td>requester</td><td>String</td><td>请求者的地址。如果未提供，则从 API 密钥中获取请求者。</td></tr><tr><td>resourceType</td><td>String</td><td>“ENERGY”或“BANDWIDTH”，默认： “ENERGY”</td></tr></tbody></table>

{% tabs %}
{% tab title="200: OK Success" %}

```java
{
    "extendOrderBook": [
        {
            "price": 133,
            "value": 64319
        },
        ...
    ], // 概述每个价格的扩展能源数量
    "totalDelegateAmount": 64319,
    // 收件人在Tronsave上的当前总委托
    "totalAvailableExtendAmount": 64319,
    // 收件人在Tronsave上的可用总委托
    "totalEstimateTrx": 8554427,
    // 如果使用下面的extend_data创建延长请求，估算的TRX支付
    "yourBalance": 20000000,
    // API密钥的内部余额
    "isAbleToExtend": true,
    // 比较余额和totalEstimateTrx
    "extendData": [
        {
            "delegator": "TMN2uTdy6rQYaTm4A5g732kHRf72tKsA44",
            "isExtend": true,
            "extraSmount": 0,
            "extendTo": 1728459019
        }
    ]
    // 用于创建下面延长请求的扩展数据
}

```

{% endtab %}

{% tab title="400: Bad Request Invalid params" %}

```
{
    "MISSING_PARAMS": "请求体中缺少某些参数",
    "INVALID_PARAMS": "某些参数无效"
}
```

{% endtab %}

{% tab title="401: Unauthorized Invalid api key" %}

```java
{
    "API_KEY_REQUIRED": "请求头中缺少API密钥",
    "INVALID_API_KEY": "API密钥不正确"
}
```

{% endtab %}

{% tab title="429: Too many requests Rate limit reached" %}

```java
{
    "RATE_LIMIT": "已达到速率限制"
}
```

{% endtab %}
{% endtabs %}

**示例**

{% tabs %}
{% tab title="请求体  " %}

```json
{
    "extendTo":1728704969000,
    "maxPriceAccepted":165,
    "receiver":"TFwUFWr3QV376677Z8VWXxGUAMF11111111",
    "resourceType": "ENERGY"
}
```

{% endtab %}

{% tab title="请求头" %}

```json
{
  "apikey": <YOUR_API_KEY>
}
```

{% endtab %}

{% tab title="成功响应" %}

```json
{
    "extendOrderBook": [
        {
            "price": 108,
            "value": 100000
        },
        {
            "price": 122,
            "value": 200000
        }
    ],
    "totalDelegateAmount": 500000,
    "totalAvailableExtendAmount": 300000,
    "totalEstimateTrx": 24426224,
    "isAbleToExtend": true,
    "yourBalance": 37780396,
    "extendData": [
        {
            "delegator": "TQBV7xU489Rq8ZCsYi72zBhJM2222222",
            "isExtend": true,
            "extraAmount": 0,
            "extendTo": 1728704969000
        },
        {
            "delegator": "TMN2uTdy6rQYaTm4A5g732kHR333333333",
            "isExtend": true,
            "extraAmount": 0,
            "extendTo": 1728704969000
        }
    ]
}
```

{% endtab %}
{% endtabs %}

**示例代码**

{% tabs %}
{% tab title="Javascript" %}

```javascript
const GetEstimateExtendData = async (extendTo, maxPriceAccepted) => {
    const url = TRONSAVE_API_URL + `/v2/get-extendable-delegates`
    const body = {
        extendTo, // 要扩展到的时间（秒）
        receiver: RECEIVER, // 接收资源委托的地址
        maxPriceAccepted, // 可选。要支付扩展的最大价格
        resourceType: RESOURCE_TYPE, // ENERGY 或 BANDWIDTH，可选，默认值为 ENERGY
    }
    const data = await fetch(url, {
        method: "POST",
        headers: {
            'apikey': API_KEY,
            "content-type": "application/json",
        },
        body: JSON.stringify(body)
    })
    const response = await data.json()
    /**
     * 示例响应
     * @link  
       {
            "error": false,
            "message": "成功",
            "data": {
                "extendOrderBook": [
                    {
                        "price": 784,
                        "value": 1002
                    }
                ],
                "totalDelegateAmount": 5003, // 总委托数量
                "totalAvailableExtendAmount": 5003, // 可扩展的总数量
                "totalEstimateTrx": 4085783, // 预估 TRX 总量
                "isAbleToExtend": true, // 是否可以扩展
                "yourBalance": 2377366851, // 您的余额
                "extendData": [ // 扩展数据
                    {
                        "delegator": "TGGVrYaT8Xoos...6dmSZkohGGcouYL4", // 委托者地址
                        "isExtend": true, // 是否扩展
                        "extraAmount": 0, // 额外数量
                        "extendTo": 1745833276 // 扩展至的时间戳
                    },
                    {
                        "delegator": "TQBV7xU489Rq8Z...zBhJMdrDr51wA2", // 委托者地址
                        "isExtend": true, // 是否扩展
                        "extraAmount": 0, // 额外数量
                        "extendTo": 1745833276 // 扩展至的时间戳
                    },
                    {
                        "delegator": "TSHZv6xsYHMRCbdVh...qNozxaPPjDR6", // 委托者地址
                        "isExtend": true, // 是否扩展
                        "extraAmount": 0, // 额外数量
                        "extendTo": 1745833276 // 扩展至的时间戳
                    }
                ]
            }
        }
     */
    return response
}

```

{% endtab %}

{% tab title="PHP" %}

```php
function getEstimateExtendData(int $extendTo, int $maxPriceAccepted): array {
    $url = TRONSAVE_API_URL . "/v2/get-extendable-delegates";
    $body = [
        'extendTo' => $extendTo,
        'receiver' => RECEIVER,
        'maxPriceAccepted' => $maxPriceAccepted,
        'resourceType' => RESOURCE_TYPE,
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'apikey: ' . API_KEY,
        'Content-Type: application/json'
    ]);
    $response = curl_exec($ch);
    curl_close($ch);
    return json_decode($response, true);
}
```

{% endtab %}

{% tab title="Python" %}

```python
def get_estimate_extend_data(extend_to: int, max_price_accepted: int) -> Dict[str, Any]:
    """Get estimate extend data"""
    url = f"{TRONSAVE_API_URL}/v2/get-extendable-delegates"
    headers = {
        'apikey': API_KEY,
        'Content-Type': 'application/json'
    }
    
    body = {
        'extendTo': extend_to,
        'receiver': RECEIVER,
        'maxPriceAccepted': max_price_accepted,
        'resourceType': RESOURCE_TYPE,
    }
    
    response = requests.post(url, headers=headers, json=body)
    return response.json()
```

{% endtab %}
{% endtabs %}
