Overview
You can call this API to query the private link address information of a tenant for VPC internal network access.
Note
This API is not supported for Alibaba Cloud instances.
API details
Constraints
The caller must have an AccessKey for accessing the multi-cloud API. For information about how to obtain the AccessKey ID and AccessKey Secret, see Manage AccessKeys.
Request path
GET /api/v2/instances/{instanceId}/tenants/{tenantId}/privatelink
Request parameters
Path
Name |
Type |
Required |
Description |
Example value |
|---|---|---|---|---|
| instanceId | String | Yes | ID of the OceanBase cluster. | obcluster-***** |
| tenantId | String | Yes | ID of the tenant. | t4louaeei**** |
Query
Name |
Type |
Required |
Description |
Example value |
|---|---|---|---|---|
| requestId | String | Yes | Request ID used for tracing. | d04eabba**** |
| addressId | String | No | Identifier of the connection address or service address. | rs-private-internet-***** |
Response parameters
Name |
Type |
Description |
Example value |
|---|---|---|---|
| success | Boolean | Whether the operation is successful. | true |
| errorCode | String | Error code. | INVALID_PARAMETER |
| errorMessage | String | Error message. | Invalid parameter |
| data | Array | An array of business data objects. | N/A |
| cost | Number | Time consumed. | 1.0 |
| server | String | Server address, typically the IP address of an OBServer node. | 10.0.0.10 |
| requestId | String | Request ID. | d04eabba**** |
| totalCount | Number | Total records. | 100.0 |
| extra | Object | Extended information. | {} |
data[] Element fields
Name |
Type |
Description |
Example value |
|---|---|---|---|
| tenantId | String | ID of the tenant. | t4louaeei**** |
| vpcId | String | ID of the VPC. | vpc-xxxx**** |
| userVpcOwnerId | String | ID of the account to which the user VPC belongs. | 20000600**** |
| vSwitchId | String | ID of the switch. | vsw-xxxx**** |
| connectionZones | Array | Zones connected to the address. | ['cn-hangzhou-i'] |
| connectionLogicalZones | Array | List of logical zones associated with the connection address. | ['cn-hangzhou-i'] |
| connectionReplicaType | String | Replica type accessed by the connection address. | FULL |
| tenantEndpointId | String | Tenant endpoint ID for multi-cloud deployment in V5. | te-xxxxx**** |
| addressId | String | VIP service group name in a multi-cloud deployment. | rs-private-internet-***** |
| addressStatus | String | Connection status. | ONLINE |
| serviceType | String | Type of the address. | PRIVATE |
| addressType | String | Type of the address: MASTER or READONLY. | MASTER |
| networkType | String | Network type. | INTRANET |
| role | String | Connection type: read/write or read-only. For a primary address, the read/write type may also be required. For a primary address of a standby database, it is read-only. | READWRITE |
| userNameFormat | String | Username format when using this address: single-part, two-part, or three-part. | TWO_PART |
| useSSL | Boolean | Whether to enable SSL. | false |
| proxyClusterInfo | Object | ODP proxy cluster information associated with the tenant connection. | N/A |
| proxyClusterInfo.proxyClusterId | String | ID of the ODP proxy cluster. | proxy-12**** |
| proxyClusterInfo.proxyMode | String | ODP proxy mode. | DEDICATED |
| proxyClusterInfo.zone | String | Zone. | cn-hangzhou-i |
| proxyClusterInfo.unitSpec | String | Unit specification. | 2C4G |
| proxyClusterInfo.unitNum | Number | Number of units. | 1.0 |
| proxyClusterInfo.sharedUnitNumLimit | Integer | Maximum number of units for a proxy service in K8S shared mode. | 3 |
| proxyClusterInfo.exclusiveUnitNumLimit | Integer | Maximum number of units for a proxy service in K8S exclusive mode. | 3 |
| proxyClusterInfo.status | String | Current status of the task or resource. | ONLINE |
| proxyClusterInfo.proxyServiceVersion | String | Architecture version. | 4.2.1.0 |
| proxyClusterInfo.proxyVersion | String | Proxy version. | 4.2.1.0 |
| proxyClusterInfo.createTime | String | Creation time (UTC). | 2026-02-25 15:40:43+00:00 |
| proxyClusterInfo.expireTime | String | Expiration time (UTC). | 2020-12-23 04:14:48+00:00 |
| proxyClusterInfo.deployMode | String | Data replica mode (n/n-n/n-n-n). | 1-1-1 |
| proxyClusterInfo.maxUnitNum | Number | Elastic upper limit for Serverless ODP (from K8s ODPClusterSpec.maxUnitNum). | 3.0 |
| proxyClusterInfo.slaveZone | String | Zone of the standby node (added in ODP Commercial Edition, returned only in primary/standby deployments across two/three zones). | cn-hangzhou-i |
| proxyClusterInfo.nodeDistribution | String | Node distribution (added in ODP Commercial Edition, replaces deployMode). | cn-hangzhou-i:1,cn-hangzhou-j:1 |
| proxyClusterInfo.nodeCpu | Number | Node specification (added in ODP Commercial Edition, replaces unitSpec * unitNum). | 4.0 |
| proxyClusterInfo.nodeNum | Integer | Number of nodes (added in ODP Commercial Edition). | 3 |
| proxyClusterInfo.deploymentArchitecture | String | Deployment scheme (added in ODP Commercial Edition). Refer to {@link com.oceanbase.cloud.infra.common.enums.ProxyDeploymentArchitecture}. Existing ODP clusters that are not commercialized will display as SINGLE_AZ_DEPLOYMENT/DUAL_AZ_DEPLOYMENT/MULTI_AZ_DEPLOYMENT. | SINGLE_ZONE |
| proxyClusterInfo.proxyServerIds | Array | IDs of the ODP proxy nodes. | ['resour**** |
| odpVersion | String | ODP version. | 4.2.1 |
| readStrategyConfigResponse | Object | Read traffic strategy configuration for the tenant connection address. | N/A |
| readStrategyConfigResponse.odpVersion | String | ODP version. | 4.2.1 |
| readStrategyConfigResponse.trafficStrategy | String | Traffic strategy. | ZONE_FIRST |
| readStrategyConfigResponse.replicaParams | Array | Selected replica. | N/A |
| readStrategyConfigResponse.disasterRecoveryReplicaParams | Array | Disaster recovery replica. | N/A |
| readStrategyConfigResponse.balancedStrategy | String | Balancing strategy. | BALANCED |
| readStrategyConfigResponse.disasterRecoveryStrategy | String | Disaster recovery strategy. When a replica is unavailable, automatically check the primary replica. | PRIMARY_FIRST |
| addressMasterZoneId | String | Primary zone of the address. | cn-hangz**** |
| loadBalanceType | String | Load balancing type. Only required for Alibaba Cloud, distinguishing between NLB and CLB. | NLB |
| internetAddress | String | Public IP address. | 8.8.8.8 |
| internetPort | Integer | Public port. | 2881 |
| internetDomain | String | Domain name of the public IP address. | pay-core-public.oceanbase.example.com |
| internetAddressStatus | String | Status of the public IP address. | ONLINE |
| internetMaxConnectionNum | Integer | Maximum number of public connections. | 10000 |
| internetMaxConnectionNumLimit | Integer | Upper limit for the maximum number of public connections. | 20000 |
| internetRpcPort | Integer | Public RPC port. | 2882 |
| internetProxyClusterId | String | Public proxy cluster ID. | proxy-12**** |
| internetLoadBalanceType | String | Load balancing type of the public IP address. | NLB |
| intranetAddress | String | Private IP address. | 10.0.0.10 |
| intranetPort | Integer | Private port. | 2881 |
| intranetDomain | String | Domain name of the private IP address. | pay-core-private.oceanbase.example.com |
| intranetAddressStatus | String | Status of the private IP address. | ONLINE |
| maxConnectionNum | Integer | Maximum number of private connections. | 10000 |
| maxConnectionNumLimit | Integer | Upper limit for modifying the maximum number of private connections. | 20000 |
| intranetRpcPort | Integer | Private RPC port. | 2882 |
| enableRPc | Boolean | Whether to enable RPC for direct import. | true |
| disableRpcReason | String | Reason for prohibiting the enabling of RPC. | ODP proxy is not ready |
| intranetAddressMasterZoneId | String | ID of the primary zone. | cn-hangz**** |
| intranetAddressSlaveZoneId | String | ID of the standby zone. | cn-hangz**** |
| deleteSingleTunnelAddress | Boolean | Whether the primary private address on Alibaba Cloud can be deleted. | true |
| intranetProxyClusterId | String | Private proxy cluster ID. | proxy-12**** |
| forceMigratedObproxyIntranetDeleteInternet | Boolean | If the migrated primary address exists on the public network, delete it from both the private and public networks. | true |
| intranetLoadBalanceType | String | Load balancing type of the private IP address. | NLB |
| privateLinkList | Array | List of PrivateLink information. | [{'endpointId': 'ep-xxxxxx', 'status': 'CONNECTED'}] |
| intranetPeeringAddress | String | Peering address. | 10.1.0.10 |
| intranetPeeringPort | Integer | Port of the peering address. | 2881 |
| intranetPeeringDomain | String | Domain name of the peering address. | pay-core-peering.oceanbase.example.com |
| intranetPeeringAddressStatus | String | Status of the peering address. | ONLINE |
| intranetPeeringMaxConnectionNum | Integer | Maximum number of connections to the peering address. | 10000 |
| peeringDstVpcId | String | ID of the peer VPC. | vpc-peer**** |
| peeringDstCidrList | String | CIDR block of the peer. | 10.1.0.0**** |
| peeringId | String | ID of the peering connection. | pcx-xxxx**** |
| intranetPeeringProxyClusterId | String | Proxy cluster ID for the private network peering address. | proxy-12**** |
| intranetRagPort | Integer | RAG port of the private network. | 8080 |
| internetRagPort | Integer | RAG port of the public network. | 8080 |
| internetRagAddress | String | RAG address of the public network. | pay-core-rag-public.oceanbase.example.com |
| enableRagHttp | Boolean | Whether to enable the RAG HTTP port. | false |
| isVirtualServerGroup | Boolean | Virtual server group/primary/standby server group (one side migrates). | false |
| isMigrated | Integer | Whether the cluster addresses have migrated. | 0 |
| userFormatConnStatus | String | Status of a connection in single-part format. | ONLINE |
| userFormatConnUnsupportedReason | String | Reason why single-part access cannot be enabled. | 2881 |
data[].connectionLogicalZones[] Element fields
Name |
Type |
Description |
Example value |
|---|---|---|---|
| data[].connectionLogicalZones[] | String | List of logical zones associated with the connection address. | "cn-hangzhou-i" |
data[].connectionZones[] Element fields
Name |
Type |
Description |
Example value |
|---|---|---|---|
| data[].connectionZones[] | String | Zone connected to the address. | "cn-hangzhou-i" |
data[].privateLinkList[] Element fields
Name |
Type |
Description |
Example value |
|---|---|---|---|
| privateLinkStatus | String | Status of the PrivateLink. | ONLINE |
| privateLinkServiceId | String | ID of the PrivateLink service. | resource**** |
| privateLinkEndpointId | String | ID of the PrivateLink endpoint. | resource**** |
| privateLinkEndpointVpcId | String | VPC ID of the PrivateLink endpoint. | vpc-xxxx**** |
| privateLinkEndpointSubnetId | String | Subnet ID of the PrivateLink endpoint. | resource**** |
| privateLinkServiceAccount | String | Primary account of the PrivateLink service. | 3 |
| privateLinkUserAccount | String | Allowlist user account of the PrivateLink service. | 3 |
| privateLinkDomain | String | Private domain name. | pay-core.oceanbase.example.com |
| intranetAddress | String | Private IP address. | 10.0.0.10 |
| intranetDomain | String | Domain name of the private IP address. | pay-core-private.oceanbase.example.com |
| deletePrivateLink | Boolean | Whether the primary private address can be deleted (cannot be deleted if a global address is associated). | true |
Examples
Request example
curl --digest -u '<your ak:sk>' \
--request GET \
-H 'X-Ob-Project-Id: {projectId}' \
'https://api-cloud.oceanbase.com/api/v2/instances/{instanceId}/tenants/{tenantId}/privatelink?requestId={requestId}&addressId={addressId}'
Note
- A project ID uniquely identifies a project. For information about how to obtain the project ID of an instance, see Manage projects.
- Make sure that the project ID corresponding to the specified instanceId is consistent with the specified project ID.
Response example
JSON format
{
"success": true,
"errorCode": "INVALID_PARAMETER",
"errorMessage": "Invalid parameter",
"data": [
{
"tenantId": "t4louaeei****",
"vpcId": "vpc-xxxx****",
"userVpcOwnerId": "20000600****",
"vSwitchId": "vsw-xxxx****",
"connectionZones": "---\n- \"cn-hangzhou-i\"",
"connectionLogicalZones": "---\n- \"cn-hangzhou-i\"",
"connectionReplicaType": "FULL",
"tenantEndpointId": "te-xxxxx****",
"addressId": "rs-private-internet-*****",
"addressStatus": "ONLINE",
"serviceType": "PRIVATE",
"addressType": "MASTER",
"networkType": "INTRANET",
"role": "READWRITE",
"userNameFormat": "TWO_PART",
"useSSL": false,
"proxyClusterInfo": {
"proxyClusterId": "proxy-12****",
"proxyMode": "DEDICATED",
"zone": "cn-hangzhou-i",
"unitSpec": "2C4G",
"unitNum": 1.0,
"sharedUnitNumLimit": 3,
"exclusiveUnitNumLimit": 3,
"status": "ONLINE",
"proxyServiceVersion": "4.2.1.0",
"proxyVersion": "4.2.1.0",
"createTime": "2026-02-25 15:40:43+00:00",
"expireTime": "2020-12-23 04:14:48+00:00",
"deployMode": "1-1-1",
"maxUnitNum": 3.0,
"slaveZone": "cn-hangzhou-i",
"nodeDistribution": "cn-hangzhou-i:1,cn-hangzhou-j:1",
"nodeCpu": 4.0,
"nodeNum": 3,
"deploymentArchitecture": "SINGLE_ZONE",
"proxyServerIds": "---\n- \"r****"
},
"odpVersion": "4.2.1",
"readStrategyConfigResponse": {
"odpVersion": "4.2.1",
"trafficStrategy": "ZONE_FIRST",
"replicaParams": [
{
"value": "prod",
"weight": 1,
"readOnlyReplicaType": "FULL"
}
],
"disasterRecoveryReplicaParams": [
{
"value": "prod",
"weight": 1,
"readOnlyReplicaType": "FULL"
}
],
"balancedStrategy": "BALANCED",
"disasterRecoveryStrategy": "PRIMARY_FIRST"
},
"addressMasterZoneId": "cn-hangz****",
"loadBalanceType": "NLB",
"internetAddress": "xxx.xxx.x.xxx:xxx",
"internetPort": 2881,
"internetDomain": "pay-core-public.oceanbase.example.com",
"internetAddressStatus": "ONLINE",
"internetMaxConnectionNum": 10000,
"internetMaxConnectionNumLimit": 20000,
"internetRpcPort": 2882,
"internetProxyClusterId": "proxy-12****",
"internetLoadBalanceType": "NLB",
"intranetAddress": "xxx.xxx.x.xxx:xxx",
"intranetPort": 2881,
"intranetDomain": "pay-core-private.oceanbase.example.com",
"intranetAddressStatus": "ONLINE",
"maxConnectionNum": 10000,
"maxConnectionNumLimit": 20000,
"intranetRpcPort": 2882,
"enableRPc": true,
"disableRpcReason": "ODP proxy is not ready",
"intranetAddressMasterZoneId": "cn-hangz****",
"intranetAddressSlaveZoneId": "cn-hangz****",
"deleteSingleTunnelAddress": true,
"intranetProxyClusterId": "proxy-12****",
"forceMigratedObproxyIntranetDeleteInternet": true,
"intranetLoadBalanceType": "NLB",
"privateLinkList": [
{
"privateLinkStatus": "ONLINE",
"privateLinkServiceId": "resource****",
"privateLinkEndpointId": "resource****",
"privateLinkEndpointVpcId": "vpc-xxxx****",
"privateLinkEndpointSubnetId": "resource****",
"privateLinkServiceAccount": "3",
"privateLinkUserAccount": "3",
"privateLinkDomain": "pay-core.oceanbase.example.com",
"intranetAddress": "xxx.xxx.x.xxx:xxx",
"intranetDomain": "pay-core-private.oceanbase.example.com",
"deletePrivateLink": true
}
],
"intranetPeeringAddress": "xxx.xxx.x.xxx:xxx",
"intranetPeeringPort": 2881,
"intranetPeeringDomain": "pay-core-peering.oceanbase.example.com",
"intranetPeeringAddressStatus": "ONLINE",
"intranetPeeringMaxConnectionNum": 10000,
"peeringDstVpcId": "vpc-peer****",
"peeringDstCidrList": "10.1.0.0****",
"peeringId": "pcx-xxxx****",
"intranetPeeringProxyClusterId": "proxy-12****",
"intranetRagPort": 8080,
"internetRagPort": 8080,
"internetRagAddress": "pay-core-rag-public.oceanbase.example.com",
"enableRagHttp": false,
"isVirtualServerGroup": false,
"isMigrated": 0,
"userFormatConnStatus": "ONLINE",
"userFormatConnUnsupportedReason": "2881"
}
],
"cost": 1.0,
"server": "xxx.xxx.x.xxx:xxx",
"requestId": "d04eabba****",
"totalCount": 100.0,
"extra": "{}"
}
