doc-exports/docs/apig/api-ref/ListFeaturesV2.html
Chen, Junjie c94ea402f5 APIG API 20230331 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Chen, Junjie <chenjunjie@huawei.com>
Co-committed-by: Chen, Junjie <chenjunjie@huawei.com>
2023-07-13 08:57:09 +00:00

593 lines
35 KiB
HTML

<a name="ListFeaturesV2"></a><a name="ListFeaturesV2"></a>
<h1 class="topictitle1">Querying Gateway Features</h1>
<div><div class="section"><h4 class="sectiontitle">Function</h4><p>This API is used to query the features of a gateway. If a gateway does not support the features listed in the following table, contact technical support to upgrade the gateway.</p>
<p>The following table lists the supported gateway features.</p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="border" border="1" rules="all"><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="33.33333333333333%" id="mcps1.3.1.4.1.4.1.1">Feature Name</th>
<th align="left" class="cellrowborder" valign="top" width="33.33333333333333%" id="mcps1.3.1.4.1.4.1.2">Description</th>
<th align="left" class="cellrowborder" valign="top" width="33.33333333333333%" id="mcps1.3.1.4.1.4.1.3">Configurable</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">lts</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Reporting of Shubao access logs</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">gateway_responses</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Custom gateway responses</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">ratelimit</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Request throttling limit configuration</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">request_body_size</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Configuration of the maximum request body size</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">backend_timeout</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Maximum backend timeout configuration</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_token</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">app_token authentication</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_api_key</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">app_api_key authentication</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_basic</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">app_basic authentication</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_secret</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">app_secret authentication</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_jwt</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">app_jwt authentication</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">public_key</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">public_key backend signatures</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">backend_token_allow</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Allowing tenants to transparently transmit tokens to the backend</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">sign_basic</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Basic signature keys</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">multi_auth</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Two-factor authentication</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">backend_client_certificate</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Backend two-way authentication</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">ssl_ciphers</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">HTTPS cipher suites</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">route</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Custom routes</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">cors</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Plug-ins</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">real_ip_from_xff</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Using the X-Forwarded-For header to specify source IP addresses for access control and request throttling</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_route</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">IP address access</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">vpc_name_modifiable</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Load balance channel name modification</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">default_group_host_trustlist</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Access to the DEFAULT group from IP addresses that are not inbound access addresses of the current gateway</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">throttle_strategy</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Request throttling algorithm policies</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">custom_log</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Printing custom request headers, query strings, and cookies in logs</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">real_ip_header_getter</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Using a custom header to obtain source IP addresses</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">policy_cookie_param</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Using cookies in backend policy conditions</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">Yes</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_quota</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Client quotas</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">app_acl</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Request throttling policies</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">set_resp_headers</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Response header management plug-ins</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">vpc_backup</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Primary/Standby VPC channels</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">sign_aes</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">AES signature keys</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">kafka_log</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Adding, deleting, modifying, and querying Kafka log push plug-ins</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">backend_retry_count</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Backend retry configuration</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">policy_sys_param</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Using system parameters in backend policy conditions</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">breaker</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Circuit breakers</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">content_type_configurable</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Returning request parameter type (Content-Type) when querying APIs</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">rate_limit_plugin</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Request throttling plug-ins</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">breakerv2</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Circuit breakers for degrading services in case of overload</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">sm_cipher_type</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Encrypting local sensitive data with commercial cryptographic algorithms</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.1 ">rate_limit_algorithm</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.2 ">Request throttling algorithm switchover</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.3.1.4.1.4.1.3 ">No</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section"><h4 class="sectiontitle">URI</h4><p>GET /v2/{project_id}/apigw/instances/{instance_id}/features</p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Path Parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.2.3.2.5.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.2.3.2.5.1.2"><p>Mandatory</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.2.3.2.5.1.3"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="40%" id="mcps1.3.2.3.2.5.1.4"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.3.2.5.1.1 "><p>project_id</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.3.2.5.1.2 "><p>Yes</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.3.2.5.1.3 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.2.3.2.5.1.4 "><p>Project ID. For details about how to obtain a project ID, see "Appendix" &gt; "Obtaining a Project ID" in this document.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.3.2.5.1.1 "><p>instance_id</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.3.2.5.1.2 "><p>Yes</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.3.2.5.1.3 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.2.3.2.5.1.4 "><p>Gateway ID, which can be obtained from the gateway information on the APIG console.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="border" border="1" rules="all"><caption><b>Table 2 </b>Query Parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.2.4.2.5.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.2.4.2.5.1.2"><p>Mandatory</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.2.4.2.5.1.3"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="40%" id="mcps1.3.2.4.2.5.1.4"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.4.2.5.1.1 "><p>offset</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.4.2.5.1.2 "><p>No</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.4.2.5.1.3 "><p>Long</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.2.4.2.5.1.4 "><p>Offset from which the query starts. If the value is less than 0, it is automatically converted to 0.</p>
<p>Default: <strong>0</strong></p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.4.2.5.1.1 "><p>limit</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.4.2.5.1.2 "><p>No</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.2.4.2.5.1.3 "><p>Integer</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.2.4.2.5.1.4 "><p>Number of items displayed on each page. A value less than or equal to 0 will be automatically converted to 20, and a value greater than 500 will be automatically converted to 500.</p>
<p>Minimum: <strong>1</strong></p>
<p>Maximum: <strong>500</strong></p>
<p>Default: <strong>20</strong></p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section"><h4 class="sectiontitle">Request Parameters</h4>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__HeaderParameter" frame="border" border="1" rules="all"><caption><b>Table 3 </b>Request header parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.3.2.2.5.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.3.2.2.5.1.2"><p>Mandatory</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.3.2.2.5.1.3"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="40%" id="mcps1.3.3.2.2.5.1.4"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.3.2.2.5.1.1 "><p>X-Auth-Token</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.3.2.2.5.1.2 "><p>Yes</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.3.2.2.5.1.3 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.3.2.2.5.1.4 "><p>User token. It can be obtained by calling the IAM API used to obtain a user token. The value of X-Subject-Token in the response header is a token.</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section"><h4 class="sectiontitle">Response Parameters</h4><p><strong>Status code: 200</strong></p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__response_FeatureInfoPage" frame="border" border="1" rules="all"><caption><b>Table 4 </b>Response body parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.3.2.4.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.3.2.4.1.2"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="60%" id="mcps1.3.4.3.2.4.1.3"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.3.2.4.1.1 "><p>size</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.3.2.4.1.2 "><p>Integer</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.3.2.4.1.3 "><p>Length of the returned resource list.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.3.2.4.1.1 "><p>total</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.3.2.4.1.2 "><p>Long</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.3.2.4.1.3 "><p>Number of resources that match the query conditions.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.3.2.4.1.1 "><p>features</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.3.2.4.1.2 "><p>Array of <a href="#ListFeaturesV2__response_FeatureInfo">FeatureInfo</a> objects</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.3.2.4.1.3 "><p>Feature list.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tablenoborder"><a name="ListFeaturesV2__response_FeatureInfo"></a><a name="response_FeatureInfo"></a><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__response_FeatureInfo" frame="border" border="1" rules="all"><caption><b>Table 5 </b>FeatureInfo</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.4.2.4.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.4.2.4.1.2"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="60%" id="mcps1.3.4.4.2.4.1.3"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.1 "><p>id</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.4.2.4.1.3 "><p>Feature ID.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.1 "><p>name</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.4.2.4.1.3 "><p>Feature name.</p>
<p>Minimum: <strong>1</strong></p>
<p>Maximum: <strong>64</strong></p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.1 "><p>enable</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.2 "><p>Boolean</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.4.2.4.1.3 "><p>Indicates whether to enable the feature.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.1 "><p>config</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.4.2.4.1.3 "><p>Parameter configuration.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.1 "><p>instance_id</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.4.2.4.1.3 "><p>Gateway ID.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.1 "><p>update_time</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.4.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.4.2.4.1.3 "><p>Feature update time.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Status code: 400</strong></p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__response_ErrorMsg" frame="border" border="1" rules="all"><caption><b>Table 6 </b>Response body parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.6.2.4.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.6.2.4.1.2"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="60%" id="mcps1.3.4.6.2.4.1.3"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.6.2.4.1.1 "><p>error_code</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.6.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.6.2.4.1.3 "><p>Error code.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.6.2.4.1.1 "><p>error_msg</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.6.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.6.2.4.1.3 "><p>Error message.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Status code: 401</strong></p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__response_ErrorMsg_1" frame="border" border="1" rules="all"><caption><b>Table 7 </b>Response body parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.8.2.4.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.8.2.4.1.2"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="60%" id="mcps1.3.4.8.2.4.1.3"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.8.2.4.1.1 "><p>error_code</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.8.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.8.2.4.1.3 "><p>Error code.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.8.2.4.1.1 "><p>error_msg</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.8.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.8.2.4.1.3 "><p>Error message.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Status code: 403</strong></p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__response_ErrorMsg_2" frame="border" border="1" rules="all"><caption><b>Table 8 </b>Response body parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.10.2.4.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.10.2.4.1.2"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="60%" id="mcps1.3.4.10.2.4.1.3"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.10.2.4.1.1 "><p>error_code</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.10.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.10.2.4.1.3 "><p>Error code.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.10.2.4.1.1 "><p>error_msg</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.10.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.10.2.4.1.3 "><p>Error message.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Status code: 404</strong></p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__response_ErrorMsg_3" frame="border" border="1" rules="all"><caption><b>Table 9 </b>Response body parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.12.2.4.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.12.2.4.1.2"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="60%" id="mcps1.3.4.12.2.4.1.3"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.12.2.4.1.1 "><p>error_code</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.12.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.12.2.4.1.3 "><p>Error code.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.12.2.4.1.1 "><p>error_msg</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.12.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.12.2.4.1.3 "><p>Error message.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Status code: 500</strong></p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__response_ErrorMsg_4" frame="border" border="1" rules="all"><caption><b>Table 10 </b>Response body parameters</caption><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.14.2.4.1.1"><p>Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.14.2.4.1.2"><p>Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="60%" id="mcps1.3.4.14.2.4.1.3"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.14.2.4.1.1 "><p>error_code</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.14.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.14.2.4.1.3 "><p>Error code.</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.14.2.4.1.1 "><p>error_msg</p>
</td>
<td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.14.2.4.1.2 "><p>String</p>
</td>
<td class="cellrowborder" valign="top" width="60%" headers="mcps1.3.4.14.2.4.1.3 "><p>Error message.</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section"><h4 class="sectiontitle">Example Requests</h4><p>None</p>
</div>
<div class="section"><h4 class="sectiontitle">Example Responses</h4><p><strong>Status code: 200</strong></p>
<p>OK</p>
<pre class="screen">{
"total" : 1,
"size" : 1,
"features" : [ {
"config" : "on",
"enable" : true,
"id" : "db9a9260cd3e4a16a9b5747a65d3ffaa",
"instance_id" : "eddc4d25480b4cd6b512f270a1b8b341",
"name" : "app_api_key",
"update_time" : "2020-08-24T01:17:31.041984Z"
} ]
}</pre>
<p><strong>Status code: 400</strong></p>
<p>Bad Request</p>
<pre class="screen">{
"error_code" : "APIG.2012",
"error_msg" : "Invalid parameter value,parameterName:instance_id. Please refer to the support documentation"
}</pre>
<p><strong>Status code: 401</strong></p>
<p>Unauthorized</p>
<pre class="screen">{
"error_code" : "APIG.1002",
"error_msg" : "Incorrect token or token resolution failed"
}</pre>
<p><strong>Status code: 403</strong></p>
<p>Forbidden</p>
<pre class="screen">{
"error_code" : "APIG.1005",
"error_msg" : "No permissions to request this method"
}</pre>
<p><strong>Status code: 404</strong></p>
<p>Not Found</p>
<pre class="screen">{
"error_code" : "APIG.3030",
"error_msg" : "The instance does not exist;id:eddc4d25480b4cd6b512f270a1b8b341"
}</pre>
<p><strong>Status code: 500</strong></p>
<p>Internal Server Error</p>
<pre class="screen">{
"error_code" : "APIG.9999",
"error_msg" : "System error"
}</pre>
</div>
<div class="section"><h4 class="sectiontitle">Status Codes</h4>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="ListFeaturesV2__status_code" frame="border" border="1" rules="all"><thead align="left"><tr><th align="left" class="cellrowborder" valign="top" width="15%" id="mcps1.3.7.2.1.3.1.1"><p>Status Code</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="85%" id="mcps1.3.7.2.1.3.1.2"><p>Description</p>
</th>
</tr>
</thead>
<tbody><tr><td class="cellrowborder" valign="top" width="15%" headers="mcps1.3.7.2.1.3.1.1 "><p>200</p>
</td>
<td class="cellrowborder" valign="top" width="85%" headers="mcps1.3.7.2.1.3.1.2 "><p>OK</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="15%" headers="mcps1.3.7.2.1.3.1.1 "><p>400</p>
</td>
<td class="cellrowborder" valign="top" width="85%" headers="mcps1.3.7.2.1.3.1.2 "><p>Bad Request</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="15%" headers="mcps1.3.7.2.1.3.1.1 "><p>401</p>
</td>
<td class="cellrowborder" valign="top" width="85%" headers="mcps1.3.7.2.1.3.1.2 "><p>Unauthorized</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="15%" headers="mcps1.3.7.2.1.3.1.1 "><p>403</p>
</td>
<td class="cellrowborder" valign="top" width="85%" headers="mcps1.3.7.2.1.3.1.2 "><p>Forbidden</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="15%" headers="mcps1.3.7.2.1.3.1.1 "><p>404</p>
</td>
<td class="cellrowborder" valign="top" width="85%" headers="mcps1.3.7.2.1.3.1.2 "><p>Not Found</p>
</td>
</tr>
<tr><td class="cellrowborder" valign="top" width="15%" headers="mcps1.3.7.2.1.3.1.1 "><p>500</p>
</td>
<td class="cellrowborder" valign="top" width="85%" headers="mcps1.3.7.2.1.3.1.2 "><p>Internal Server Error</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section"><h4 class="sectiontitle">Error Codes</h4><p>See <a href="ErrorCode.html">Error Codes</a>.</p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="topic_300000021.html">Gateway Feature Management</a></div>
</div>
</div>